FinOps有望降低企业50%+的云成本! 了解详情
写点什么

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

  • 2020-04-12
  • 本文字数:2883 字

    阅读完需:约 9 分钟

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

无服务器计算是当前的一项热门话题,甚至热过了 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 毫秒的触发次数计费。实际成本通常也相当低,这里有部分原因是因为无服务器涉及的功能很小型,执行相对简单的任务,并且在常规的容器中执行,开销很小。

低维护成本

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

简易性

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


无服务器计算的应用场景

什么时候你会用到无服务器计算?可以考虑如下场景与可能:


处理网站或移动应用程序的后端任务。

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

处理实时数据流并上传。

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

负责高容量的后台进程。

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

无服务器计算的局限

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


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


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


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

容器在哪些方面做得更好

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

你可以做得更大

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

你可以完全掌控

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

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

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

协同工作

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


另一方面,无服务器计算非常适用于可在后台运行或外部服务访问的单个任务。基于容器的系统可以将这些任务交给无服务器应用程序,而不必占用主程序的资源。对无服务器应用程序来说,它可以为多个客户端提供服务,并且在容器系统中可以与其他无服务器应用程序完全独立地进行更新、升级和切换。

结论

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


2020-04-12 20:40437

评论

发布
暂无评论
发现更多内容

【云主机】2022年云主机管理软件排行榜

行云管家

云计算 云主机 华为云 移动云 云主机厂商

员工福利平台:让员工福利更加“鲸彩FUN粽”

鲸品堂

福利 平台

首评 | 阿里云顺利完成国内首个云原生安全成熟度评估

阿里巴巴云原生

阿里云 云原生

王者荣耀商城异地多活架构设计

Dean.Zhang

多张图解,一扫你对多线程问题本质的所有误区

华为云开发者联盟

Java 开发

你的App是信息化时代的还是数字化时代的

FinClip

小程序开发

Java中的阻塞队列

周杰伦本人

6月月更

PHP 对接微信公众号订阅消息详细教程

CRMEB

服务器运维环境安全体系(上篇)

融云 RongCloud

网络安全

Electron框架XSS TO RCE简析

美创科技

漏洞

大数据培训Hive到Spark离线计算实践

@零度

spark hive 大数据开发

安全高效的云主机批量管理软件是什么?有哪些功能?

行云管家

云主机 云运维

变量 var const let 的区别

大熊G

JavaScript 前端 前端教程 6月月更

融云一图看懂:社死的“谭某某”,霸屏的信息安全

融云 RongCloud

在映客的虚拟KTV里唱了一首“爱你”

ZEGO即构

音视频 虚拟KTV 线上K歌

选择天翼云混合云管理平台的五大理由

天翼云开发者社区

专为云原生、微服务架构而设计的链路追踪工具 【SkyWalking介绍及搭建】

掂掂三生有幸

云原生 Skywalking ,docker 微服务框架 6月月更

给小白的 PG 容器化部署教程(下)

RadonDB

数据库 postgresql 容器化 RadonDB

虚拟机哪款好用?多台虚拟机管理用什么软件好?

行云管家

软件 虚拟机 IT运维

斐波那契系列

开发微hkkf5566

征文投稿丨基于轻量应用服务器搭建Hexo个人博客

阿里云弹性计算

node.js nginx git Hexo 轻量应用服务器

【LeetCode】 删除二叉搜索树中的节点Java题解

Albert

LeetCode 6月月更

技术分享| 如何部署安装分布式序列号生成器系统

anyRTC开发者

分布式 后端 音视频 服务器 Tinyid

从入门到一位合格的爬虫师,这几点很重要

开发微hkkf5566

Microsoft  Office  MSDT 代码执行漏洞

郑州埃文科技

网络安全 漏洞分析 漏洞缓解

互联网拓扑是怎样构成的?又代表了什么?

郑州埃文科技

互联网拓扑 网络空间地图

虚拟主机、WordPress 主机和云主机之间的区别

海拥(haiyong.site)

6月月更

好声音不同凡响,泥炭耳机618重磅新品来袭

江湖老铁

Spring Authorization Server(AS) 从 Mysql 中读取客户端配置、用户

Zhang

Java spring security spring as

Hoo研究院|一文速览风投机构NGC Ventures的加密布局

区块链前沿News

投资 VC Hoo NGC

关于fastjson出现反序列化远程代码执行漏洞的通知

天翼云开发者社区

  • 需要帮助,请添加网站小助手,进入 InfoQ 技术交流群
无服务器计算将会取代容器?_文化 & 方法_Rancher_InfoQ精选文章