原來他們才是AWS容器服務的“寶藏男孩”

原來他們才是AWS容器服務的“寶藏男孩”

看了文章的標題,您也大概能猜得出,我又要來說容器的好話了。其實,不僅僅是容器本身,以容器為代表的諸多現代化應用,或者更時髦一點說“雲原生”應用都是我們要大書特書的,因為它們相對傳統的單體應用和開發模式來說無疑是一個巨大的進步,帶來了效率的提升、開發的便捷,以及應用的快速“上新”。

也許你會愛上“雙披薩團隊”

AWS現代化應用產品市場負責人Aaron Kao就有切身的體會。早在2000年的時候,亞馬遜網站擁有一個單體的應用(monolithic application),很多團隊,卻只開發一個應用。誠然,這是一個巨型的應用,包含大型的數據庫,但是缺乏敏捷性,如果想添加新功能,就必須對原代碼進行編輯、修改。2001年,改變傳統構建應用方式的時機到了,亞馬遜將應用分解為多個微服務,並且打造了所謂的“雙披薩團隊”。這種組織架構以及開發模式上的變革,使得亞馬遜能夠更快速地進行開發。

Aaron Kao解釋說,所謂“雙披薩團隊”,就是這個團隊的成員數量,只要兩個披薩就能夠吃飽。團隊完全負責自己開發的服務,完全擁有自己的應用,從發現應用、應用的開發到應用的部署,全面問責。很多人也把它稱為DevOps開發應用模式。

AWS S3就是一個典型的例子。2013年S3推出的時候,只有8個微服務,如今S3包含了超過235個分佈式微服務。“什麼是現代化應用?它至少應該具備全球化、大規模、毫秒級延遲、PB級數據以及多模。為此,我們可能要做出很多改變,而首當其衝的便是架構模型,以及運營模型、軟件交付、安全模型和數據管理的改變。”Aaron Kao表示。

現在,除了亞馬遜,已經有成千上萬的客戶走上了同樣的道路。比如麥當勞,他們推出了一項送貨上門的服務,這是在4個月之內使用Amazon ECS上運行的微服務實現的。這個雲原生的微服務架構可以做到每秒處理兩萬筆訂單,延遲不到100毫秒,並且能夠輕鬆地與全球交付合作夥伴進行集成。

沒有高質量的雲平臺,哪來的高質量的應用?

統計數據顯示,今天51%的Kubernetes工作負載都運行在AWS的雲上。

從單一應用到微服務,從虛機到各種實例的類型,之後是容器、無服務器計算Lambda等的興起,計算在發展,用戶的選擇也更多。AWS希望為容器應用打造一個全面的平臺,讓它儘快流行起來。因為容器提供了一個非常容易的機制來打包企業的應用,而且非常容易部署到任何一個環境中,快速縮小或者擴大。這也是客戶真正喜歡容器的原因。

AWS擁有非常廣泛的容器產品和服務,覆蓋了三個層次:最下面是彈性的映像註冊表Amazon ECR (Amazon Elastic Container Registry),它可以存儲容器映像文件,且非常易用;中間層是計算引擎,因為容器需要運行在某一個計算平臺上,用戶可以使用Amazon EC2作為啟動類型來運行容器,也可以使用AWS Fargate來啟動無服務器的運行;在上面的編排層,AWS可以為客戶提供非常多的選擇,客戶既可以自己搭建編排服務,也可以使用AWS的託管服務,比如Amazon Elastic Container Service(ECS)或者Amazon Elastic Kubernetes Service(EKS)。總之,AWS希望為客戶提供最優秀的容器平臺,方便客戶開發自己的應用。

AWS是一家“為客戶著迷”的公司,客戶的需求就是研發的方向。當有客戶提出,AWS能不能提供一項服務,幫我們管理容器?Amazon ECS就這樣誕生了,它可與AWS其他的服務(例如Auto Loader Balancing,ALB)深度集成,使得客戶可以更好地在EC2上進行應用開發。

隨著時間的推移,又有客戶提出,需要AWS幫助實施Kubernetes。Amazon EKS應運而生,它是一個全託管的Kubernetes服務,可以幫助客戶以安全和高可伸縮的方式進行管理。Kubernetes是一個開源的項目,雲平臺的質量與應用的質量是相輔相成的,AWS為Kubernetes提供了一個高質量的雲平臺。

客戶為什麼一定要選擇AWS的Kubernetes?Aaron Kao自問自答。首先,Amazon EKS提供的是運行生產級工作負載的平臺,安全和可靠是其最大的優勢。其次,AWS提供原生和上游(native and upstream)的Kubernetes體驗,即AWS的Kubernetes和開源的Kubernetes的運行是完全一樣的。AWS與Kubernetes技術社區密切合作,使這一切成為可能。再次,AWS儘量做到無縫集成。AWS擁有165種不同的服務,從存儲到管理應有盡有,這種服務的廣度和深度讓客戶在應用容器時更加得心應手,同時獲得了更多能力增強。最後,AWS的Amazon EKS團隊積極與上游的Kubernetes項目和CNCF共享。

