PaaS服務之路漫談(一)
此文已由作者堯飄海授權網易雲社區發布。
歡迎訪問網易雲社區,了解更多網易技術產品運營經驗。
PaaS服務之路漫談(一)
1983年,SUN公司提出的網絡即計算的理念;2006年亞馬遜(Amazon)推出彈性計算雲(Elastic Compute Cloud;EC2)服務,雲計算可以認為包括以下幾個層次的服務:基礎設施即服務(IaaS),平臺即服務(PaaS)和軟件即服務(SaaS)。
公司目前也在雲計算等各層次裏進行了較長的時間的投入和研發並應用在公司內外的各產品中,雲計算相關的技術也得到了較好的論證。本文主要對PaaS進行相關的探討。
PaaS(Platform-as-a-Service:平臺即服務),較早期把服務器平臺作為一種服務提供的商業模式,隨著雲計算時代的發展和成熟逐漸把部署環境、測試環境、甚至開發環境也當著一種服務來進行提供,並最終以SaaS的模式提交給用戶。
PaaS也可以看成是SaaS模式的一種應用。SaaS的概念的提出非常早,根據相關文獻和參考,理論上出現的時間在1998年或更早些,最早出現在歐美等發達國家。但最初的思想和現在發展的結果有相當大的不同,不再是單純應用的服務提供了。
PaaS服務類似於IaaS也可以分為公有雲PaaS平臺和企業級PaaS平臺。最早從事公有雲的PaaS平臺,如Google App Engine和Amazon Beanstalk,但是這二種類型的應用到國內都發展不是很好,特別是在國內GAE被墻,更是使用得其在國內基本上屬於曇花一現,從後來Google的IaaS的轉變路線也可以大概看到其發展也不是很好,很多只是當做試驗的玩具而已,一方面是由於安全問題采用的沙箱機制使得開發人員施展能力受到相當大的限制,另一方面整個生態圈沒有成熟,導致其他的雲基礎服務跟隨不上,比如自動化的路由,負載均衡等技術。
在2007年左右,大規模的互聯網的應用的快速成長和虛擬化技術的發展,PaaS服務加快了SaaS的發展,眾多國內外廠商推出了自己的PaaS服務平臺,國外包括 AMAZON, Google, SALEFORCES, CF等十大服務商,國內也最早的也包括SAE,BAE到後面的阿裏雲等。
PaaS服務開始的時間到今年也有8年左右的時間了,中國的抗日戰爭打了八年也結束了,盡管在國外有不少看似蠻紅火的服務商,但是從國內從實際使用效果和真正推廣的應用的情況來看,發展的不是特別理想,沒有達到之前概念的預期發展。究竟其原因可能是多方面的,有技術方面的限制,也有產品化或開發人員對新概念接收度等非技術的原因。
近二年來,國內外又出新一批的PaaS服務創業公司,主要人員大部分是從第一批做PaaS服務平臺的人員出來的創業的,比如DOTCLOUD,DEIS,國內的NICESCALE等公司,這些公司能不能很好的發展,現在還不好說,至少從目前的發展趨勢來看,進入的門檻越來截低了,這些或許是得益於容器和虛擬化技術的發展。
我們公司目前也在致力這方面的探索和建設,從各服務的創業公司如春筍般新起和發展,大部分還是聚集在小型應用的基礎上,對於中大型的應用,包括在一些大公司也只是剛剛開始著手構建,終究原因從技術方面來看大概有以下幾種原因:
容器技術確定能帶來些好處,但是這種好處對於相對成熟穩定保守的公司來說還不足以能夠撼動其短處,使其能快速轉頭換向全力投入其懷抱。
技術儲備,或者說跟風也好,追潮流也行,特別是小公司,由於成本較低,因此先試試水,看看是不是真的有紅利或者做點什麽,至少也得追上技術的發展趨勢。
實際的痛處,就是那些真正接受過鳳凰涅盤,想浴火重生的人,比如開發人員,測試人員和運維人員,在經過版本不一致,庫依賴不同,環境不一致等帶來的低效或依賴的人,希望能把精力放在解決各自專業的問題。
分久必合,合久必分:業務從小規模的起步到後來的大規模發展,應用的開發,測試和部署越來越復雜,依賴的服務越來越發多,最後變成相互抱怨,因此架構的演變也會隨著這個趨勢來發展。
OS
整個計算的行業的發展也經過不同的發展,從最早有代表性的人月神話的作者所帶領的IBM的大型系統的開發到單機系統,再到虛擬機及容器技術成熟,無一不是從之前的一個很大的一塊細分成小小的一塊。
CGI
WEB技術的應用發展也有精力的相似,在Web應用程序開發的早期,大部分應用程序通常使用Common Gateway Interface(CGI)建立,包括前幾年的QQ裏面的很多系統還是采用C類語言實現的CGI-BIN來完成,每個請求采用一個進程來處理,當時的Apache服務也是整個最流行的網絡服務器之一。
ASP和JSP
CGI技術帶來的維護和性能的問題後來變得越來越嚴重,所有的代碼都是混在一起的,甚至HTML的輸出也是在業務代碼裏面嵌入的,業務上的擴展變成十分艱難。因此,WEB程序開發中的下一個階段中衍生了“server pages”技術,比如ASP和JSP等語言,它們很好的實現應用程序邏輯代碼與視圖代碼被很好的分離,加上設計模式得以快速演變,各層分工的越來越明細,職責也越來越明確。
MVC
因此在較短的時間內發展成了Model-View-Controller(MVC)的開發模式,包括現在大部分的中小型應用還是按采這樣模式來開發,Controller層主要負責各業務的路由,調用相關的實現方法,通過MODEL的業務數據作為輸入,最後產出View的輸出,用來顯示相關的視圖,在這種模式下,業務數據、應用程序、視圖邏輯被很好的分離。
SOA
目前在大部分應用中還會把Controller再進一步的細分成服務層或數據操作層。各服務之間的調用可以通過RPC或REST的風格進行調用,實現類似的SOA的服務架構,各服務層只需要通過相關的接口,相互間是松散和解耦,即實現了數據依賴與交互,又消除了代碼庫共享的依賴性。
從公司內各產品的發展趨勢來看,各種不同的產品在不同的規模和階段采用不同的架構模式來組組織和運行,但是隨著應用的訪問量的快速發展,產品正在朝著合久必分的趨勢來發展,逐步形成了服務化的架構思想;本文第二部分將繼續分析產品的不同架構模式:整塊架構和服務化架構。
為了避免本文的裹腳布又長又臭,分第二篇再闡述,你懂的~,有興趣請點擊下面的連接。
網易 雲計算基礎服務 深度整合了 IaaS 、 PaaS 及容器技術,提供彈性計算、 DevOps 工具鏈及微服務基礎設施等服務,幫助企業解決 IT 、架構及運維等問題,使企業更聚焦於業務,是新一代的雲計算平臺, 點擊可免費試用 。
相關文章:
【推薦】 知物由學 | 你的網絡安全問題背後的真正原因
【推薦】 雲計算交互設計師的正確出裝姿勢
PaaS服務之路漫談(一)