AWS Fargate

2022-05-30  本文已影响0人  张培_

背景

随着容器化的流行和普遍,我们对APP的部署和构建方式都发生了很大的改变。
为了适应这一潮流,很多云服务供应商(比如AWS)发布了各种新的service,帮助简化APP所需容器在云上的编排,部署和管理。

比如在AWS上,最常见两个容器编排service:

以ECS为例, 虽然ECS可以帮助我们编排APP中不同task所需的不同容器,以及容器之间的联系。
但是我们不能仅仅只关注在容器上,我们还需考虑和配置容器运行在什么样的云服务上。
为了保证APP服务的可用性和可扩展性,我们需要管理和配置容器所运行在的云服务集群(比如所有的容器都运行在EC2上,我们就需要管理我们的EC2集群)
由此,及时我们使用了ECS,我们仍然需要配置和管理容器运行在的实例。

由于容器化的普及,我们希望关注点能够更集中在打包了我们所有服务的容器上,而并非底层实例,此时fargate应运而生。

接下来,我们就要开始学习一种新的service: Fargate

一个专门处理容器的serverless计算平台, 简而言之,
就是一个专门用来运行容器的serverless的云计算服务。

Need For AWS Fargate

当docker容器化还没有出现的时候,人们通常将自己的APP部署到VM上。
所以当时的云服务商AWS发布了自己的云计算服务AWS EC2, EC2就是一个虚拟机, 用户可以直接将自己服务部署到EC2实例上。
为了让APP更快的被部署,我们通常将自己的App和操作系统一起打包成一个AMI。
然后直接作为EC2的AMI被运行即可。

然后docker 容器化开始盛行,用户开始将自己的APP部署到docker容器中,将自己的APP和所需的所有工具打包成一个docker镜像, 在需要的时候在任何有docker engine的实例上运行起来即可。

那么容器和虚拟机的最大区别其实就是,在同一个实例上运行的所有容器都共享主机的操作系统, 而不同的虚拟机中都有自己的操作系统,其实就是一个独立的主机, 一个EC2实例其实就是一个云上虚拟机。

image.png

随着容器化的普及,人们更倾向于将自己的APP部署到容器中而不是虚拟机中,因此人们从以前操作虚拟机转成了现在操作容器。通常一个APP能够工作,需要多个容器配合工作, 为了方便APP的部署,AWS 发布了ECS

ECS就是一个拥有高扩展性和高性能的容器编排工具,ECS帮助用户减少了很多容器管理的开销,但是用户仍然需要管理容器运行在的实例集群,也就是容器运行的宿主虚拟机集群。

对于用户来说虽然ECS能够帮助编排和管理容器, 但是用户依然需
部署和管理容器运行在的底层宿主虚拟机集群,那么如果还有一个工具,能够负责部署和管理容器运行在宿主集群,这样用户就可以只关注于APP。因此AWS Fargate出现

What is AWS Fargate

AWS Fargate 是 serverless 计算服务, 专门用于运行容器 。Fargate负责部署和配置你所有容器运行所需要的实例集群(VM) , 并且根据流量对集群进行扩缩容。

AWS Fargate 也是 ECS 的compute engine,ECS作为容器编排工具,负责编排容器,但是不负责容器所运行在的底层实例(虚拟机)集群。Fargate和EC2是ECS现有的两种不同的compute engine,也就是两种不同的launch type

AWS Fargate vs Lambda

AWS Fargate 是 serverless compute service, 这个定义想必你一定不会觉得陌生,因为我们最常用的lambda就是一个serverless compute service.

AWS Fargate 和 lambda 虽然都是serverless的服务。区别在于:

在本地 通常为了让你的APP能够正常运行,我们可能会使用docker-compose(docker容器编排工具)同时setup多个容器(APP + DB + nginx容器...),并让他们能够正常的运行在我的机器上。

在AWS上 Fargate只是一种serverless的服务,类似于在云上按需部署并setup起来多个实例,用于运行多个容器。由此观之,想要Fargate单独工作似乎还不行,还需要一个在AWS上的容器编排工具, 此时你应该已经猜到了,就是ECS(PS: EKS也可以作为容器编排工具和Fargate一起工作,本文就不提了)。
因此Fargate又被看作为ECS的compute engine。

上一篇下一篇

猜你喜欢

热点阅读