Linux、Kubernetes、Ansible及新近兴起的Linux容器在企业中早已屡见不鲜。特别是容器技术,大大提升了应用程序部署的便捷性与执行效率。如今,越来越多的应用程序在构建之初就考虑到按需自助服务、资源池与快速弹性等核心云特性。
与此同时,也有不少企业仍在依赖传统的静态基础设施配置模型支持这类动态程度不断提升的新型应用。但在如今这个基于云、数据密集与事件驱动的世界当中,旧药方显然治不了新症状。
虽然传统服务器基础设施在某些工作负载中确实适用,但往往在基本思路上就与更高效率、更高敏捷性的目标有所冲突。传统服务器往往要求始终开启,并24/7全天候全容量运行;与之形成鲜明反差的是,这些昂贵的设备只需要偶尔处理一波短暂的容量峰值。另外,传统服务器还要求开发者提前了解其基础设施需求,这显然是给开发者戴上了手铐和脚镣。开发者希望做好自己份内的工作,而非分神于硬件组件和其他配置。
Serverless,即无服务器计算,有助于缓解这些挑战。虽然无服务器并不是什么新兴概念,但其仍然没有得到充分的运用甚至理解。这里我们要强调一句:任何已经在使用容器化应用程序开发体系的企业,都有必要认真研究无服务器计算框架。下面,我们将具体聊聊无服务器计算是什么,企业能够如何借此优化自身资源利用率(包括技术和人员两个方面),以及开源无服务器技术为什么能够为现代应用开发提供理想的补充。
定义无服务器计算
无服务器计算是一种云原生概念,使得企业能够将服务器、数据库甚至是应用程序逻辑的管理工作外包给云平台。在无服务器计算环境当中,开发者能够自由构建并运行应用程序,而不再被迫分心于缺乏差异化意义的底层基础设施。
有趣的是,无服务器计算并不是真的“没有服务器”,正如“无线”通信其实也有线一样。虽然最终用户确实不必用固定线缆把笔记本电脑同路由器连接起来,但整个体系依然要靠长达数千英里的光纤传输网络请求。无服务器也是这个道理:服务器还是有的,只是被平台或者云服务商从开发者那边抽象了出来。开发人员只需要把自己的应用程序打包到容器中,即可快速完成部署。
在处理整体式或其他遗留系统时,这种借助容器打包应用程序的能力尤其重要,有效消除了应用代码的重写需求。与之对应,传统的专有解决方案更适合从零开始构建应用程序。在将遗留应用程序交由容器打包之后,这些程序即可接受Kubernetes的编排,并根据需要以事件驱动的方式启动、或关闭,全程无需任何重写。
事实上,事件驱动模式也正是无服务器计算的核心优势之一。与始终开启、24/7全天候全容量运行的传统架构不同,无服务器资源仅在必要时启用。无服务器对数据科学项目大有裨益,包括各类人工智能与机器学习负载。在这类使用场景下,原始数据可能需要在摄取过程中进行转换或塑形。使用无服务器计算,这些工作负载同样不需要持续运行——只在数据摄取时按需执行即可。
Serverless 提高开发效率
拥有DevOps团队或基于容器开发方法的企业可能已经为开源生态系统的建设投入了资金。对他们来说,使用开源无服务器模型补充当前开发方法极具现实意义,因为这样的模型能够以更高效的方式支持原有工作。
另一方面,专有的无服务器解决方案往往迫使开发者放弃自己熟悉的代码构建与测试方式,这无疑是让用户“刚出虎穴、又入狼窝”,同样达不到最大程度提升生产效率的目标。借助开源无服务器框架,开发人员能够继续将现有工作流打包至容器当中,以不受干扰、毫无阻碍的方式推进工作进程。
开源技术还能减轻对于专业技能或额外培训的需求。不同于很多需要额外工具(例如无服务器数据库)才能正常运作的专有无服务器计算平台,开源解决方案不会给使用团队带来任何额外的工作流程或技术挑战。
虽然开源无服务器计算框架未必适合所有用例,但其在某些场景下确实拥有巨大的价值,例如在不同时期从多个来源提取数据。只要应用得当,无服务器计算将迸发出难以想象的能量,帮助企业真正在生产效率与敏捷性之间找到完美平衡点。