一年之前投稿的azure云服務(wù)使用經(jīng)驗(yàn),記錄一下
我從2014年開始一直跟蹤Azure云服務(wù),之前擁有五年以上的.NET平臺(tái)應(yīng)用開發(fā)經(jīng)驗(yàn),從winform到webform,mvc框架到WebApi,主要從事物聯(lián)網(wǎng)應(yīng)用的前后端開發(fā)工作。跟著微軟整個(gè)生態(tài)體系在進(jìn)行跨平臺(tái)改革,。.NET平臺(tái)整體跨平臺(tái)后我就不再追技術(shù)方面的改革,轉(zhuǎn)戰(zhàn)涉及l(fā)inux平臺(tái)下的軟件開發(fā),豐富的LAMP,LNMP架構(gòu)經(jīng)驗(yàn)。
幾年前我在一家智能硬件公司參與過一項(xiàng)可穿戴健康云的技術(shù)架構(gòu)開發(fā)工作,涉及到幾個(gè)關(guān)鍵詞和使用場景。云平臺(tái)從阿里云遷移到azure,.NET后端程序的跨平臺(tái)部署,數(shù)據(jù)庫使用azure數(shù)據(jù)庫服務(wù),開源框架servicestack深度使用。
云服務(wù)整體遷移到Azure主要考慮到平臺(tái)自定義創(chuàng)建虛擬機(jī),靈活的創(chuàng)建各項(xiàng)服務(wù)機(jī)制,以及從應(yīng)用程序到數(shù)據(jù)分析以及大數(shù)據(jù)分析處理的生態(tài)組件體系。我們按需搭建了生產(chǎn),測試,灰度三套環(huán)境。生產(chǎn)負(fù)載均衡直接使用的azure的服務(wù)。
.NET后端程序的跨平臺(tái)部署主要進(jìn)行了以下幾個(gè)方面的改造.
1公司軟件服務(wù)全部搭建在Linux
centos操作系統(tǒng)下。.NET程序包括網(wǎng)站和應(yīng)用API一律由Jexus
web服務(wù)器替換,API供公司網(wǎng)站和APP使用。Jexus服務(wù)器依賴于mono環(huán)境。
2數(shù)據(jù)庫服務(wù)一律替換為云數(shù)據(jù)庫,采用Azure的Mysql服務(wù),權(quán)限控制,備份,維護(hù)全部交由Azure平臺(tái)。
3后端服務(wù)按照功能模塊化和服務(wù)組件化的思路拆分為多個(gè)二級(jí)域名服務(wù),API框架采用ServiceStack開源軟件,深度使用其ORM,Redis,MySQl連接庫,序列化組件。另外后端服務(wù)的緩存和隊(duì)列也采用redis實(shí)現(xiàn),放棄使用.NET本身的緩存機(jī)制。
我在使用Azure云服務(wù)的過程中發(fā)現(xiàn)幾個(gè)特點(diǎn),個(gè)人感覺不利于Azure云服務(wù)的傳播。
1使用人群
從平臺(tái)接入門檻和使用難度來說,主要受眾以.NET平臺(tái)開發(fā)者為主,以致力于改變,有多年平臺(tái)開發(fā)經(jīng)驗(yàn),有危機(jī)感的一部分平臺(tái)開發(fā)者。
2平臺(tái)差異性和依賴
通過我的使用觀察來看,平臺(tái)本身還有很強(qiáng)的語言平臺(tái)屬性,具體表現(xiàn)在多個(gè)功能組件強(qiáng)調(diào)開發(fā)者接入和維護(hù)時(shí)需要借助于PowerShell.
.NET開發(fā)人員很少知道PowerShell是什么,有何用,更不用談PHP等Linux平臺(tái)的開發(fā)者了。其實(shí)我并不喜歡PowerShell這個(gè)工具,之前也是被迫使用。
以MongoDb的使用介紹為例,Azure是這么介紹的
快速搭建MongoDB集群使用Azure
PowerShell和Azure
CLI在Azure虛擬機(jī)上快速搭建單節(jié)點(diǎn)MongoDB(
測試使用 )和包含主從復(fù)制以及分片集群的多節(jié)點(diǎn)MongoDB(
生產(chǎn)環(huán)境使用 )。
這樣的介紹依賴于windows機(jī)器,對(duì)開發(fā)者有接入環(huán)境門檻,而不是直接的界面分配與虛擬機(jī)Linux環(huán)境操作兩部分直接完成,自認(rèn)為會(huì)被部分人直接pass。
3在使用azure虛擬機(jī)時(shí),一定要確定分配的IP是否是固定IP,在哪種情況下可變,azure虛擬機(jī)有多個(gè)IP屬性,一不小心,在重啟或者其他相關(guān)操作下就會(huì)改變IP。我的方法是使用PowerShell命令固定一遍IP再使用。
基于.NET平臺(tái)開發(fā),如果要嘗試跨平臺(tái),更多的需要技術(shù)決策者的支持。
以web部署為例,mono
Jexus不是主流的web服務(wù)服務(wù)器選型,但是絕對(duì)經(jīng)得起生產(chǎn)環(huán)境驗(yàn)證。作為.net背景的開發(fā)人員,不局限在原有的windows思維里,就可以為程序設(shè)計(jì)和業(yè)務(wù)實(shí)現(xiàn)贏得更多的擴(kuò)展性,而Azure云服務(wù)正是我們可以充分利用的平臺(tái)!期待Azure的服務(wù)更加好用,在開源的支持方面更加全面。
如今的.net平臺(tái)開發(fā)環(huán)境可以說發(fā)生了翻天覆地的變化,.net core整體重新定義了.net平臺(tái)的開發(fā)能力,擁抱變化或許也是微軟正在遵從的發(fā)展理念