DevOps 
DevOps 一词由“开发”和“运维”两个词组合而成。 它是一种思维方式,同时也是一组工作实践。 成功的 DevOps 是将人、过程、工具相互融合。
DevOps 提倡的是:文化、工具相互结合。
传统应用发布模式 
传统应用发布模式:
- DEV 编写代码,本地测试后提交到版本控制系统;
 - 开发同学通知运维同学应用发布;
 - OPS 下载代码,编译生成可部署的制品并部署测试环境;
 - TEST 开始功能等测试,发现问题提交给 DEV, 无问题继续部署;
 - OPS 部署预发布环境、生产环境;
 
传统应用发布模式的问题 
传统应用发布模式的问题:
- 依赖人工手动发布,不可避免的错误;
 - Dev 和 Ops 之间的沟通协作问题;
 
看似流畅的过程,每次构建或发布都可能会出现问题。 未对每次提交验证、构建环境不一致;开发人员本地测试成功后提交代码,运维同学下载代码进行编译却出现了错误,等等。
因此,DevOps 第一件事情就是将人工手动重复操作的事情都进行自动化实现:
- 大规模运行和管理基础设施及开发流程
 - 加快软件开发与交付速度
 - 消除开发团队与运维团队之间的壁垒
 
CI/CD 自动化 
DevOps 的核心是 CI/CD 自动化交付管道。
基础架构自动化:
- Kubernetes 集群初始化
 - 用户声明资源请求
 - GitOps + Operator
 - 不可变基础设施
 - 基础架构标准化
 
完整的 CI 流水线,代码编译,测试,安全扫描,镜像打包:
- jenkins, Prow, Tekton
 - Maven, Sonar, jacoco
 - Kaniko, Helm, Docker
 - 多阶段的测试流程
 
完整的 CD 流程,多集群部署,多阶段部署:
- ArgoCD, Harbo, Kubernetes
 
CI/CD 的好处 
CI 体现的就是更快的反馈。快速的反馈、尽快的发现问题,避免代码集成的冲突。 CD 可以降低发布风险,自动化工具要比人工发布更可靠一些,出错的情况更少一些。
CI/CD 管道的阶段 
提交阶段主要是对开发人员提交的代码进行检查,代码扫描; 构建阶段是通过构建工具进行打包生成制品的过程; 测试阶段主要对已发布到环境的应用进行自动化的测试; 生产发布是最后一个阶段,当测试没问题后进行生产版本的发布。
DevOps 的演进 
DevSecOps 
DevSecOps 将安全工具和流程嵌入到 DevOps 工作流程中,并自动执行核心安全任务:
- 代码分析,识别安全漏洞;
 - 变更分析,确定变更的影响;
 - 合规性检查;
 
ChatOps 
ChatOps 是一种现代工作方式,它将人员,工具和聊天结合在一起,以提高生产力。比如:钉钉机器人、飞书机器人、企业微信等。
