企业思考未来要采用哪种计算基础架构,因而容器与无服务器之争成为了IT领域最热门的话题。
引言
容器是指将软件抽象层放在操作系统之上、应用代码层之下,这一理念在市场上发展迅猛、势如破竹。容器技术围绕Kubernetes作为行业标准实施了合并,这对增强云中工作负载的可移植性大有裨益。很多IT专家认为容器将成为企业计算领域的主导力量。
但在2017年,无服务器技术(更准确地说是“函数即服务[FaaS]”)的人气飙升程度不亚于容器。“无服务器”是指将计算基础架构从用户完全抽离;开发人员通过无服务器接口上传代码段,代码段在后台执行,无需调配和管理任何服务器、容器或其他计算单元。
容器还是无服务器?你的选择是什么?
其实容器与无服务器之间存在重叠。容器经常用于在公有云中支持无服务器前端,而企业也希望在防火墙后面效仿此设置。
Concur的首席软件工程师Dale Ragan说:“对开发人员来说,无服务器恰好是更新数据库方案的最简单方式,无需围绕架构添加大量繁琐内容。”但他对无服务器将超越环境中的其他接口这一观点表示怀疑。
有些企业的IT专业人员预言,长期来看,无服务器技术将走得更远,超越初始的容器阶段,成为更受青睐的企业应用部署方式。
美国的一家高等教育软件制造商Ellucian的高级DevOps总监Jason Shawn说:“它(无服务器)非常适合微服务架构的概念。”
支持者认为,无服务器函数就是将应用分解为最小的组件(如微服务)所得到的结果。
“你[使用无服务器]构建,可以实现不可思议的扩展性,因为你无需在给定机器上维护状态。”Shawn说。
无服务器是否会成为“第二个PaaS”?
无服务器技术仅适用于具有间歇性工作负载需求的应用。例如,Amazon Web Services (AWS) Lambda的函数最多可以运行五分钟。但是,有些企业的IT专业人员预计在未来,长时间运行的应用可以使用类似于Lambda的平台,并且无服务器最终将包括剥离基础架构管理(也就是我们已知的“平台即服务[PaaS]”)的所有公有云服务。
纽约时报集团首席技术官Nick Rockwell认为:“在大多数情况下,容器有些无关紧要,它的优势并不明显。在我看来,容器就是这个行业的一个错误。”
Rockwell的团队试用过Google Kubernetes Engine (GKE),这是一种容器即服务(CaaS)产品;但后来他们转而使用Google App Engine(行业中最早的PaaS产品之一)来提高开发人员的工作效率。一些处于前沿的DevOps团队已经不再青睐PaaS方案,因为这类方案限制了开发人员对于底层基础架构的选择,但是Rockwell说他认为这些限制实际上是件好事。
“你需要接受平台条件的约束,这意味着你别无选择,只能专注于编码应用的重要部分。”他说。
IDC的研究经理Gary Chen表示,无服务器是PaaS的一种形式,但FaaS方案实际上比之前的PaaS限制性更小,代表了PaaS未来的发展趋势。
Concur的Ragan表示,PaaS(无论基于函数与否)的问题在于其依赖关系。
“虽然Heroku [PaaS]在这些方面表现不错,但你仍会遇到主机本身方面的依赖关系问题,不一定是你部署的代码有问题。”他说,“这也是我们更倾向于容器的部分原因,因为构建一次镜像即可在各个服务器中使用,无需考虑更多,这种体验非常不错。”
IT行业的惯性会阻碍无服务器的快速发展
有些业界观察家认为,只要大型机没有退出舞台,市场便不会以压倒性的方式转向新产品,尤其是像无服务器这样的颠覆性产品。与往常一样,如果被问:“选择容器、无服务器、PaaS,还是其他产品”,大多数IT专业人员会回答说:“具体情况具体分析。”
如果是大型企业,选择无服务器也不是不可能,但容器可让您更灵活地选择云提供商、托管服务和自管理环境。
美国加利福尼亚州帕洛阿尔托的一家业务采购软件公司的John Mitchell表示,对于重量级数据库等大规模的有状态应用,无服务器的成本实际上比容器要高,因为此类应用需要持续处理数据并持续调用函数。
“如果说过去20年我们发现了什么,那就是IT生态系统没有变得越来越简单、越来越小。”Mitchell说道,“实际上,它变得越来越多样化,我认为即使是很强大的函数也不能改变这种趋势。”
IBM的工程师Sanjeev Sharma表示,在IBM,有兴趣对比容器与无服务器技术的人越来越多。他说,IT运维人员无论使用哪个技术来更轻松完成管理工作,都有很长的路要走。与FaaS相比,容器的概念更易于被主流IT界接受。
“毕竟很多人都不能正确地管理虚拟机或云,我很难相信他们能够驾驭这两种技术。”Sharma说道,“容器和无服务器可让运行的实例数量增加好几个量级,如果他们不能理顺企业的运维或管理工作以处理如此多的实例,我不知道他们如何能运用好这两项技术。”
相对于无服务器,容器的另一项优势是,在Kubernetes互操作性方面容器已经实现了跨云标准,而无服务器社区仍未制定出一个统一的开源方案。很多相互竞争的开源FaaS项目承诺在云之间实现类似于Kubernetes的可移植性,但是没有一个能够真正做到。
在过去几年,软件容器已经成为一项重要事物。Gartner数据显示,到2016年年底,有25%的工作负载在部署时采用了容器。容器的广泛采用主要受到开发人员的推动,但仍然面临一些挑战:如何运维和管理大规模地安全运行这些容器的环境。
在过去两年内,行业从PaaS转向了CaaS而不是FaaS。PaaS中的领军产品Pivotal Cloud Foundry 2.0提供了Cloud Foundry Container Runtime,同时Pivotal管理层表示,他们打算就如何针对不同应用使用三种接口(无服务器、PaaS和容器)向客户提供建议。
鹿死谁手仍未知,但无服务器势头迅猛
SAP Ariba的Mitchell认为,大多数现代企业应用的开发是由“泡沫”组成的(他说的“泡沫(froth)”,即调用底层服务及其他少量内容的代码层),而这尤其适合无服务器平台。
Mitchell并没有预测这是否会一直是企业工作负载的主流,但其他人对此持肯定意见。
Fong说,无服务器平台在后台非常复杂,但用户无需担心这一点,也无需担心应用的内置恢复能力。无服务器环境中的每一个函数都是独立的,丢失一个函数不会影响其他函数。