速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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

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

关注

评论

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

圈子创业

张老蔫

28天写作

第十三周命题作业

cc

产品经理训练营-第五周作业

月亮 😝

框架效应如何影响人的决策?「Day 4」

道伟

心理 决策 28天写作

gRPC库C++构建及示例

长不胖的Garfield

c++ gRPC

产品经理训练营 - 第五次作业

Jophie

产品经理训练营

「产品经理训练营」第五周 作业记录

周玲

程序员的职业生涯与赛道选择

刘旭东

职业规划 码农 职业生涯

改变认知,到写作方式的改变

数列科技杨德华

28天写作

极客大学·产品经理训练营·第四章作业(第五周)

二大爷

极客大学产品经理训练营

【计算机内功修炼】九:程序员应如何理解协程

码农的荒岛求生

线程 操作系统 进程 协程

使用 Tye 辅助开发 k8s 应用竟如此简单(五)

newbe36524

微服务 netcore 全链路追踪 dotnet dapr

翻译:《实用的Python编程》02_04_Sequences

codists

Python 人工智能 面试 数据结构与算法 序列

第十三周学习心得

cc

将上周写的用例画成流程图-第四章,第三讲

mas

一名青少年创客导师

厌倦你

编程

深度集成 Flink: Apache Iceberg 0.11.0 最新功能解读

DataFunTalk

28天瞎写的第二百四十二天:正念冥想,我要想什么?

树上

冥想 28天写作 正念

地表建筑物识别 Dayo2

IT蜗壳-Tango

七日更 28天写作 2月春节不断更

处理 Exception 的几种实践,很优雅,被很多团队采纳!

xcbeyond

Java 异常处理 28天写作

2021金三银四必备:Java后端开发面试总结【25个技术专题】

比伯

Java 编程 架构 面试 计算机

悟透前端 | javascript数组之includes、reduce

devpoint

ES6 includes reduce

Linux c 开发 - 内存管理器ptmalloc

赖猫

Linux 后台开发 内存管理

产品经理训练营-第五周学习总结

月亮 😝

【编程小白福利】办公自动化--从VBA到Python

IT蜗壳-Tango

七日更 28天写作 2月春节不断更 办公自动化 IT蜗壳

流程图

王一凡

AI数学基础之:奇异值和奇异值分解

程序那些事

人工智能 机器学习 程序那些事 矩阵运算

保持前进

Nydia

Elasticsearch Validate API

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 二月春节不断更

作业5

瑾瑾呀

面试中经常问到的动态代理到底是什么

废材姑娘

Java

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