當前位置:編程學習大全網 - 編程語言 - 雲計算雲原生可移植性的神話

雲計算雲原生可移植性的神話

隨著大量新平臺和支持工具的出現,雲原生勢頭正在增長。 這些新平臺為開發人員提供了越來越多的功能,可以自動化方式快速開發,部署和管理大量微服務。

但這種勢頭伴隨著成本,妳最好準備為此付出代價。

最近我寫了壹篇由Kubernetes等雲原生平臺提供的“ 開發人員的新分布式原語 ”,以及這些原語如何與用於應用程序開發的編程原語相結合。 例如,下面看看開發人員必須了解和使用多少Kubernetes概念才能有效地運行單個容器化應用程序:

請記住,此圖表不包含DevOps團隊的Ops部門必須管理的任何支持Kubernetes對象。在第2天操作之前也不需要額外的應用程序支持工具(用於日誌管理,監視,跟蹤,服務網格等)。

可能的情況是,開發人員必須編寫與容器中的應用程序代碼相同數量的YAML代碼。更重要的是,應用程序本身將依賴於以前比以往更多的平臺。雲本機應用程序期望平臺執行運行狀況檢查,部署,放置,服務發現,運行定期任務(cron作業)或調度原子工作單元(作業),自動擴展,配置管理等。

因此,您的應用程序已放棄並將所有這些職責委托給平臺,並期望以可靠的方式處理它們。事實上,現在您的應用程序和相關團隊在很多不同的級別上依賴於平臺:代碼,設計,體系結構,開發實踐,部署和交付管道,支持過程,恢復方案,您可以為其命名。

上圖顯示了您的代碼在Kubernetes微服務的上下文中有多小。但是,當我們談論基於生產就緒的微服務系統時,這種情況遠未完成。任何規模龐大的系統都需要集中監控,度量收集,跟蹤,服務網格,集成構建和部署工具,管道等工具。

該平臺只是冰山壹角,為了在雲原生世界取得成功,您需要成為完全集成的工具和公司生態系統的壹部分。因此,賭註絕不是單壹平臺,項目或酷圖書館或壹家公司。它是關於同步協同工作的整個項目生態系統,以及在未來十年左右合作並致力於事業的公司(供應商和客戶)的整個生態系統。我認為這兩個方面同樣重要:

技術:

考慮到向雲本地過渡是壹個多年的旅程,只有長期成功才能帶來好處,重要的是打賭壹種具有未來5 - 10年潛力的技術,而不是從過去5到10年的 歷史 。

文化:

雲原生是通過微服務,容器,持續交付和DevOps的組合實現的。而成為雲本機需要的不僅僅是為您的應用程序添加少量依賴項/庫(而不是在某些會議中如何推廣它)。您可能不得不改變團隊結構和儀式,工作習慣和編碼實踐,並習慣於消耗仍然非常活躍的技術空間。如果您的公司文化在某種程度上更接近於開發或僅使用雲原生平臺和相關工具的公司的文化,那就更容易了。諸如提出拉取請求與提交錯誤報告,檢查上遊源代碼以及為即將發布的新功能公開討論而不是等到新聞的下壹次會議通知之類的小事情可以對團隊是否喜歡使用平臺與否。文化壹致性和人為因素與技術優勢同等重要。

以下內容並不代表完整的環境,但我將嘗試將我想到的主要雲本地生態系統分組:

作為Apache Software Foundations的壹部分,Apache Mesos具有其優點(成熟的社區)和缺點(緩慢移動)。它誕生於2009年左右,是壹個成熟的框架,它增加了對容器的支持(我的意思是這裏的docker格式)和類似的概念,比如最近的Pods / Task組。

Cloud Foundry再次誕生於2009年左右,是雲原生世界的先驅之壹。當Spring Cloud與Cloud Foundry壹起使用時,該平臺與應用程序本身融為壹體。服務發現,負載平衡,配置管理,重試,超時等壹些功能在服務中執行(在本例中為JVM)。這是Kubernetes等平臺所采取的相反方法,其中所有這些職責都委托給平臺或其他支持容器(例如envoy,linkerd,traefik)。我在過去比較了Kubernetes和Spring Cloud(通知不是Cloud Foundry)。

雖然Docker,Inc。(該公司)仍在研究它將要開發什麽以及銷售什麽,但亞馬遜使用Docker技術作為AWS Elastic Container Services的壹部分創建了壹個非常可靠的產品。帶有Blox的ECS(AWS的開源容器編排軟件)本身可能不是什麽大事,但當與所有其他AWS產品結合使用時,它是壹個功能非常強大的集成平臺。

更不用說從虛擬機時代起成為AWS支持者的Netflix正在向容器領域過渡,並正在推動Amazon ECS的創新。

Kubernetes是此類別中最新的平臺之壹,但同時也是有史以來最活躍,發展最快的開源項目之壹。與整合的雲原生計算基金會項目和支持公司相結合,使整個生態系統成為這壹類別中非常有力的競爭者。

作為壹個後來者(2014年),Kuebernetes的優勢在於從壹開始就以容器為中心的架構發展。而且它基於壹個已有十年 歷史 的谷歌博格,這意味著原則(不是實施)是成熟的,並在最高級別進行戰鬥測試。

正如您可以從Sysdig最近的報告中看到的結果,雲本地用戶似乎很欣賞這壹切。

也許您在想,只要您將應用程序打包到容器中,就可以輕松地跨不同的雲原生平臺移植。妳錯了。無論您是從Mesos,Cloud Foundry,Kubernetes,Docker Swarm,ECS開始,您都必須進行大量投資,以學習平臺和支持工具,了解文化和工作方式,並與這個仍然快速變化的生態系統進行互動。技術和公司。

本文的目的不是要比較這些生態系統,而是要顯示它們之間的差異,並證明如果需要,它將需要大量的時間和金錢來輸入壹個或轉移到另壹個生態系統。

雲原生態系統在技術,流程和文化方面非常獨特。但即便在他們之間也有壹些整合。許多由壹個平臺推廣的概念也在向其他平臺傳播。例如,部署單元(Pod in Kubernetes)的概念現在出現在Mesos中,它也作為任務組存在於Amazon ECS中。服務器端負載平衡(Kubernetes中的服務)和帶有策略的調度/放置(Kubernetes調度程序)的概念也存在於Docker Swarm,AWS ECS等中。但這是它走多遠,從壹個生態系統過渡到另外,需要付出很多努力。

那麽如何避免與單壹供應商鎖定?壹種方法是堅持使用Kubernetes並接受它作為雲和服務提供商之間的可移植性層。 Kubernetes如此受歡迎的原因之壹是因為它不是單壹的公司玩具,而是由多家大型 科技 公司支持,如谷歌,紅帽(OpenShift),Docker,Mesosphere,IBM,戴爾,思科等等。

另壹個原因是有許多雲公司提供Kubernetes作為服務。如果您使用Kubernetes,那麽您可以通過第三方服務提供商以最小的努力在Google容器引擎,Microsoft Azure,IBM Bluemix容器服務等雲提供商之間移動您的應用程序,甚至可以在AWS上移動您的應用程序。這意味著Kubernetes API是雲平臺之間應用程序的可移植性層,而不僅僅是容器。壹個容器本身就是雲原生海洋的壹滴。

  • 上一篇:1927山東蝗災:災民數超千萬,為什麽百姓卻視蝗蟲為神蟲不敢捕殺?
  • 下一篇:小學生自己創作的作品
  • copyright 2024編程學習大全網