Skip to main content

CI/CD & DevOps 概揽

·937 字·2 分钟
DevOps

Even with modern tools and cloud technologies, building production-grade infrastructure and automation pipelines are still very hard as it involves a thousand details.

什么是 DevOps?软件工程里除了写代码外的部分,构建,发布,运维,都可以看作是 DevOps。

以上是我的理解。

不必纠结于一些 buzz words IT 界随着技术的更新,时不时都会出一些新名词,就是给一些还搞不清楚的东西起个名称(把外延不断放大)。下面是个开发全景图:

全景图

很多人谈论 CI/CD 或者 DevOps,其实是这 5 个基本点:

-   Continuous Integration(CI)
-   Continuous Testing
-   Continuous Delivery
-   Continuous Deployment(CD)
-   Continuous Monitoring
Continuous Integration CI 就是编译、组装、打包最终软件产品(artifact)。长久以来只是 application 本身,目前来带依赖都打包进 container 镜像。
Continuous Testing 不是一个独立的 process,它总是包含在 CI/CD 中。包含不同的种类:
Continuous Delivery 和 Continuous Deployment 类似,区别在于 Deployment 是自动部署到生产环境,Delivery 在 Deployment 之前需要经过人为的确认/批准,所以技术上讲两者是一样的。
Continuous Deployment CD 以前比较简单,现在也演化出不同的方式:
Continuous Monitoring

DevOps 是个持续过程,除了 Day0(onboard) Day1(go live) 问题,还要关心 Day2(production) 问题 — performance monitoring,fault detection,log collection,backup,recovery,cost optimization,特殊情况如电商行业还有大促。我理解最好的 DevOps 是自动化能够做到覆盖软件生命的全周期,并且全程融合(支持上下文承接),全程反馈如同分布式监控可对各个子系统全程监控,包括人为反馈,已达至全程自动化,而不是孤立的使用各个工具。这里有两个核心点,一个是自动化,一个是全程,具体体现在(一些老大难的地方):

  • 基础设施全自动化

  • 安全管理全自动化

  • 数据库运维全自动化

  • 测试全自动化

  • 大规模监控、报警、自恢复

别扯了,DevOps 的核心就是自动化,而且最好能做到全程自动化

这 5 个 C 的支撑点就是自动化工具, CNCF Cloud Native Landscape 展现了大量容器相关的工具:

cicd

之前为一个微服务项目构建的 CI/CD pipeline,基本上挺完整的例子,准备以此打造一个满足中小型团队的现代化流水线原型:

微服务 Devops Pipeline

虽然工具挺多的,但是 DevOps 的东西非常琐碎,一方面软件运行环境多样化和复杂化,新技术层出不穷,另一方面自动化工具的开发需要时间,众口难调,所以做好非常不容易:

统计


Are you ready to go to prod on AWS? Use this checklist to find out:

  Production Readiness Checklist