AWS Fargate

背景

隨著容器化的流行和普遍,我們對(duì)APP的部署和構(gòu)建方式都發(fā)生了很大的改變。
為了適應(yīng)這一潮流,很多云服務(wù)供應(yīng)商(比如AWS)發(fā)布了各種新的service,幫助簡(jiǎn)化APP所需容器在云上的編排,部署和管理。

比如在AWS上,最常見(jiàn)兩個(gè)容器編排service:

  • ECS
  • EKS

以ECS為例, 雖然ECS可以幫助我們編排APP中不同task所需的不同容器,以及容器之間的聯(lián)系。
但是我們不能僅僅只關(guān)注在容器上,我們還需考慮和配置容器運(yùn)行在什么樣的云服務(wù)上。
為了保證APP服務(wù)的可用性和可擴(kuò)展性,我們需要管理和配置容器所運(yùn)行在的云服務(wù)集群(比如所有的容器都運(yùn)行在EC2上,我們就需要管理我們的EC2集群)
由此,及時(shí)我們使用了ECS,我們?nèi)匀恍枰渲煤凸芾砣萜鬟\(yùn)行在的實(shí)例。

由于容器化的普及,我們希望關(guān)注點(diǎn)能夠更集中在打包了我們所有服務(wù)的容器上,而并非底層實(shí)例,此時(shí)fargate應(yīng)運(yùn)而生。

接下來(lái),我們就要開(kāi)始學(xué)習(xí)一種新的service: Fargate

一個(gè)專(zhuān)門(mén)處理容器的serverless計(jì)算平臺(tái), 簡(jiǎn)而言之,
就是一個(gè)專(zhuān)門(mén)用來(lái)運(yùn)行容器的serverless的云計(jì)算服務(wù)。

Need For AWS Fargate

當(dāng)docker容器化還沒(méi)有出現(xiàn)的時(shí)候,人們通常將自己的APP部署到VM上。
所以當(dāng)時(shí)的云服務(wù)商AWS發(fā)布了自己的云計(jì)算服務(wù)AWS EC2, EC2就是一個(gè)虛擬機(jī), 用戶(hù)可以直接將自己服務(wù)部署到EC2實(shí)例上。
為了讓APP更快的被部署,我們通常將自己的App和操作系統(tǒng)一起打包成一個(gè)AMI。
然后直接作為EC2的AMI被運(yùn)行即可。

然后docker 容器化開(kāi)始盛行,用戶(hù)開(kāi)始將自己的APP部署到docker容器中,將自己的APP和所需的所有工具打包成一個(gè)docker鏡像, 在需要的時(shí)候在任何有docker engine的實(shí)例上運(yùn)行起來(lái)即可。

那么容器和虛擬機(jī)的最大區(qū)別其實(shí)就是,在同一個(gè)實(shí)例上運(yùn)行的所有容器都共享主機(jī)的操作系統(tǒng), 而不同的虛擬機(jī)中都有自己的操作系統(tǒng),其實(shí)就是一個(gè)獨(dú)立的主機(jī), 一個(gè)EC2實(shí)例其實(shí)就是一個(gè)云上虛擬機(jī)。

image.png

隨著容器化的普及,人們更傾向于將自己的APP部署到容器中而不是虛擬機(jī)中,因此人們從以前操作虛擬機(jī)轉(zhuǎn)成了現(xiàn)在操作容器。通常一個(gè)APP能夠工作,需要多個(gè)容器配合工作, 為了方便APP的部署,AWS 發(fā)布了ECS

ECS就是一個(gè)擁有高擴(kuò)展性和高性能的容器編排工具,ECS幫助用戶(hù)減少了很多容器管理的開(kāi)銷(xiāo),但是用戶(hù)仍然需要管理容器運(yùn)行在的實(shí)例集群,也就是容器運(yùn)行的宿主虛擬機(jī)集群。

對(duì)于用戶(hù)來(lái)說(shuō)雖然ECS能夠幫助編排和管理容器, 但是用戶(hù)依然需
部署和管理容器運(yùn)行在的底層宿主虛擬機(jī)集群,那么如果還有一個(gè)工具,能夠負(fù)責(zé)部署和管理容器運(yùn)行在宿主集群,這樣用戶(hù)就可以只關(guān)注于APP。因此AWS Fargate出現(xiàn)

What is AWS Fargate

AWS Fargate 是 serverless 計(jì)算服務(wù), 專(zhuān)門(mén)用于運(yùn)行容器 。Fargate負(fù)責(zé)部署和配置你所有容器運(yùn)行所需要的實(shí)例集群(VM) , 并且根據(jù)流量對(duì)集群進(jìn)行擴(kuò)縮容。

AWS Fargate 也是 ECS 的compute engine,ECS作為容器編排工具,負(fù)責(zé)編排容器,但是不負(fù)責(zé)容器所運(yùn)行在的底層實(shí)例(虛擬機(jī))集群。Fargate和EC2是ECS現(xiàn)有的兩種不同的compute engine,也就是兩種不同的launch type

  • Fargate是serverless的compute engine (Fargate Launch Type)
  • EC2 是非serverless的compute engine(EC2 Launch Type)

AWS Fargate vs Lambda

AWS Fargate 是 serverless compute service, 這個(gè)定義想必你一定不會(huì)覺(jué)得陌生,因?yàn)槲覀冏畛S玫膌ambda就是一個(gè)serverless compute service.

AWS Fargate 和 lambda 雖然都是serverless的服務(wù)。區(qū)別在于:

  • Fargate主要用于運(yùn)行container(容器)

在本地 通常為了讓你的APP能夠正常運(yùn)行,我們可能會(huì)使用docker-compose(docker容器編排工具)同時(shí)setup多個(gè)容器(APP + DB + nginx容器...),并讓他們能夠正常的運(yùn)行在我的機(jī)器上。

在AWS上 Fargate只是一種serverless的服務(wù),類(lèi)似于在云上按需部署并setup起來(lái)多個(gè)實(shí)例,用于運(yùn)行多個(gè)容器。由此觀之,想要Fargate單獨(dú)工作似乎還不行,還需要一個(gè)在AWS上的容器編排工具, 此時(shí)你應(yīng)該已經(jīng)猜到了,就是ECS(PS: EKS也可以作為容器編排工具和Fargate一起工作,本文就不提了)。
因此Fargate又被看作為ECS的compute engine。

  • Lambda其實(shí)是一個(gè)按需啟動(dòng)的實(shí)例,使用AWS lambda你不需要考慮實(shí)例的配置和部署工作, 只要選擇一種運(yùn)行環(huán)境,并把需要運(yùn)行的代碼上傳到lambda上,lambda就會(huì)根據(jù)流量進(jìn)行自動(dòng)的擴(kuò)縮容工作,你完全不需要擔(dān)心。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容