无服务器计算将会取代容器?

无服务器计算是当前的一项热门话题,甚至热过了Docker容器。前端

这么讲是说无服务器计算要成为容器的替代品吗?或者它是能够和容器一同使用的另外一项流行技术吗?数据库

在这篇文章中,我将为你介绍无服务器计算须要了解的内容,以及该如何将它融于你的IT战略中。编程


“无服务器”并非真的没有服务器

首先须要澄清一点:固然可能你们也都有所了解,无服务器计算并非意味着没有服务器。它是一个基于云的服务,和云上的其余服务同样,运行在服务器上。后端

也就是说,称它为无服务器,是由于服务提供者负责处理了全部的服务器侧IT,而你所须要作的只是编写代码并部署它。无服务器计算提供者处理了除此以外几乎全部的事务。这样在使用体验上就是一种无服务器的,虽然底层基础架构并非如此。安全

无服务器计算如何工做

那么它是如何工做的呢?举最流行的一个无服务器计算平台AWS Lambda为例。使用它,你须要编写代码(C#、Java、Node.js或Python),设置一些简单的配置参数,而且将全部的内容(以及所需的依赖项)上传到Lambda。服务器

在Lambda术语中,上传的软件包被称做功能函数(function)。可经过运行在AWS服务(如S3或者EC2)上的应用程序调用该功能。上传Lambda后,Lambda会将你的功能部署在一个容器中,这个容器会在该函数完成执行以前一直存在,以后会释放掉。架构

须要注意的是,Lambda在这里负责配置、部署和管理容器,而你所作的只是提供在容器中执行的代码,其余的工做都交由后台完成。编程语言

这会是无服务器的天下吗?

那么这是否是就意味着咱们如今的软件开发人员和IT团队已再也不须要直接处理容器或具体的后端IT了呢?能够只编写代码,把它丢到Lambda,让AWS来处理全部其余的事情吗?若是这听起来让人难以置信的话,那么就只有一种解释——这是不可能实现的。函数

若是你的DevOps交付链中尚未包含它,AWS Lambda所表明的这类无服务器计算将成为很是有价值的资源。微服务

然而,它只能成为交付链中的一部分。虽然无服务器计算在大多数任务中都很适用,但距全面替代并部署和管理本身的容器还相距甚远。实际上无服务器计算应该和容器一同工做而不是替换它们。

无服务器计算的优点

那么,无服务器计算的优点有哪些呢?当用它来提供服务时,无服务器计算有如下优势:

花销低廉

使用无服务器计算,一般状况下只根据实际使用的时间和流量计费。例如,Lambda的计费标准是以每100毫秒的触发次数计费。实际成本一般也至关低,这里有部分缘由是由于无服务器涉及的功能很小型,执行相对简单的任务,而且在常规的容器中执行,开销很小。

低维护成本

在无服务器平台上部署某个功能时,平台为你作了绝大部分的工做。除此以外,你无需再为此设置容器、系统策略和可用性级别,也无需处理任何后端服务器的任务。若是你须要的话,你还可使用自动伸缩,或是对容量进行简单的手动设置。

简易性

标准的编程环境、没有服务器和容器部署的开销,你能够更加专一于编写代码。从应用程序角度来看,无服务器的功能基本上是一种外部服务,它不须要紧密集成到应用程序的容器生态系统中。

无服务器计算的应用场景

何时你会用到无服务器计算?能够考虑以下场景与可能:

1 处理网站或移动应用程序的后端任务。无服务器功能能够从站点或应用程序前端接受请求(例如,来自用户数据库或外部源的信息),检索信息并将其交回到前端。这是一个快速且相对简单的任务,能够根据须要执行,不多占用前端的时间或资源,且只为后端任务的实际持续时间计费。

2 处理实时数据流并上传。无服务器功能能够清理、解析并过滤传入的数据流,处理上传的文件,管理来自实时设备的输入,并处理与间歇性的或高吞吐量的数据流相关的主要任务。使用无服务器功能,能够将资源密集型的实时进程从主应用程序移出(避免占用主应用的资源)。

3 负责高容量的后台进程。你可使用无服务器功能将数据移动到长期存储上,以及转换、处理和分析数据,并将指标转发到分析服务上。好比,在销售点系统中,无服务器功能能够用来协调库存、客户、订单和交易数据库,以及间歇性的任务,如补货和标记差别。

无服务器计算的局限

不过无服务器计算有一些很是明确的局限。以Lambda为例,它对功能函数的大小、内存占用和利用时间有内部限制。

这些限制以及有限的本地支持编程语言,并不必定是基础级别的无服务器计算所固有的,可它们也反映出系统的实际限制。对无服务器计算来讲,让功能函数体量小,避免占用太多系统资源,是很是重要的,这样能够避免出现数量较少的高需求用户阻碍其余用户或者令系统过载的问题。

无服务器计算的基本性质也会产生一些内在的限制。例如,大多数监视工具若是使用无服务器功能可能很难实现,由于通常状况下你没法访问到该功能所在的容器或者容器管理系统。

调试和性能分析也可能所以被限制在至关原始或使用间接的方式。速度和相应时间也可能不均匀;这些限制以及对大小、内存、持续时间的限制可能会影响到它在性能优先状况下的使用。

容器在哪些方面作得更好

容器能够比无服务器功能作得好的事情能够列举出很是多,能够用一篇完整的文章作详细的介绍。咱们在这里要作的只是指出一些无服务器功能不能替代基于容器的应用程序的主要方面。

你能够作得更大

基于容器的应用程序能够像你所须要的那样规模大而又复杂。例如,你能够将一个很是庞大而复杂的总体应用程序重构为一系列基于容器的微服务,彻底按照从新设计的系统要求定制新的体系结构。若是想要重构一样的应用程序而且在无服务平台上运行,可能会由于大小和内存限制遇到多个技术瓶颈。由此产生的应用程序可能由极其分散的微服务组成,而每一个碎片的可用性和延迟时间很是的不肯定。

你能够彻底掌控

基于容器的部署能够彻底控制单个容器和整个容器系统,以及它所运行的虚拟化基础架构。这样你能够设置策略、分配和管理资源,对安全性进行细化的控制,充分利用容器和迁移服务。而在另外一方面,使用无服务器计算,只能依赖于‘他人’而不能本身控制。

你有精力去调试、测试和监控

彻底掌控了容器环境,就能够全面了解容器内外的状况。这样就可以利用全部的资源进行有效的、全面的调试和测试,并能够在各个层面上进行深刻的性能监控。你能够识别和分析性能问题,并在微服务的基础上微调性能,来知足对系统的具体性能需求。在系统、容器管理和容器级别上的监控访问还能够对全部这些层面进行完整、深刻的分析。

协同工做

目前的实践中发现当无服务器计算和容器在一块儿工做时效果时最好的,这也须要每一个平台都作得很好。基于容器的应用程序,并结合全特性的系统来管理和部署容器,这对于大型和复杂的应用程序和应用程序套件(尤为是在企业或互联网环境)而言是最佳的选择。

另外一方面,无服务器计算很是适用于可在后台运行或外部服务访问的单个任务。基于容器的系统能够将这些任务交给无服务器应用程序,而没必要占用主程序的资源。对无服务器应用程序来讲,它能够为多个客户端提供服务,而且在容器系统中能够与其余无服务器应用程序彻底独立地进行更新、升级和切换。

结论

无服务器计算服务和容器服务之间是平台间的竞争吗?答案是:基本不是。基于容器和无服务器的计算正在当今不断发展的世界中,互相地为如今的云计算和持续交付软件提供更好的支持。

如需转载,请注明出处谢谢!

公众号:RancherLabs

官 网:http://cnrancher.com

相关文章
相关标签/搜索