Aaron Kao介紹說,今天客戶使用Kubernetes的方式有很多種,有人用Amazon EKS遷移企業應用,也有人將Amazon EKS用於機器學習。

據悉,Amazon EKS很快將在AWS中國(北京)區域、AWS中國(寧夏)區域以及AWS南美洲(聖保羅)區域推出。

主動權掌握在用戶手中

當客戶的現代化應用越來越多,容器的規模越來越大時,新的問題又來了:怎樣對容器進行整合,又怎樣更好地管理大量容器呢?AWS Fargate可以輕鬆應對這些問題。“有了Fargate之後,客戶就不需要自己去處理服務器或者基礎架構,可以更快地推出和擴充容器應用。客戶只需要根據自己所用的服務支付費用,而不用理會容器集群的數量有多大。容器的使用因此變得極其簡單。”Aaron Kao介紹說,“現在,全球數以千計的客戶都在使用AWS Fargate,其中有的客戶使用Fargate每週運行上百萬個容器。”

在2017年11月舉行的AWS re:Invent大會上,AWS Fargate的發佈並沒有引起轟動。在2018年公佈的技術雷達上,AWS Fargate也僅處於“評估”的位置,和“試驗”和“採用”還有一定距離。但是今天,AWS Fargate已經在中國正式發佈。“蟄伏”的AWS Fargate終於要發威了。在這之前,國內的一些技術社區、開發者都表達了對AWS Fargate的期待。有人這樣描述AWS Fargate的價值:它完全抽象了底層基礎架構,使得用戶可以將每個容器視為一臺機器;而容器就像水面上的船隻,擁有自己的帆、船舵、船員,自己可以漂流到想要去的地方。還有人這樣評價AWS Fargate:它將AWS Lambda的價值、便利性和可擴展性帶進了容器領域,是重要的遊戲規則改變者。

原來他們才是AWS容器服務的“寶藏男孩”

AWS Fargate是一種適用於Amazon ECS的計算引擎,使得用戶無需管理服務器或群集即可運行容器。使用AWS Fargate,用戶不必再預置、配置和擴展虛擬機群集即可運行容器。這樣一來,用戶就省去了選擇服務器類型、確定擴展群集的時間和優化群集打包的工作。採用 Fargate,用戶可以專注於設計和構建應用程序,而不是管理運行應用程序的基礎設施。

Amazon ECS具有兩種模式:Fargate啟動類型和EC2啟動類型。使用Fargate啟動類型,用戶只需將應用程序打包到容器中,指定CPU和內存要求,定義聯網和IAM 策略,然後啟動應用程序即可。

歸納起來,AWS Fargate具有三大顯著優勢。第一,無需管理集群。使用AWS Fargate,用戶只需考慮容器,以便能夠集中精力構建和運行應用程序。AWS Fargate消除了管理Amazon EC2 實例群集的需要,用戶不必再選擇實例類型、管理群集調度和優化群集利用率。第二,無縫擴展。藉助AWS Fargate,用戶可以輕鬆擴展應用程序,而不必再擔心是否為容器應用程序預置了足夠多的計算資源的問題。在指定應用程序要求(如CPU、內存等)後,AWS Fargate將以高度可用的方式管理運行容器所需的所有擴展和基礎設施。Fargate可以在幾秒鐘內啟動數以萬計的容器,並輕鬆擴展以運行最重要的關鍵任務型應用程序。第三,與Amazon ECS 無縫集成。用戶只需按照定義Amazon ECS的方式定義應用程序,可以將應用程序打包到任務定義中,指定所需的CPU和內存,以及定義每個容器需要的聯網和IAM 策略,並將所有這些內容上傳至Amazon ECS。在完成上述所有設置後,AWS Fargate就會啟動和管理容器。

原來他們才是AWS容器服務的“寶藏男孩”

談到Fargate和與Lambda的關係,Aaron Kao介紹說,Fargate和Lambda是構建和包裝客戶應用的兩種不同方式:如果客戶想在容器層運行應用,並把它包裝成一個容器的話,就可以採用Fargate;如果客戶只是想將應用作為一個函數,打包代碼,然後由客戶自己發出一個觸發器,來觸發代碼運行,那麼Lambda更適合。究竟如何合理選擇,還是要看客戶希望掌握多大的控制權,需要何種程度的抽象化。

應用現代化或者說雲原生的大門才剛剛打開,其中的奧妙和變化,需要企業用戶和廠商共同去探索。無論是Amazon ECS、Amazon EKS,亦或是Lambda、Fargate,面對眾多選擇,企業用戶要有自己的主心骨,瞭解自己的問題所在,才能做出最適合自己的選擇,不是嗎?


分享到:


相關文章: