写点什么

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

  • 2019-09-25
  • 本文字数:2133 字

    阅读完需:约 7 分钟

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

本文是 Datree.io 首席技术官兼联合创始人、AWS 社区精英 Shimon Tolts 所写的一篇客座文章。他专门从事开发人员工具和基础设施研究,所经营的公司完全没有服务器。


近年来,软件构建和发布方式发生了重大转变。这些工作主要围绕微服务、将代码拆分成小组件、使用基础设施即代码,以及将 Git 用作粘合一切的单一事实来源展开。


在本文中,我们将讨论现代软件开发的转变过程和不同环节,以展示无服务器领域可行的解决方案。此外,我还列出了适用于当今时代的实用工具。

什么是无服务器?

在深入探讨无服务器开发和工具构建这一奇妙领域之前,我先介绍一下什么是无服务器。AWS 网站谈到了四大主要优势:


  • 无需管理服务器。

  • 可灵活扩展。

  • 付出与价值成正比。

  • 自动实现高可用性。

  • 对我而言,无服务器是指无需自己管理和扩展的所有基础设施。

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

  • io 案例研究

  • 在生产环境中迁移到 AWS ECS Fargate

  • CON320: Operational Excellence w/ Containerized Workloads Using AWS Fargate (re:Invent 2018)

什么是 GitOps?

Git 是免费的开源分布式版本控制系统,旨在快速高效地处理包括小型项目和超大型项目在内的所有内容。


CI/CD 顾问 Luis Faceira 认为,GitOps 是一种工作方式。您可以将其视为一种一切均以 Git 开始和结束的方法。以下是一些重要概念:


  • Git 是系统的单一事实来源

  • Git 是我们操作(创建、更改和销毁)所有环境的单一场所

  • 所有更改都是可观察/可验证的。

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

回首瀑布式云前时代,大家曾经有单独的团队负责开发、测试、安全性、运营和监控等工作。


现在,大多数组织正在向开发人员完全自主和开发人员拥有整个生产路径转变。开发人员是关键环节 :)


这些团队(运营/安全/IT/其他)曾是验证和控制所有开发人员更改的“守门员”。现在,它们更像是辅助部门,负责推进策略和制定最佳实践和标准。它们不再是生产瓶颈,而且可以提供组织范围的平台和支持解决方案。


汇编所有内容

随着向完全由开发人员拥有整个管道不断转变,开发人员可以实现所有内容自动化。我们拥有的代码比以往任何时候都多,过去手动执行的流程现在可用代码来描述。


我认为这是一个很好的转变。下面是这一转变的部分优势:


  • 自动化:通过将所有内容存储为代码,瞬间即可自动化、重复使用和重新创建所有内容。

  • 不可变的:如果出现差错,可以通过存储的配置重新创建。

  • 版本控制:可以应用和恢复更改,并可跟踪做出更改的单个用户。

GitOps:Git 已成为单一事实来源

第二项重大转变是所有内容现在可集中于一处! Git 是存储所有代码和所有运营开始的场所。无论是测试、构建、打包还是发布,现在所有内容都可通过 pull 请求触发。


汇编让这种情况愈演愈烈。


适合无服务器时代的实用工具

市面上有很多有用的工具,下面列出了一些适合无服务器的工具。


代码

始终将代码存储在源代码控制系统中。近年来,越来越多的功能实现了汇编,如商业智能、运营、安全性和人工智能。对于新手开发人员来说,有时不好确定是否应将源代码控制用于某些功能。


  • GitHub

  • AWS CodeCommit

  • GitLab

  • BitBucket

构建和测试

我发现,最常见的错误就是在 GUI 中手动配置构建作业。这种方法对小型 POC 来说可能是不错的选择,但它无法扩展。您应该汇编作业并将其置于 Git 存储库中。下面提供了部分有助于进行构建和测试的工具:


  • AWS CodeBuild

  • CodeFresh

  • GitHub Actions

  • Jenkins-x

  • CircleCI

  • TravisCI

安全性和监管

当以无服务器方式工作时,您最终会拥有许多 Git 存储库。代码包的数量可能十分惊人。对统一代码标准的需求一如既往,但现在强制研发部门实施这些标准会更加困难。下面是一些可能有助于您应付这一难题的工具:


  • Snyk

  • Datree

  • PureSec

  • Aqua

  • Protego

捆绑和解绑

构建无服务器应用程序是指将微服务连接成一个整体。例如,您可能会使用 Amazon API Gateway、AWS Lambda 和 Amazon DynamoDB。您应使用捆绑程序将配置保存在一处,而不是单独执行每项配置。这样可以针对多个环境轻松对应用程序进行版本控制和复制。下面是一些捆绑程序:


  • Serverless Framework

  • AWS Serverless Application Model (AWS SAM)

打包

当使用许多不同的无服务器组件时,您应该创建小型工具包,以便能够跨不同 Lambda 函数导入。您可以使用某语言专用的存储库(如 npm 或 RubyGems),也可以使用更全面的解决方案。下面是一些允许托管多种编程语言的程序包构件库:


  • GitHub Package Registry

  • Jfrog Artifactory

  • Sonatype Nexus

监控

在使用无服务器应用程序时,这部分特别棘手,因为所有内容都分成了小块。请务必使用支持该工作模式的监控工具。下面是一些可以处理无服务器的工具:


  • Rookout

  • Amazon CloudWatch

  • Epsagon

  • Lumigo

  • NewRelic

  • DataDog

小结

无服务器时代带来了许多转变,例如汇编整个管道,Git 成为了单一事实来源。这并不意味着我们过去遇到的安全性、日志记录等问题已经消失,您应该继续解决这些问题,并充分利用各种工具,以便您能够集中精力处理业务。


本文转载自 AWS 技术博客。


原文链接:


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


2019-09-25 15:201085
用户头像

发布了 1963 篇内容, 共 168.5 次阅读, 收获喜欢 82 次。

关注

评论

发布
暂无评论
发现更多内容

抢先一步,获取最全测试开发岗求职攻略

霍格沃兹测试开发学社

如何使用 NFTScan NFT API 在 Blast 网络上开发 Web3 应用

NFT Research

API NFT\ NFTScan

金三银四 | 软件测试开发岗求职攻略来袭,快来抢先一步!

测试人

软件测试

DApp 链上合约质押挖矿系统开发丨技术搭建

l8l259l3365

开源分布式数据库 TiDB 架构以及HTAP 的实现

TiDB 社区干货传送门

TiDB 底层架构

Java jdbc 驱动 maxPerformance 配置避坑

TiDB 社区干货传送门

开发语言 应用适配 数据库连接

月活超 1.1 亿,用户超 4 亿,你也在用的「知乎」是如何在超大规模 TiDB 集群上玩转多云多活的?

TiDB 社区干货传送门

实践案例 社区活动 数据库前沿趋势 OLTP 场景实践

人工智能如何让测试更智能更高效?

霍格沃兹测试开发学社

MES系统跟车间设备怎么连接?设备管理后的好处有哪些?

万界星空科技

数据采集 mes 设备管理 万界星空科技 智能设备管理

实时计算Flink集成开源连接器-TiDB CDC Connector案例实践

TiDB 社区干货传送门

实践案例 应用适配 数据库连接

数据本地性如何助力企业在云上实现高效机器学习

Alluxio

机器学习 gpu 模型训练 云存储 Alluxio

cURL 命令全面解析:提高工作效率

Apifox

程序员 前端 后端 API curl

Puppet 2024年度报告:平台工程发掘 DevOps 无限潜质

SEAL安全

DevOps 平台工程 puppet

【干货】需求驱动的配货

第七在线

详细教程:如何制作产品介绍二维码(二)

草料二维码

二维码 草料二维码 干货分享

TIDB 分区表使用实践

TiDB 社区干货传送门

6.x 实践

通过TiOperator备份数据到共享存储

TiDB 社区干货传送门

实践案例 集群管理 故障排查/诊断 备份 & 恢复

在 GraalVM 静态编译下无侵入实现可观测探索

阿里巴巴云原生

Java 阿里云 云原生

低代码无法取代程序员,但为什么很多程序员却反感低代码?

天津汇柏科技有限公司

程序员 低代码 数字化转型

AI力量:如何让测试更智能更高效

测试人

软件测试

章文嵩等技术大咖共同探讨企业数据治理和降本增效策略运用!

AutoMQ

#云原生 KubeBlocks #Kafka #OceanBase #AutoMQ

教你用python爬取『京东』商品数据,原来这么简单!

技术冰糖葫芦

API 接口

容器架构下的性能测试实践方法

老张

性能测试 容器化

一文了解TiDB的数据对比工具sync-diff-inspector

TiDB 社区干货传送门

实践案例

霍格沃兹测试开发学社,全方位的测试解决方案提供商

霍格沃兹测试开发学社

使用 GitOps 在无服务器时代构建现代 CI/CD 管道_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章