无服务器计算和容器都使开发人员能够以比传统服务器或虚拟机上托管的应用程序更少的开销和更大的灵活性构建应用程序。开发人员应该使用哪种风格的体系结构取决于应用程序的需求,但无服务器应用程序更具可扩展性,而且通常更具成本效益。
在本文中,我们看一看争论:无服务器计算与容器,并提供我们对这两种模型的见解。
newrelic去年进行的一项研究显示,70%的企业已经将大量工作负载迁移到公共云上。在这组人中,39%的人使用无服务器,40%的人使用容器,34%的人使用某种容器编排。这说明了无服务器技术的采用如何与容器的采用相匹配,但还不太清楚的是在生产应用程序中的使用范围。
什么是无服务器计算 serverless computing?
Serverless是一种开发方法,它用计算能力取代长时间运行的虚拟机,这种计算能力是按需产生的,使用后立即消失。
不管名称如何,运行应用程序时肯定会涉及到服务器。只是你的云服务提供商,不管是AWS、Azure还是Google云平台,都在管理这些服务器,而且它们并不总是在运行。
相反,您可以配置触发无服务器函数执行的事件,如API请求或文件上载。当该操作完成时,服务器将处于空闲状态,直到请求另一个操作为止,并且不会为空闲时间计费。
换句话说,无服务器计算是操作系统之上的另一种抽象,它提供了一种机制,可以在许多较小的部分中运行应用程序。它提供函数或模块来执行应用程序任务,这些任务可以按需执行,而不必担心底层操作系统和硬件基础设施。这些任务通常是短期的,并根据应用程序的要求定期运行。与云计算需要物理硬件的方式类似,无服务器计算也需要服务器来执行任何应用程序。
采用无服务器模式可以降低成本,加快部署速度,提高可扩展性,并减少过度工作的IT团队的管理时间。Serverless还非常适合支持各种微服务,并受到DevOps开发人员的欢迎。
无服务器计算的好处包括:
- 降低成本
- 无服务器管理
- 简化的可扩展性
- 快速部署和更新
- 简化的后端代码
- 更快的周转
什么是容器?
Docker认为,容器是一个轻量级的、独立的、可执行的软件包,包含运行它所需的一切:代码、运行时、系统工具、系统库和设置。
容器解决了当软件从一个计算环境中移出时运行软件的问题,它本质上是将软件与其环境隔离开来的。例如,容器允许您将软件从开发转移到暂存,从暂存转移到生产,并使其可靠地运行,而不考虑所有环境的差异。
容器不是像虚拟机那样虚拟化硬件堆栈,而是在操作系统级别虚拟化,多个容器直接在操作系统内核上运行。这意味着容器更加轻量级:它们共享操作系统内核,启动速度更快,与启动整个操作系统相比,只使用了一小部分内存。
有许多可用的容器格式。Docker是一种流行的、开源的容器格式,在Google云平台和Google Kubernetes引擎上都得到了支持。
采用趋势
根据一些调查和研究,无服务器和容器的采用率都在快速增长。以下是我挑选的一些亮点。
- Cloudability的一项研究发现,2017年第四季度,AWS用户的容器采用率增长了246%,高于第三季度的206%。与此同时,同一项研究发现,2017年第四季度AWS用户的无服务器采用率增长了667%,高于第三季度的321%。
- Serverless Inc.最近的一项调查发现,2018年,82%的记者在工作中使用Serverless,高于2017年的45%。超过53.2%的人表示,他们使用Serverless技术对工作至关重要。
- serverlessinc.的调查还显示,24%的通讯员在采用Serverless之前对公共云的体验有限或为零。20.2%的记者在1000人以上的大企业工作。
- Logz.io的DevOps Pulse调查发现,2018年60.71%的通讯员采用了集装箱编排,高于2017年的42.11%。
根据Rightscale的说法,serverless是一种正在增长的云服务:
开发人员应该如何选择Serverless架构和容器?
选择Serverless无服务器体系结构的开发人员将能够快速发布和迭代新的应用程序,而不必担心应用程序是否可以扩展。此外,如果应用程序没有看到一致的通信量或使用情况,那么无服务器计算将比容器更经济高效,因为代码不需要一直运行。
容器使开发人员能够更好地控制应用程序运行的环境(尽管这也需要更多的维护)以及所使用的语言和库。因此,容器对于将遗留应用程序迁移到云非常有用,因为可以更紧密地复制应用程序的原始运行环境。
混合方法
也可以使用混合体系结构,一些无服务器功能和一些部署在容器中的功能。例如,如果应用程序功能需要的内存超过无服务器供应商分配的内存,如果某个功能太大,或者某些功能需要长时间运行,而其他功能不需要长时间运行,则混合体系结构使开发人员能够在仍然使用无服务器支持的功能的容器的情况下获得无服务器的好处。
无服务器和容器也可以并排使用,而不是选择一个或另一个。事实上,许多公司通过混合方法获得了成功。他们:
- 在serverless满足其需求的工作负载中使用serverless
- 在没有容器的地方使用容器,例如,对于以下工作负载:
- 是长期的
- 需要更可预测的性能
- 需要比使用无服务器更容易实现的恢复能力
- 不断地大规模运行,每次调用付费的定价模式变得过于昂贵
结论
Serverless无服务器计算和容器都为希望扩展其工作负载的企业提供了优势。