\
看新聞很累?看技術新聞更累?試試下載下傳InfoQ手機用戶端,每天上下班路上聽新聞,有趣還有料!
\
\\
雲計算通常包括IaaS, SaaS和PaaS三個層面,相較于已成氣候的IaaS和SaaS,最近幾年雲計算領域的集中發力點在PaaS層面。微軟作為全球老牌IT巨頭,也是PaaS供應商的上司者。微軟的PaaS之路是怎麼一步步發展起來的?對此我們專訪了微軟Azure資深架構師Steven,來了解微軟Azure PaaS的發展之路。
\\
微軟早期PaaS服務
\\
Azure是微軟基于雲計算的作業系統,自2008年開始發展,2010年正式推出,主要目标是為開發者提供一個平台,幫助開發可運作在雲伺服器、資料中心、Web和PC上的應用程式,使雲計算的開發者能使用微軟全球資料中心的儲存、計算能力和網絡基礎服務。
\\
Azure平台上現已包括30餘種服務,早期的PaaS服務包括:
\\
-
\\t
Azure Cloud Service:提供了抽象化的運算資源給雲端應用程式使用,開發人員可以部署雲端應用程式到Azure Cloud Service,以擷取所需的執行環境與運算能力;
\\t\\t
-
\\t
Azure Service Fabric:2016年正式GA釋出,是基于微軟資源管理架構與基礎建設發展出的新型服務,提供标準的作業系統映像,開發人員可使用 Azure Service Fabric SDK開發微服務應用程式,可視為下一代的 Azure Cloud Service。
\\t\
随着容器技術的快速發展,微軟也提供了重要的容器服務。
\\
ACS:微軟雲端容器服務
\\
2016年,微軟推出了Azure Container Service (ACS)。ACS是一個容器托管環境,可用于容器的部署和管理,支援Docker Swarm, kubernetes, DC/OS等多種容器編排工具。雖然有了ACS全托管服務,但有些進階使用者可能還希望做一些深度定制化的操作,獲得完全的容器叢集控制以保證足夠的靈活性(比如自定義master上的元件服務等)。這時使用者可以使用開源的acs-engine來建立和管理自己的叢集。acs-engine是 ACS 的核心部分,提供了部署和管理 Kubernetes,DC/OS 和Docker Swarm叢集的指令行工具。它通過将容器叢集描述檔案轉化為一組ARM(Azure Resource Manager)模闆來建立容器叢集。
\\
Steven介紹道,如果使用者想要深度定制化自己的叢集,比如加上虛拟網絡的支援或一些進階元件,參數調整等等,就可以使用微軟提供的acs-engine建立和管理自己的ARM部署模版,添加需要的腳本,參數,元件等定制化配置,然後使用微軟提供的指令行工具實作自動化的部署。
\\

