无服务器技术的采用肯定在增长,新兴产品公司在此基础上构建。 CloudZero 最近写了[详细

文章](https://www.cloudzero.com/blog/continuous-delivery-in-the-world-of-serverless) 关于他们为全无服务器系统实现持续交付的经验。

无服务器是一种新的范例,我们既不需要管理也不需要扩展运行我们代码的服务器。承诺是为客户提供价值所需的运营工作要少得多。

问题是代码部署单元现在是一个函数,而不是任意复杂的应用程序。部署还包括配置功能连接的托管服务和基础设施。这意味着需要新的工具和实践来实现最佳的开发人员生产力,与往常一样,这围绕着能够快速移动。正如 CloudZero 的 Ben Peterson 所指出的,“我们的目标是始终在不到五分钟的时间内从发货到生产”。这是如何实现的:

1/ 在开发和测试环境中复制无服务器云提供商的条件。例如LocalStack使用 Docker 在上提供 AWS 云 API(DynamoDB、S3、Kinesis 等)

本地主机。

2/ 使用框架来管理代码部署。例如,无服务器框架提供了用于在任何云供应商上配置和部署应用程序的单一工作流程。 AWS 客户可以使用SAM在代码中定义应用程序。无服务器应用程序没有单独的“构建”和“部署”步骤,因为没有开发人员需要管理的工件——这是由框架处理的,你的 CI/CD 工具应该原生支持这个工作流。

3/ 安全存储云密钥和其他机密。由于部署应该是自动化的,CI/CD 工具也需要支持这一点。例如,公司中的每个人都不一定可以访问 AWS 密钥,当然也不一定可以访问整个互联网。如果你的项目是开源的,持续集成是面向公众的,交付是公司私有的。例如,Semaphore为存储和管理组织范围的机密提供一流的支持,可以跨项目重复使用并与团队权限混合使用。

4/ 自动化测试仍然是工作流程的关键部分。适用于前端的通用 JavaScript 测试工具和后端功能的 Python / Go / Java 工具。无服务器功能很小,自动化测试应该运行得非常快。

5/ 拥抱多语言编程。例如,CloudZero 开发人员选择的语言是 Python,但他们也使用 Kotlin 和 Gradle 围绕 AWS Kinesis 构建数据管道。

6/ 将代码库 (CI) 的验证与交付 (CD) 分开。正如本·彼得森所说:

与我们的技术堆栈一样,我们管理的应用程序集也多种多样,其中包括开发工作流程和部署到我们 AWS 账户的要求。 Semaphore 通过在这些轴上提供灵活性来提供帮助——支持私有存储库以及管理公共存储库和贡献者分叉的能力,为不同分支的部署提供不同的逻辑,保持部署细节的私密性,以及从某些分支手动部署。支持每个分支的不同部署配置也非常有用。

如需更深入、更实际地了解开发和部署无服务器应用程序的细节,请阅读 CloudZero 博客](https://www.cloudzero.com/blog/continuous-delivery-in-the-world-of-serverless)上的完整文章[。

对于使用无服务器的有效 CI/CD,您有什么建议?随时在评论中分享。

这篇文章最初出现在Semaphore 博客

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