写点什么

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

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

关注

评论

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

设计千万级学生管理系统的考试试卷存储方案

锎心😌😌😌

有更新!鸿蒙智联生态产品《接入智慧生活App开发指导》(官方版)

HarmonyOS开发者

HarmonyOS 鸿蒙智联

列举GaussDB(DWS)常见的查询时索引失效场景

华为云开发者联盟

索引 GaussDB(DWS) 隐式类型转化 GIN索引 analyze

Docker 镜像知多少?

Daocloud 道客

云原生 Docker 镜像

80+产品正通过兼容性测试,OpenHarmony生态落地已初具规模

科技汇

it资产管理系统解决方案

低代码小观

资产管理 企业管理系统 CRM系统 IT治理 资产安全

Sidecar 模式的机制与应用

全象云低代码

Kubernetes 容器 低代码 后端技术 Sidecar

一看即会:Serverless 应用开发的 7 个实战小技巧(文末附好礼)

阿里巴巴云原生

阿里云 Serverless 架构 开发者 云原生

智能手表的下半场,机遇与挑战并存

Speedoooo

物联网 小程序容器 智能手表 智能穿戴

阿里云人工智能创新发布-工业五金图片搜索

视觉智能

拍照购物 以图搜图 图像搜索 拍立淘

区块链赋能不动产—易居EBaaS在不动产领域应用

BSN研习社

区块链

必示科技入围未来银行科技服务商Top100榜单

BizSeer必示科技

企业如何应对知识管理中的文档管理

小炮

知识管理

基于Sharding-JDBC的订单分库⽅案

领创集团Advance Intelligence Group

KPI与360度考核结合的应用落地方案

明道云

风险与机遇并存,数据分析厂商如何突围?

ToB行业头条

网站的FAQ页面应该怎么写?

小炮

FAQ

netty系列之:使用Jboss Marshalling来序列化java对象

程序那些事

Java Netty 程序那些事 4月月更

开发改了接口,经常忘通知测试,有什么好的解决方案吗?

Liam

测试 Postman 自动化测试 测试工具 测试自动化

智慧运维平台之全息监控

鲸品堂

运维 通信 运营商

OpenHarmony技术日圆满举行 | 3.1 Release版本重磅发布,生态落地初具规模

OpenHarmony开发者

OpenHarmony 技术日

OpenHarmony技术日成功举办,全球下载次数高达6300万

科技汇

3.0.0 alpha 重磅发布!九大新功能、全新 UI 解锁调度系统新能力

白鲸开源

Bigdata DolphinScheduler workflow Open Source apache 社区

离AI无处不在还有多远?从一个英特尔开源平台开始实现

科技新消息

带你认识2种基于深度学习的场景文字检索算法

华为云开发者联盟

深度学习 计算机视觉 文本检测 场景文本检索 文字检索

如何成为一名亚马逊云科技 Community Builder

亚马逊云科技 (Amazon Web Services)

Cloud 亚马逊云科技 career

macOS 安装 Nebula Graph 看这篇就够了

NebulaGraph

macos 图数据库 安装部署

一个平面设计师的异想世界

万事ONES

研发管理 设计师 ONES workbalance

免费IT自动化运维平台- ETL调度批量管理工具 TASKCTL 8.0 作业设计功能使用

敏捷调度TASKCTL

数据仓库 数据治理 运维自动化 ETL任务 TASKCTL

DRBD是什么意思?优缺点是什么?

行云管家

高可用 运维 HA高可用

在亚马逊云科技上搭建静态无服务器 Wordpress,每天仅需 0.01 美元

亚马逊云科技 (Amazon Web Services)

Serverless CDN WordPress

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