软件开发架构师

使用 GitOps 在无服务器时代构建现代化 CI/CD 管道-InfoQ

运维 4 2019-09-02 23:16

近年来,构建和发布软件的方式发生了重大转变。这主要围绕着微服务,将代码分解成小组件,使用基础设施即代码,并使用 Git 作为将所有代码粘合在一起的唯一真相来源。

在本文中,我将讨论现代软件开发的转变和不同步骤,以展示无服务器领域的可能解决方案。此外,我列出了为这个时代而设计的有用的工具。

什么是无服务器?

在深入无服务器开发和工具的奇妙世界之前,我先介绍一下我所说的无服务器。AWS 网站谈到了四个主要好处:

  • 无服务器管理
  • 灵活扩展
  • 按价值付费
  • 自动高可用

对我来说,无服务器是指你不需要自己管理和扩展任何基础设施。

在我的公司 Datree.io ,我们在 AWS Fargate 上运行 95% 的工作负载,在 AWS Lambda 上运行 5% 的工作负载。我们是一家无服务器公司;我们的 AWS 帐户中没有任何 Amazon EC2 实例。有关更多信息,请参见以下内容:

什么是 GitOps?

Git 是一个免费的开源分布式版本控制系统,它可以快速高效地处理从小型项目到大型项目的所有项目。

CI/CD 顾问 Luis Faceira 认为,GitOps 是一种工作方式。你可以将其视为一种方法,其中所有内容都始于 Git 也终于 Git。以下是一些关键概念:

  • Git 作为系统真相的单一来源;
  • Git 作为我们操作(创建、修改和销毁)所有环境的单一位置;
  • 所有变更都是可观察、可验证的。

在云出现之前你是如何构建软件的

在前云时代的瀑布式开发中,你曾经有单独的团队分别负责开发、测试、安全、运营、监控等等。

现在,在大多数组织中,都有一个向开发人员完全自治和开发人员拥有整个生产路径的过渡。开发人员是国王或王后

这些团队(Ops、安全、IT 等)过去是验证和控制每个开发人员变更的看门人。现在,它们更像是一个卫星单位,推动政策落实,制定最佳实践和标准。它们不再是生产瓶颈,它们提供了组织范围的平台和赋能解决方案。

使用 GitOps 在无服务器时代构建现代化 CI/CD 管道-InfoQ-1

一切都是代码

随着向开发人员完全拥有整个管道的过渡,开发人员可以自动化所有内容。我们比以往任何时候都有更多的代码,过去是手工操作的过程现在用代码来描述。

这是一个很好的转变,以下是其中的一些好处:

  • 自动化:通过将所有东西存储为代码,所有东西都可以在瞬间自动化、重用和重建。
  • 不可变:如果出现任何错误,再次从存储的配置创建它。
  • 版本控制:可以应用和恢复变更,并跟踪到做出变更的单个用户。

GitOps:Git 已成为系统真相的单一来源

第二个主要的转变是,现在所有的东西都在一个地方!Git 是存储所有代码和启动所有操作的地方。无论是测试、构建、打包还是发布,现在一切都是通过拉请求触发的。

一切事物的代码化使这一点被放大。

使用 GitOps 在无服务器时代构建现代化 CI/CD 管道-InfoQ-2

无服务器时代的工具助手

市场上有很多有用的工具,下面是一些为无服务器而设计的工具。

使用 GitOps 在无服务器时代构建现代化 CI/CD 管道-InfoQ-3

代码

始终将代码存储在源码控制系统中。近年来,越来越多的功能被编码,如 BI、Ops、安全和 AI。对于新晋开发人员来说,某些功能是否应该使用源代码控制有时候并不是很明显。

构建和测试

我见过的最常见的错误是在 GUI 中手动配置构建作业。这对于小型 POC 来说可能还不错,但它是不可扩展的。你应该将你的作业编入 Git 存储库中。这里有一些工具可以帮助你构建和测试:

安全和治理

当以无服务器方式工作时,最终会出现许多 Git 库。代码包的数量可能会很惊人。对统一代码标准的需求依然如故,但是,现在要在你的研发组织中强制执行它要困难得多。以下是一些可能可以帮助你应对挑战的工具:

打包和发布

构建无服务器应用程序是将微服务连接到一个单元中。例如,你可能正在使用 Amazon API 网关 AWS Lambda Amazon DynamoDB 。你应该使用一个打包器将配置保存在一个位置,而不是每一个单独配置。这使你可以在多个环境中轻松地对应用程序进行版本控制和复制。这里有几个打包器:

程序包

当使用许多不同的无服务器组件时,你应该创建小的工具包,以便能够跨不同的 Lambda 函数导入。你可以使用特定于语言的存储库,如 npm 或 RubyGems,或者使用更全面的解决方案。这里有几个程序包工件库,允许托管多种编程语言:

监控

在处理无服务器应用程序时,这部分尤其棘手,因为所有内容都被分割成小块。使用支持这种工作模式的监控工具非常重要。下面是一些可以处理无服务器的工具:

总结

无服务器时代带来了许多转变,比如对整个管道进行编码,Git 是唯一的真相来源。这并不意味着我们过去遇到的安全、日志记录等问题都已经消失,你应该继续解决这些问题,并利用工具使你能够专注于你的业务。

关于作者

Shimon Tolts是 Datree.io 的首席技术官兼联合创始人。他专门研究开发工具和基础设施,并运营了一家 100% 无服务器的公司。

原文链接:

https://amazonaws-china.com/cn/blogs/aws/building-a-modern-ci-cd-pipeline-in-the-serverless-era-with-gitops/

文章评论