容器vs Serverless:本质区别是什么?

  

容器vs Serverless:本质区别是什么?

  

在云计算领域,容器和无服务器计算已经占据了发展前列。

  

作者| Emra Samdan

  

翻译| bocloudresearch

  

一点历史

  

在不久以前,应用程序的开发,部署和维护要比现在复杂得多,耗时也多。在最初,维护不仅需要修复应用程序的代码,还需要修复对物理机器的支持。保持服务器,硬件和软件的更新也是非常关键的任务。

  

在本世纪初,一种名为“基础设施即服务(IaaS)”的新模式迅速流行起来.IaaS提供了从第三方提供商租用远程服务器和虚拟机的可能性,这些提供商可以完全负责管理硬件,网络和预订。

  

IaaS出现之后,消除开发人员的所有非编码职责来简化开发人员工作,这一想法推动了新方法,模型和服务的创新。

  

容器是什么?

  

码头工人的官方网站提供了以下简短而优雅的定义:“容器是一个标准的软件单元,它将代码及其所有依赖项打包,从而使应用程序在不同的计算环境之间快速,可靠地运行。换句话说,通过使用容器,开发人员可以确保他们的应用程序可以在任何云平台或本地服务器上运行。在某些方面,容器类似于虚拟机,比如两者都是隔离资源。但是,虚拟机模拟物理设备,而容器创建应用程序层的抽象。

  

无服务器计算是什么?

  

在无服务器计算中,整个应用程序或应用程序的一部分被解耦为多个函数,每个函数都响应诸如HTTP请求,新消息到达消息队列,或在存储中保存或修改新对象等时间触发的。平台可以在特定的时间或周期运行这些函数,这对cron作业(定时任务)很有帮助。

  

要使此系统工作,开发人员只需编写功能代码,并将其及其依赖项打包到zip文件中,然后将该zip文件发送到无服务器端点,由提供商负责供应和扩展。

  

无服务器的关键特性之一是“按需付费”模型,在这种模型中,公司仅按函数的实际执行时间付费。如今,AWSλ应该是最受欢迎的无服务器提供商。

  

容器和无服务器有什么共同之处吗?

  

是的。现在,无服务器和容器都很流行,它们允许开发人员专注于自己的代码而不是基础设施,这极大地提高了开发速度。容器和serverless都非常适合于微服务和基于组件的体系结构。在使用它们时,部署和扩展通常比使用传统的单体架构更快,更具成本效益,因为你操作的是应用程序的一小部分,而不是整个应用程序。虽然容器和serverless有这些共性,但是每种技术都有自己的优势,弊端和用例。

  

容器化的优势

  

容器的第一个优势是可移植性。由于容器已经包含了它需要运行的所有内容,因此只需放置一台安装了容器引擎的机器即可运行。容器与平台无关,因此它们可以运行在Linux、Windows、macOS,便,码头工人,群或Kubernetes上。它们甚至可以在另一个容器中运行。

  

在计算资源使用方面,容器也比虚拟机更高效。尽管容器和虚拟机都是虚拟化的,但是虚拟机会使用自己的操作系统来模拟整个计算机,因此会消耗更多的资源,另一方面,容器可以共享同一操作系统,从而使操作系统更小,更快地启动和关闭。

  

容器的另一个好处是允许开发人员完全控制应用程序。虽然这意味着必须手动配置系统设置,但这也意味着拥有真正的灵活性。这在serverless上是无法实现的,因为无服务器的所有内容都是由云提供商管理的。

  

容器的用例

  

当我们想要将一些大型的单体应用程序重构为更小的独立部分,以便迁移到微服务体系结构并获得更好的性能,可测试性和扩展速度时,容器确实是很有帮助的,例如,将以前的大型应用程序拆分为几个独立的服务:其中一个负责用户管理,另一个负责转换媒体文件等。每个服务都可以轻松扩展,以便在其职责范围的负载增加时提供更好的性能。但这对于单体应用程序来说是不可能实现的,在单体应用程序中,需要向整个系统添加新实例,这既昂贵又耗时。

  

因此,容器适合于长时间运行的应用程序,以及具有特定系统需求的应用程序,如果没有对系统的完全控制,这些应用程序很难设置。

  

Serverless的优势

  

由于上面提到的“按需付费”模型,托管无服务器应用程序的成本可能比使用任何其他方法都要低得多。无需为功能的空闲时间付费,如果没有流量,那么每月的账单上就不会有费用。几乎所有无服务器的提供商都有免费层,其中包括每月固定数量的请求和执行时间。通常情况下,所提供的数量足以使小网站或初创公司免费运行。

容器vs Serverless:本质区别是什么?