写点什么

使用 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:20863
用户头像

发布了 1855 篇内容, 共 122.8 次阅读, 收获喜欢 79 次。

关注

评论

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

荣誉再加码!天翼云揽获SD-WAN & SASE大会两项大奖!

科技热闻

【线上发布会预约中】资源有限,性能无限:GreptimeDB Edge 赋能车端数据处理新高度

Greptime 格睿科技

数据库 汽车 性能报告

⭐️ GitHub Star 数量前十的工作流项目

NocoBase

GitHub 开源 工作流 工作流引擎 工作流自动化

携手上海证券,共同见证市场活跃背景下交易服务新趋势

非凸科技

上海证券 非凸科技

HTTP 请求从未如此智能:探索 aiohttp 的自动重试新技能

LLLibra146

Python 爬虫 aiohttp 自动重试 aiohttp_retry

AI在职场:如何通过人工智能提升工作效率

幂简集成

人工智能 API

Microsoft Office LTSC 2021 for Mac(office全家桶)

Mac相关知识分享

端侧AI,风起移动智能计算

脑极体

芯片

鸿蒙安全控件简介

龙儿筝

『OpenCV-Python』视频的读取和保存

德育处主任

OpenCV

Paste for Mac(剪切板历史管理工具)

Mac相关知识分享

Keka for Mac(mac压缩解压软件)中文版

Mac相关知识分享

【创新视角】解锁淘宝商品详情API:让商品主图与详情图“跃然屏上”,重塑购物体验魅力!

代码忍者

API 接口 pinduoduo API

如何设置自动化测试断言?

老张

软件测试 自动化测试 接口测试 质量保障

工程项目管理系统

深圳亥时科技

智能车间管理系统(源码+文档+部署+讲解)

深圳亥时科技

Parallels Toolbox for mac(工具箱合集)

Mac相关知识分享

拼多多商品评价API的获取与应用

科普小能手

拼多多 API API 接口 拼多多商品详情接口 拼多多API

探索 Go 语言中的内存对齐:为什么结构体大小会有所不同?

左诗右码

Go

CST软件如何使用Poser人体摆姿势

思茂信息

cst cst使用教程 CST软件

淘宝API接口探索:图片搜索拍立淘与商品评论的深度挖掘

代码忍者

API 接口 pinduoduo API

模型压缩理论简介及剪枝与稀疏化在 征程 5 上实践

地平线开发者

自动驾驶; 算法、

全球司库 | 科学掌握企业融资债券数据信息,需从这几个维度展开!

用友智能财务

财务 企业数智化 司库

鸿蒙安全控件之粘贴控件简介

龙儿筝

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