InfoQ|开发运维配置繁杂,是时候给应用架构做减法了

“Less is more”是路德维希·密斯·凡德罗在建筑领域提出的观点 , 近些年来 , 这一观点不断被用于生活中的其他领域 。 在软件开发世界中 , 也有对“Less is more”这一观点的架构理念 , 这就是如今逐渐盛行的“Serverless 架构” 。
十多年前 , 主流的应用架构都是单体应用 , 当时的开发者们既要关注所需的计算、存储资源 , 还要关注最底层的服务器等资源 , 同时当企业业务规模开始激增 , 导致开发和运维难度更大 。 随着容器技术的衍生及应用 , 虽然用户可以从对基础服务器关注中抽离出来 , 但其投入的运维精力依然绕不开的是与业务相关的 CPU、内存、网络等资源 。
如今在资源投入、架构理念、架构模式向越来越精简 , 越来越“物尽其用”的演进中 , Serverless 可以说是“Less is more”的最佳实践 。 它让开发人员不再操心运行所需的资源 , 精简自己的开发流程 , 将关注点重点放在产品代码、业务逻辑上 , 同时只需为实际消耗的资源付费 。 它使得程序开发架构中只保留了重要的、有价值的资源;其余的资源要么从开发主体中精简剔除 , 要么隐藏在选择性可见的界面中 , 用户随用随取 。
1Serverless 是“速度”与“激情”的再现 Serverless 是随着云计算、虚拟化的延伸发展历程演进而来的 。 有人说 , 未来将是 Serverless 的天下 。 那么 , Serverless 究竟有哪些优势 , 使得它受到开发者们如此高的重视呢?

  • 节省维护成本 , 可实现自动伸缩
首先 , Serverless 是一个基于云的服务 , 服务提供者帮助处理了服务器端的基础 IT 工作 , 比如把云部署从 x86 机器码(99% 的云计算机使用 x86 指令集)提升到了高级语言层面、管理操作系统、数据库版本升级等等 。 因而开发者们只要编写代码并部署它即可 , 不需要处理任何后端服务器的任务 。
【InfoQ|开发运维配置繁杂,是时候给应用架构做减法了】同时 , 相比于传统的非 Serverless 架构 , 这种架构模式带来的另一大优势是 , 开发者无需为过度配置或意外的负载峰值提前做好分配计划 。 因此 , 在企业级架构侧常常会遇到的服务伸缩性等问题 , Serverless 也可以做到自动伸缩 , 或方便开发者对容量进行简单的手动设置 。
  • 节省人工成本 , 复杂工作都可以交给机器
一方面 , Serverless 有相对标准的编程环境 , 减少了对服务器和容器部署所耗费的操作成本 。 另一方面 , 在所有的应用程序架构中 , Serverless 应用程序拥有的代码量最少 , 且恰当的 Serverless 架构在相互依赖性上较少 。
对于开发者来说 , 这意味着更少的开发逻辑 , 用更少的代码来定义开发、测试、部署、运维 。 另外从应用程序角度来看 , 无服务器的功能基本上是一种外部服务 , 它不需要紧密集成到应用程序的容器生态系统中 。
  • 缩短交付时间与周期 , 节省开发成本
随着产品及软件版本迭代周期的速度越来越快 , 一些云厂商在面向客户的咨询调研中发现 , 越来越多的客户已不满足于缩短开发与测试的周期 , 而是需要更短的交付周期——从新产品或功能的概念化到以 MVP 部署到生产环境的整个时间 。
在应对该问题的解决方案上 , Serverless 提供了巨大的作用 。 部分客户在使用该架构及应用程序后 , 能实现在几天时间内完成项目的部署 。
总的来说 , Serverless 可以称得上是当前各类新架构中“激情与速度”的再现——在降低人工成本、降低风险、降低基础设施成本、提高扩展性、缩短交付时间上 , 都形成了绝对的杠杆力 。 目前 , Serverless 的适用场景非常广泛 , 或者说它或将成为大多数交付链中的一部分 。
不过 , 必须要提的一点是 , Serverless 所具备的优势并不等于它是万能的 。 很多开发者基于对 Serverless 优势的理解 , 容易陷入“它是容器替代方案”的认知误区 。 而实际上 , Serverless 与容器针对的是不同的用户需求 。


推荐阅读