從IaaS、CaaS、PaaS和FaaS中,如何選擇正確的平台?
探索各類雲平台,幫您找到最適合您的那一款!無論您是購買、從零開始搭建還是採用開源技術,您可能已經在使用某種軟體平台來構建,部署和擴展應用程序。
一個平台的誕生必定是經年錘鍊而來,即從應用程序中提取通用的功能到更底層的抽象中。如果完成了既定的設計意圖,那麼您將得到一個可用的平台,反之,您將得到一個「燙手山芋」,既而您將再次尋找合適的平台,這時候您會發現別人已經構建好的平台給您帶來了一線希望的曙光。
正確的平台,您將在靈活性和簡單性之間達到您所需要的平衡,從而使您能夠更快速地構建而不受太多限制。本文將探討雲平台的範圍,以幫助您找到最適合您的那一款。
對於什麼樣的平台才是完美的,每個人有每個人的看法,因為每個人的使用場景有所不同。但是幾乎所有人都尋求以下兩個特徵:
提高開發速度
運維操作的最佳實踐自動化
這兩個要求推動了大多數軟體平台的投資。真的,這兩項可以作為自動化任何事情的檢驗標準。
所以,沒有一個平台對於任何用戶來說是完美的,那麼是否意味著我們要自己寫呢?如果自己寫,是否建立在一個現有的平台之上?您想要一個從上到下的緊密集成的平台,還是想要使用強大的擴展點鬆散連接的多層平台?
這些都是一時間難以回答的問題,並沒有一個真正適合每個人的單一答案。尋找合適平台的成就感是發現,比較和權衡之一。所以我們一起來吧!
平台之美
雲平台的「彩虹」,總有您喜歡的色彩。
每個廠商都會告訴你,他們的軟體是特別的,甚至是獨一無二的。他們都在努力區分產品,以提供不可替代的價值。但是,如果您仔細觀察,並容忍一些粗糙的邊緣,您可以根據它們提供的介面類型對這些產品進行分組。
雲平台例子
軟體平台
術語「軟體即服務」一詞最早可追溯到2000年左右,指的是將打包的軟體產品和支持服務捆綁在託管解決方案中,以避免經常未知的執行和操作成本。一個SaaS產品本身就是一個基礎上的平台。術語描述的一些原始用途取代了傳統企業資源計劃(ERP)和客戶關係管理(CRM)平台。
像Salesforce和SAP這樣的公司,對於那些沒有大型工程師團隊或IT部門來構建和管理這些複雜的系統客戶,他們會在這些領域非常成功。即使是擁有這些資源的公司也可能認為這些事情不在其核心競爭力範圍之內,不值得自己去建設或經營。如今幾乎所有類別的軟體都可以通過SaaS獲得,從電子郵件到文字處理系統,再到內容管理系統比比皆是。
Spectrum的另一端是基礎設施即服務。
將應用程序配置到基礎架構平台上
基礎設施平台
基礎設施平台在SaaS之後不久就出現了。VMware GSX Server(2006)和亞馬遜彈性計算雲(EC2,2006)提供了早期的虛擬化平台。然而,VMWare最初專註在企業內部部署,亞馬遜web服務則將其託管的IaaS和SaaS產品結合,定位於更廣闊的市場。後來,Rackspace和美國航天局開發了OpenStack (2010)作為VMware vSphere (2009年發布,取代GSX)和亞馬遜EC2的開源競爭對手。
這些IaaS主要提供了一些具體的抽象:虛擬機計算節點,軟體定義的網路和可掛載的存儲。在有SaaS的情況下,託管的IaaS的主要賣點是外部資源容量配置操作的自動化,但與SaaS不同,託管的IaaS會給用戶帶來資源規模無限大的錯覺。對於大多數對基礎設施外包感興趣的公司來說,AWS會提供比客戶以往任何時候資源需求量大得多的資源,在您向AWS尋求更多節點之前,已經擴展了數據中心。對於無法或者不願意外包的公司,像OpenStack和vSphere這樣的基礎設施平台可以在您選擇的數據中心中託管自己的雲。
然而,管理不僅僅只是涉及硬體,還包括管理一個基礎設施平台,並且這需要更多的工作,這是企業公司已經在自己的平台上做過的。無論是手動管理沒有虛擬化層的硬體,還是渴望使配置更加自助化。因此,X即服務模式是圓滿的:託管的平台成為了打包的產品,此次增加的多租戶功能,允許客戶自己的內部用戶群體進行操作。
隨之而來的應用平台。
基礎設施平台上的應用平台
應用平台
Fotango的Zimki(2006)和Heroku(2007)率先使用平台即服務。後來的Google App Engine(2008),CloudFoundry(2011)和其他幾個加入了戰鬥。在當時,很明顯,這些是真正的應用平台(aPaaS),專門用於加快開發人員的速度並降低運營開銷。使得開發人員自己配置和管理他們開發的應用,進一步壓縮了從開始到發布到反饋到迭代的周轉時間,與日益普及的敏捷軟體開發思想相契合,並為剛剛起步的DevOps運動播下種子。
但進步永遠不會停止。容器平台出現了。
基礎架構平台上的容器平台
容器平台
容器化已經比您想像得要深入(FreeBSD Jails自2000年以來一直在使用),但是可以肯定的是直到Docker(2013)將Linux操作系統級虛擬化與文件系統鏡像結合起來,容器化才真正廣泛流行起來。這使得構建和部署容器化應用更加容易,這是一種可以理解為通過構建磁碟鏡像來加快基礎設施平台配置的IaaS用戶模式。但與VM相比,同時運行的幾台驅動器足以讓您的工作站超負荷運行,容器則允許您在本地部署完整的微服務堆棧,大大加快了開發周期。另外,由於降低了開銷,每個微伺服器都可以擁有自己的容器映像,自己的發布周期和自己的滾動升級,允許更小的團隊並行開發它們。
從容器運行時到容器平台,這是一個明顯的進步。像CloudFoundry這樣的應用平台和像Apache Mesos這樣的集群資源管理系統自成立以來就一直使用容器隔離。下一步是公開一個平台API,允許開發人員在一組機器上部署越來越受歡迎的Docker鏡像。像基礎設施平台一樣,容器平台也是在內部開始的,後來提供託管服務。
Mesosphere的Marathon(2013)是通用容器編排的首個開源平台之一,但它早期是由內部努力推動的,比如Google的Borg(?2004)和Twitter的Aurora(2010年寫成,在2013年開放為Apache Aurora)。
容器編排是容器平台的核心。與應用平台一樣,容器平台需要提供基於約束的聲明性調度。與應用平台不同的是,容器不限於十二要素應用程序。比如,有狀態服務需要的持久卷,隔離保證機制,特定域的遷移過程及並行的備份作業等等。由於這種靈活性,容器平台可以輕鬆地變得比應用程序平台更複雜,以支持更多種類的工作負載。
基於計算機集群的容器平台
為了增加靈活性,並且在不遷移的情況下支持傳統工作負載,許多人在基礎設施平台之上運行容器平台,但這並不是絕對必要的。容器與單個機器已經十分接近,幾乎所有的工作負載都是兼容的。所以並不是每個人都需要這種靈活性。許多開發人員將他們所有的時間都花在單層的堆棧中。他們尋找避免重複執行任務的辦法,例如為他們構建的每個新應用程序手工製作容器鏡像。對於這些人來說,功能平台(也稱為無伺服器)就出現了。
基礎架構平台上的容器平台,容器平台上的功能平台
功能平台
亞馬遜推出了AWS Lambda(2014),引領了無服務的「熱潮」,在其虛擬基礎設施平台之上提供輕量級的容器化事件處理。像其他Amazon Web Services一樣,Lambda僅僅只是一種託管服務。
因此,由Iron.io(2014),Apache OpenWhisk(2016),Fission(2016),Galactic Fog的Gestalt(2016),OpenLambda(2016)填補了私有化部署替代品的市場。
除了他們各自基於特定語言的框架之外,功能平台的運行方式與應用平台相同。因此,開發人員只需要開發事件處理程序,並使用平台API將觸發器映射到該處理程序即可,而不是使用多個端點編寫應用程序。功能平台通常與API網關配合或集成,以處理代理,負載均衡和集中式服務發現。與應用平台不同,功能平台透明地集成了基於負載的自動縮放,因為它們控制所有入口點和復用。
像容器平台一樣,功能平台不一定需要基礎架構平台,但與容器平台提供的靈活性不同,功能平台不是設計用於支持各種各樣的工作負載。所以僅僅只運行一個功能平台可能是不明智的或不可能的。您可能還需要一個較低級別的容器或基礎架構平台。一些功能平台甚至被設計成與容器平台集成,利用中間層自動化來降低較高層的複雜性。
雲平台,其介面以及抽象的規模
平台抽象
這些平台中的每一層都提供了自己獨特的抽象和API,某些層比其他層更抽象。一些更高層級的平台要麼全部採用,要麼就全不用。它們具有頂部到底部的集成,但只能支持您要運行的一小部分工作負載。您可能會嘗試選擇最高層的抽象化來最大限度地提高開發人員的速度,但是您也必須考慮到這些平台上構建的軟體將與平台最緊密耦合,當您需要重新選擇平台的時候, 這將增加您的風險。另一方面,較低級別的平台可以提供最大的靈活性,可以實現最廣泛的工作負載,包括Web應用程序,微伺服器,過時的整體架構應用,數據管道和數據存儲服務。它們使得遷移更輕鬆和基礎設施操作更容易,但是在上面實際開發或運維應用程序,服務或作業卻更難。
應用平台和基礎設施平台之間的衝突是容器平台受歡迎的重要原因之一。容器平台在這兩方面作出了妥協。它們允許您根據每個容器來決定您的工作負載是否需要自己的環境,或者可以作為二進位運行,支持更多種類的工作負載。但它們還像應用程序平台一樣提供聲明式配置,生命周期管理,複製和調度。如果您還需要更高層次的抽象,您可以輕鬆地在容器平台之上部署更輕量級的應用程序或功能平台,共享具有較低級別工作負載的資源和機器。如果您還需要較低級別的抽象,您可以輕鬆地在基礎設施平台之上部署容器平台,而不是直接使用裸機。
DC/OS架構層
DC/OS——平台終極選擇
在Mesosphere,我們的使命就是讓它非常容易建立和擴展規模到足以改變世界的技術。這意味著我們不僅僅服務於開發人員,也不僅僅是運營商,而是二者皆有。幫助您實現真正的敏捷性,既需要開發人員的速度和也需要運維人員的靈活性。開發人員希望減少重複工作,自動化的彈性,並建立在強大的平台服務之上。運維人員希望可見性,避免供應商鎖定,以及控制成本的能力。因此,我們構建了DC/OS,以提供基於雲的服務和開放的合作夥伴生態系統,與基礎設施無關的容器平台。通過DC/OS,您可以獲得一個堅實的容器平台,加上更高級別服務的目錄:資料庫,隊列,自動化測試,持續交付流水線,日誌記錄和指標堆棧,彈性擴容及功能平台等。
溫馨提示:
求知若渴, 虛心若愚


※IS360高性能計算存儲市場報告解析
※SAP產品和解決方案完全解析
TAG:架構師技術聯盟 |