Skip to main content

CI/CD & DevOps 概揽

·99 字·1 分钟
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 就是组装和打包最终软件产品。

Continuous Delivery 和 Continuous Deployment 类似,区别在于 Deployment 是自动部署到生产环境,Delivery 在 Deployment 之前需要经过人为的确认/批准,所以技术上讲两者是一样的。

Continuous Testing 不是一个单独的 process,它总是包含在 CI/CD 中。

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

这 5 个 C 的支撑点就是自动化工具,之前为一个微服务项目构建的 CI/CD pipeline,基本上挺完整的:

微服务 Devops Pipeline

准备以此打造一个满足中小型团队的现代化流水线原型。

CNCF Cloud Native Landscape 展现了大量容器相关的工具:

cicd

CI/CD 做得好挺难的,因为一方面软件运行环境多样化和复杂化,新技术层出不穷,另一方面自动化工具的开发需要时间,而且众口难调。

开发周期比较关注的是 CI/CD,DevOps 包含了更多的东西 - infra,security,data,monitoring,service management 等等,而我理解最好的 DevOps 则是自动化能够做到覆盖软件生命的全周期,并且全程融合(支持上下文承接),全程反馈如同分布式监控可对各个子系统全程监控,包括人为反馈),已达至全程自动化,而不是孤立的使用各个工具。这里有两个核心点,一个是自动化,一个是全程,具体体现在(一些老大难的地方):

  • 基础设施全自动化

  • 安全管理全自动化

  • 数据库运维全自动化

  • 测试全自动化

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

DevOps 的东西听起来简单,但做起来不容易:

统计

Production Readiness Checklist

Production Readiness Checklist