\\
微軟與Kubernetes
\\
2015年CNCF基金會成立,微軟加入其中成為其鉑金會員,開始參與其中的項目向Kubernetes貢獻代碼。微軟在CNCF裡的貢獻包括:
\\
-
\\t
Draft,Azure團隊的第一款開源容器管理工具,工具簡化了所有在Kubernetes叢集上運作的應用程式的開發工作,使使用者能快速地進行容器化。
\\t\\t
-
\\t
Helm, 目前是Kubernetes服務編排領域的唯一開源子項目,做為Kubernetes應用的一個包管理工具,通過軟體打包的形式,支援釋出的版本管理和控制,很大程度上簡化了Kubernetes應用部署和管理的複雜性。
\\t\\t
-
\\t
除此之外還有OMS (Operations Management Suite)等監控項目。OMS是不開源的,可以用于監控Kubernetes, 進行日志分析管理。
\\t\
除了技術貢獻,微軟也對Kubernetes技術進行了人才投入,請了很多業界大牛來負責微軟整個平台的容器産品,包括原Deis公司的創始人兼CTO Gabe Monroy,以及谷歌的前首席架構師Brendan Burns。Gabe Monroy是Docker和Kubernetes的早期貢獻者,在容器技術方面有着豐富的經驗;而Brendan Burns則是Kubernetes的首席工程師,Kubernetes容器編排的主要創始人之一。
\\
AKS:主打Kubernetes的容器服務
\\
2017年是Kubernetes快速發展的一年,Kubernetes作為開源容器編排标準正在日益崛起。微軟也看到,每年基于Azure的部署Kubernetes的需求量差不多以300%的速度在增長,是以就在Kubernetes的基礎上新出了一個獨立于ACS的服務,在2017年初推出了Azure Kubernetes Service (AKS)。
\\
AKS是一個托管的Kubernetes服務 (目前還在預覽階段),可進行健康監控和維護,支援自動更新和自動故障修複。AKS消除了使用者管理和維護Kubernetes叢集的負擔,使用AKS時叢集管理本身是免費的,Azure隻收取容器底層的虛拟機費用。
\\
另外,微軟把AKS容器服務和自己的容器系統資料庫服務(Azure Container Registry,私有容器鏡像倉庫,類似于Docker Hub),還有其他的PaaS服務做了無縫整合,使用者可以把自己建構的容器放在容器系統資料庫裡面,然後來做灰階測試和CI/CD,做完之後通過指令行直接釋出到生産環境。
\\
Steven說AKS使用起來非常簡單。比如在Mac上,AKS提供Azure Command Line的工具,隻需三五行的指令就可以快速部署一個Kubernetes叢集,并且在本機上進行管理。建立、伸縮、更新叢集都可以在本機上進行,非常符合開發者的使用習慣。
\\
\\
Steven介紹到,不管是ACS還是AKS,微軟在Azure平台上提供基于開源産品服務的一個最基本原則就是要保證這些服務和開源産品100%相容。這也就意味着使用者不需要重新學就可以把原來使用的工具,方法直接應用到微軟提供的容器服務上面,微軟隻不過是把一些瑣碎的工作做了自動化,在内部做了一些安全還有性能的優化,加強了整個容器平台。
\\
随着技術的不斷演進,Serverless(無伺服器)架構現在被越來越多的提及。Serverless與PaaS的概念在某些方面有很多相似的地方,但這兩者之間有一些微妙的差别:PaaS托管的是整個應用,而Serverless關注應用的某個碎片化的邏輯代碼,從資源使用率和成本控制來說更具優勢。針對Serverless,微軟Azure又推出了Azure Functions。
\\
Azure Functions:微軟Serverless平台
\\
2016年底,微軟正式釋出了Azure Functions。Azure Functions為開發人員提供了一個事件驅動的無伺服器計算平台,可以實作按需縮放,允許開發人員在不用接觸與管理伺服器的情況下,編寫小型的處理程式以處理雲端上的訊息或事件。
\\
與傳統的PaaS相比,使用Azure Functions無需關心運作時版本的問題。因為Serverless做釋出的時候可以做定義或處理,能在非常短的時間内釋出到雲端,之後的事情都由背景程序來幫助做處理。
\\
此外,serverless本身傾向于把服務封裝成無狀态的,其運作方式是按需運作,僅在設定的事件觸發器上有事件産生時才運作,運作也是受排程平台的控制。
\\
Azure Functions現在已經和微軟的一些容器服務還有物聯網的邊緣計算相結合了。未來Azure Functions會應用在包括實時響應在内的更廣泛的服務進行中,也将支援更多的開發語言。現在Azure Functions能支援Java,C#,Node.js,以後Python,Ruby等語言可能也會得到支援。
\\
\\
Azure PaaS服務的未來
\\
基于Kubernetes的PaaS在Azure内部受到高度重視,有社群大牛的掌舵,我們相信Azure将打造一流的PaaS服務。在對未來的看法上,Steven認為,容器化将是未來的主流,而微軟的Azure将在PaaS的配套服務上投入更多精力。
\\
Steven說,你看過去幾十年基礎架構的演變,從大型機到小型機,到X86架構,然後是虛拟化,容器化到Serverless計算,成本越來越低,部署速度越來越快,scalability也越來越強。現在很多大型企業的應用,包括Azure自身的一些服務,都已經轉向了容器化,也就是Docker+Kubernetes組合,這是未來的一個大趨勢,會用得越來越廣泛。
\\
“現在可能70%的應用還在VM上面,已經有約30%慢慢轉向了容器化的方式在容器裡面運作。随着時間的推移,慢慢這個資料可能會變成70%以上都是容器化的Docker+Kubernetes的方式,30%是在VM裡面。”Steven說道。雖然現在也有實體機,但是現在VM已經變成了主流;在未來,VM也會使用,但是容器化将是主流。
\\
在轉向容器化的過程中,Kubernetes作為容器編排事實标準,未來在它之上做的更多的事情就是把現在它所涉及到的存儲,網絡,服務的互動,發現,架構等各個方面做到高效的統一,減少不同版本不同語言之間的異構化差異,讓部署變得更容易。有了一整套規範之後,就可以開發更規範的插件,大家就能更容易地切入到這個方向上來。例如微軟自己也為Azure上的容器服務開發了針對Kubernetes和Docker Swarm的網絡插件,讓使用者在使用Azure容器服務時可以利用到Azure SDN功能簡化容器網絡管理。
\\
當所有的規範都形成後,開發人員上手的難度降下來,就會如Steven上面所說,70%以上的應用都會容器化。
\\
在未來,微軟會一直和開源産品保持一緻,跟開源社群保持緊密合作,在Azure上面為這種趨勢提供最好的技術架構平台。現在微軟大部分的服務都已經轉向了微服務的架構。微軟選擇Kubernetes作為長期的容器平台發展方式,建構了很多周邊的項目,比如ACR,Draft,Helm,FaaS,在AKS上提供這樣的服務給使用者使用,這樣使用者就不用擔心被鎖定,也不用擔心靈活性和開放性。
\\
嘉賓簡介
\\
連冠華(Steven Lian),現任微軟Azure資深架構師,主要負責為制造業、汽車、金融及網際網路等行業大客戶提供大規模雲應用、分布式計算、車聯網、開源DevOps、人工智能及大資料等架構設計和咨詢服務。
\\
作為國内最早的 Azure 架構師之一,連冠華擁有超過15年開源技術棧Linux/Java/Python研發經驗,以及多年的雲計算咨詢、開發和實施經驗。
\\
連冠華在加入微軟之前曾先後任職于惠普及VMware等公司,并擔任研發部門經理、雲架構師等職位。