NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

发布了 1835 篇内容, 共 92.3 次阅读, 收获喜欢 73 次。

关注

评论

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

Sophon联邦学习,让数据发挥真正的价值

星环科技

联邦学习

Hoo虎符研究院 | 币海寻珠——波卡平行链Moonbeam生态一览

区块链前沿News

虎符交易所 波卡

Sql server之sql注入篇

喀拉峻

网络安全 信息安全 SQL注入

如何帮助金融客户“用好云”?

金融 混合云 数智化

MongoDB find getmore操作慢问题排查

MongoDB中文社区

mongodb

聊聊Netty那些事儿之从内核角度看IO模型

bin的技术小屋

Netty nio Linux Kenel Linux网络编程 #java

白话大数据 | 元宇宙来了,但是你了解元数据吗?

星环科技

元数据

便捷、高效、智能—从运维视角看星环科技大数据基础平台TDH

星环科技

大数据

基于javaweb,springboot银行管理系统

叫练

银行 毕业设计 计算机毕业设计

sql审核-避免离线sql导致的db集群故障

名白

sql db sql检测 SQL审核 SQL审批

Form 表单在数栈的应用(上): 校验篇

袋鼠云数栈

大数据 前端

12 Prometheus之监控Kubernetes

穿过生命散发芬芳

Prometheus 1月月更

multi-key索引和wildCard索引场景比较

MongoDB中文社区

mongodb

如何保证redis与数据库一致性

zdd

redis

x86架构应用如何向Arm架构低成本迁移

北京好雨科技有限公司

Web or Native 谁才是元宇宙的未来(上)?

Orillusion

开源 WebGL 元宇宙 Metaverse webgpu

一篇域名从购买到备案到解析的详细教程

冴羽

前端 vuepress 域名解析 域名 域名备案

文末有惊喜| 青藤ATT&CK论文入选国家级期刊

青藤云安全

阿里云视频云vPaaS低代码音视频工厂:极速智造,万象空间

阿里云视频云

音视频 低代码 视频云 视频开发

netty系列之:让TCP连接快一点,再快一点

程序那些事

Java Netty 程序那些事 1月月更

反直觉投资--《香帅中国财富报告》摘录(4/100)

hackstoic

投资

Golang:定时器的终止与重置

CRMEB

AI+CFD:面向空天动力的科学机器学习新方法与新范式

百度开发者中心

飞桨

【量化】量化交易入门系列5:量化交易学习书籍推荐(一)

恒生LIGHT云社区

金融科技 量化策略 量化投资 量化交易 量化

Go 分布式令牌桶限流 + 兜底策略

万俊峰Kevin

Go 微服务 限流 Go 语言 令牌桶

TDengine在中节能风力发电运维系统中的落地实践

TDengine

数据库 大数据 tdengine 物联网

Avaya大中华区CTO李农:阿里云计算巢加快Avaya应用云部署

阿里云弹性计算

弹性计算 年度峰会 计算巢

热门链游GameFi项目Radio Caca 联手Hoo虎符撒空投

区块链前沿News

Hoo 虎符交易所 链游 RACA

【量化投资入门】带你通过恒有数数据接口来实战量化指标

恒生LIGHT云社区

量化策略 量化投资 量化交易 量化

CODING 携手 Thoughtworks 助力老百姓大药房打造“自治、自决、自动”的敏捷文化

CODING DevOps

敏捷 thoughtworks CODING 项目协同 老百姓大药房

激发数字化时代权益运营新动能

鲸品堂

运营 数字化 通信运营商

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