服务
关于
CloudProse博客

2018年5月16日,星期三

考虑使用Fargate吗?阅读此书后,请查看 我们的新职位 关于Fargate定价。

您可能已经听说了无服务器流行语。功能强大但已加载。真的没有服务器吗?您可能听说过Fargate: AWS的新容器管理产品。通过Fargate,AWS可以管理您的基础容器主机&为您集群...只需将您的容器放进去,然后将其忘记即可。没有要管理的服务器。听起来“没有服务器”,不是吗? 许多 采摘 进一步说明:您开始在同一句子中看到“无服务器”和“ Fargate”两个字。

那么Fargate真的是“无服务器的”吗?

在Trek10上,辩论流行词并不是我们最喜欢的时间,我们宁愿只进行构建。无服务器是一个概念,可以表达您想要表达的任何含义。但是,这场辩论背后有一个有用的讨论:Fargate的优势与基于Lambda的架构的优势相比如何?这些服务的哪些特征可以对您的业务产生有意义的影响?

首先让我清楚一点:Fargate是AWS生态系统中真正引人注目的补充。在许多情况下,无法选择AWS Lambda:旧版应用程序迁移,不支持的语言,运行时间长的流程。在这种情况下,Docker是通向不可变和全自动基础架构的最佳途径。但是,从历史上看,Docker主机和集群管理的额外复杂性是一个巨大的缺点。 Fargate消除了这种复杂性。现在,您可以将容器作为一个抽象层进行管理。在其他条件相同的情况下,减少基础设施无疑是一件好事!

但是将Fargate称为“无服务器”掩盖了一些非常有意义的差异,这些差异使Fargate大大缺乏基于Lambda的“无服务器”的承诺(以及Trek10的多年实践经验)。让我们看一下基于Lambda的无服务器架构的几个主要卖点以及Fargate如何堆叠。

Fargate v Lambda

基于Lambda的Serverless的一些承诺,以及该承诺如何在Fargate中发挥作用:

按请求付费

想象一下,您的应用程序在一分钟内收到10,000个请求,然后在第二分钟再收到1,000个请求,然后在第三分钟又回到10,000个请求,然后一直如此。使用Fargate时,您将不需要细粒度地配置自动扩展,因此您将扩展服务以每分钟处理10,000个请求并将其保持在该位置。这意味着您将在50%的时间内超额配置90%,或总计超额配置45%。在使用Lambda的这种情况下,您的配置仍然是完美的:0%的浪费。按请求付费很重要。

忘记可用性& fault tolerance

使用Fargate,可以管理基础主机,但是,如果仅启动一个Fargate容器,则您的可用性不高:没有冗余,只有一个可用区。您必须确保在多个可用区中设置子网,启动多个容器,并将Fargate配置为使用这些子网。

几乎无限的努力,几乎无限的可扩展性

使用Fargate,您的基础Docker主机可以自动扩展,因此您不必担心群集扩展,但是您仍然需要担心扩展负载均衡器中容器的数量。也称为服务自动扩展,这涉及确定扩展阈值(即,如果在过去5分钟内CPU达到60%,则添加2个容器),并确保您的运行状况检查参数合适,以便从负载中取出新的容器平衡器平稳。根据我们的经验,这种缩放配置始终会在生产中进行一些调整以使其正确。

没有补丁

使用Fargate,您不必修补基础主机,但仍然需要担心更新容器。尽管重量更轻,但总而言之,它还是一个古老的故事:注意关键漏洞,运行更新并测试,计划发布。别太慢!当大漏洞宣布时就来争夺战!您是否要等待基本映像维护者发布其更新,以便您可以更新标签?还是要在管道中更新软件包?如果是这样,请注意如何安装更新,以免图像过大! (所有您从未在基于Lambda的Serverless中考虑的事物。)

没有并发或争用

在Fargate中未隔离功能。虽然扩展有望减轻挑战,但您仍然有并发进程争用容器中的共享资源:容器可以处理多少个线程?一个进程是否正在从其他进程窃取磁盘IO?使用基于Lambda的Serverless,执行功能的真正隔离使此问题消失了。更为简单的焦点是建立单个执行规模。

革命经济学

Fargate定价基于CPU&已配置RAM,并且计费以秒为单位递增。很好,但仍离Lambda不远。对于一个vCPU和2GB RAM,Fargate的成本为每小时0.076美元:比EC2贵一点。当您考虑总拥有成本时,这无疑是一个很好的增量节省方式,但仅仅是增量方式。对于使用Lambda的$ 0.076,您可以运行一个函数执行约145,000次执行,耗时300 ms,每个函数执行可获得1GB RAM。在整个小时内,每秒每秒40个请求。在我们看来,这些是革命经济学。

明智的话

像往常一样,受人尊敬的云架构思想领袖和Trek10的朋友 iRobot的Ben Kehoe 比他说的要好得多 关于这个话题的好文章.

容器与无服务器性正交。从高级应用程序体系结构的角度来看,它们是VM,即极其轻量级的VM。

它们的启动和停止,创建和丢弃的能力是实现无服务器平台的许多实现的原因之一。但是,如果您启动并运行一个Node进程,该进程侦听请求,在同一进程中同时处理多个请求,并且如果没有发出请求,则处于空闲状态。

或更简洁地说:

本·基霍@ ben11kehoe如果您有一个在不处理数据时处于活动状态的容器,则它将
👏
👏
a
👏
服务器
👏
1342017年10月31日中午12:30Twitter广告信息和隐私

75个人正在谈论这个

因此,总而言之,这里没有Fargate-hatin。这是一项很棒的新服务,并且是在AWS中运行容器的新默认方法。在很多情况下,容器是有意义的,最明显的是旧版应用程序,Lambda不支持的语言以及长时间运行的流程。但是,不要让“无服务器”一词使您感到困惑:Fargate从根本上说只是 基础设施较少;基于Lambda的“无服务器”可为您的业务带来好处,而Fargate根本无法触及。

有疑问/意见吗?欢迎随时与我们联系 服务器[email protected].

作者
安迪·沃宗(Andy Warzon)Trek10
安迪·沃宗(Andy Warzon)

创办人& CTO

创办人&CTO Andy一直在AWS上进行开发已有十多年,并且是AWS认证解决方案架构师-专业人士。