无服务器计算正在迅速兴起,随之而来的是对能够使其在企业中工作的熟练专业人员的需求。体系结构是命运,因此设计和规划企业的无服务器之旅的能力现在是一项关键技能。经验丰富的从业人员最近发表的两篇文章提供了有关开发功能良好的无服务器环境所需的见解。
在最近的一篇文章中,ThoughtWorks的首席开发人员Wisen Tanasa讨论了无服务器架构的要点。这些是确保无服务器成功的特征:
进入门槛低: “开始在无服务器架构中运行代码是相对简单的,” Tanasa说。“您可以按照任何教程进行入门,并使代码在生产级生态系统中运行。”
无状态: “功能即服务或FaaS是短暂的,因此您无法在内存中存储任何内容,因为运行代码的计算容器将由平台自动创建和销毁。因此,无状态是无服务器中的特征建筑。”
弹性: “您使用的大多数无服务器服务都被设计为高度弹性的,您可以将其从零扩展到允许的最大值,然后再回零,主要是自动管理。弹性是无服务器体系结构的特征。”
分布式: “一旦您更多地使用FaaS,您还将发现您的部署单元,功能比您以前所习惯的要小。因此,默认情况下,无服务器架构是分布式的—您拥有许多组件通过网络进行集成。您的体系结构还将包括将诸如身份验证,数据库,分布式队列等服务组合在一起。”
事件驱动: “无服务器平台提供的许多BaaS自然会支持事件。这是第三方服务向其用户提供扩展性的好策略,因为您将无法控制其服务的代码。由于您将在无服务器架构中使用大量BaaS,因此架构受特性驱动。”
除了无服务器系统的特性外,新兴的无服务器架构师还应该具备一些特定技能。Amazon Web Services的专业解决方案架构师Justin Pirtle最近 描述 了掌握无服务器架构所需的技能(在他的帖子中,他还指出了相关的AWS资源:)
了解API和微服务设计。“随着转向基于微服务的体系结构,分解单片应用程序和分离依赖关系比以往任何时候都更加重要,” Pirtle说。
了解事件驱动的体系结构和异步消息传递模式。Pirtle指出:“在构建事件驱动的体系结构时,无论您是要寻找简单的队列和消息缓冲还是更复杂的基于事件的编排模式,了解启用异步消息传递和集成的机制都是很有价值的。”
掌握分布式微服务环境中的工作流程编排。他解释说:“在分布式微服务体系结构中,您必须以不同于传统的基于数据库的ACID事务的方式设计协调的事务,而传统的基于数据库的ACID事务通常使用整体式关系数据库来实现。” “相反,您必须实现跨服务的协调顺序调用以及回滚和重试机制。”
了解无服务器部署自动化和CI / CD模式: “在处理大量微服务或较小的组件时,至关重要的是尽早将自动化和代码管理集成到您的应用程序中,以有效地创建,部署和版本化无服务器架构。”
评估无服务器安全性,身份管理,身份验证和授权。“计划并在实施强大的身份验证和授权功能的同时将身份管理集成到其应用程序中。无服务器应用程序中需要保护的其他领域包括:输入和请求验证;依赖关系和漏洞管理;安全秘密存储和检索; IAM执行角色和调用策略;静态/传输中的数据加密;计量和节流访问;以及法规遵从性问题。”
通过全面的日志记录,指标和跟踪来熟悉应用程序的可观察性: “在将您的应用程序投入生产之前,请确保您的应用程序在微服务或组件级别以及整个过程中都是完全可观察的,并通过全面的日志记录,各种粒度的指标,并进行跟踪以了解分布式系统的性能和最终用户端到端的体验。”