35

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

 4 years ago
source link: https://www.tuicool.com/articles/M7VNb2Z
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

近年来,构建和发布软件的方式发生了重大转变。这主要围绕着微服务,将代码分解成小组件,使用基础设施即代码,并使用 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 等)过去是验证和控制每个开发人员变更的看门人。现在,它们更像是一个卫星单位,推动政策落实,制定最佳实践和标准。它们不再是生产瓶颈,它们提供了组织范围的平台和赋能解决方案。

qu2IR3u.jpg!web

一切都是代码

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

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

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

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

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

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

3E3uman.png!web

无服务器时代的工具助手

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

F3qIfuQ.png!web

代码

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

构建和测试

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

安全和治理

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

打包和发布

构建无服务器应用程序是将微服务连接到一个单元中。例如,你可能正在使用 Amazon API 网关AWS LambdaAmazon 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/


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK