DevOps 和 CI/CD 不仅关于软件工程
2025-02-06
在微软,是不分前端和后端工程师的。
统一叫做软件工程师(Software engineer)。
不以技术方向作为划分的标准,而以高质量解决问题的能力,是我在微软学到的第一课。
这启示我们,不要固步自封,自设藩篱,技术不分方向,能高效率、低成本解决问题的技术,就是好技术。
因此在未来,我认为,全栈工程师(Full-stack engineer)会是一个不错的职业方向。
这并非不可能。
由于目前 DevOps 和 CI/CD 已经发展得相当完善,开发即部署,部署即发布。开发者和用户之间,有时只差 Git 分支上的一个提交。
按照 敏捷开发🔗 敏捷开发思想,在信息流动速度日益加快的现代社会,交付价值随时间递减,越快的抵达用户,越及时的反馈,商业上的飞轮才有可能转得更快。
所以这篇文章,打算探究 DevOps 和 CI/CD 的基本概念,发展历程,如何实践,以及对于普通程序员的启示。
1. DevOps 和 CI/CD 是什么
DevOps 是 Development 和 Operations 的混写,即“开发和运维”一体。
CI/CD 是持续集成和持续交付/部署(Continuous Integration / Continuous Delivery(Deployment))的缩写。
这两者的关系,按照我个人理解,DevOps 是理念,CI/CD 是实践。
软件开发早期,开发和运维是分开的,各司其职。这带来了沟通不畅,职责界定模糊,交付周期长等问题。
DevOps 强调开发和运维一体,开发者需要对软件的最终质量负责。
这离不开清晰的流程设计,以及自动化程度高的基础设施。
CI/CD 是用于软件的自动化构建、测试和部署。
CI 主要注代码合并、构建和自动化测试。开发者的每次提交,都会触发完整的 CI 流程,如果跑到中途失败,开发者就需要转过头去修复错误。
CD 关注自动化部署。CI 通过后,人工介入,测试通过后进入到自动化部署阶段。在生产环境的部署,遵循灰度发布的策略,与 客户端的发布🔗 客户端的发布像。
部署后然需要持续的监控和报警系统,如果出现异常,需及时回滚到上一个版本。
2. 发展历程和实践
敏捷开发和 Scrum 在 20 世纪 90 年代被提出。
不过由于各种工具类基础设施不够成熟,开发和部署环节的自动化程度不高,因此开发和运维是两个独立工种。
DevOps 运动在 2007 到 2008 年间开始盛行。
其中使用到的重要工具:
- Git 发布于 2005 年
- GitHub 发布于 2008 年
- Jenkins 发布于 2011 年
- Prometheus 发布于 2012 年
- Docker 发布于 2013 年
- Kubernetes 发布于 2015 年
成熟的工具,有力推动了 DevOps 的发展。
兼顾易用性和高可用,开发和运维的工作被大大简化,工具可以完成大部分自动化任务。
DevOps 不再只是一个口号,而成为软件工程领域提质增效的一剂解药。
一个典型的 CI/CD 流程大体如下:
- 代码提交(Commit):开发者提交代码到 Git 仓库(如 GitHub、GitLab)
- 持续集成(CI)
- 代码检查(Lint)
- 代码构建(Build)
- 单元测试(Unit Test)
- 集成测试(Integration Test)
- 持续交付(CD)
- 代码部署到 Staging 预发布环境
- 进行自动化测试和人工审核
- 持续部署(CD)
- 自动将代码部署到生产环境
- 监控应用状态,回滚异常代码(如 Canary Deployment)
常用的工具有:
-
版本控制:Git(GitHub、GitLab、Bitbucket)
-
CI/CD 工具:Jenkins、GitHub Actions、GitLab CI/CD
-
容器化:Docker、Kubernetes
-
监控与日志:Prometheus、Grafana、ELK(Elasticsearch、Logstash、Kibana)
3. 对程序员的启示
DevOps 和 CI/CD 有很多优势:
- 缩短交付周期
- 保证代码质量
- 稳定有序的发布和回滚机制
- 高效的团队协作
自动化带来的高效和确定性,极大弥补了手工维护的成本和不稳定性。
这意味着,开发者可以将更多时间和精力,投入到更有价值的地方。
从另一个方面讲,因为很多人的工作被机器取代:机器不仅完成度更高,且成本低廉(不吃,不喝,还很“听话”),很多职业在慢慢消失。
以前还常讲运维工程师,现在多数运维工作都已经自动化了,即便需要人工干预,因为操作相对简单,熟练的开发者足以胜任。
看来,在软件开发领域,“拥抱变化”会是未来一个永恒的主题。
那么程序员的出路在哪里?
这个问题之前 讲过🔗。
我认为,单纯依靠技术,很难构建出职业上的护城河。
不仅因为技术迭代速度很快,没过几年就会过时,而且技术只是商业模型中的一环,甚至多数情况,都不是最重要的那个。
我想了想,还是要两条腿走路:
- 懂技术,懂行业,成为领域专家。此为主业
- 借鉴 DevOps 的思想,从单人起步,用好工具和杠杆,逐步搭建起自己的商业模式。此为副业
4. 总结
我待过两家公司,百度和微软。这两家公司的开发理念和 DevOps 设施建造的都极为漂亮、稳定、高效。
开发中的体验就会很好。
以网页为载体,也写过几个小的 App:
都自觉地用到了 CI/CD。
因为我本人就是一个 J 人,很喜欢这种清晰步骤下,结果的明确。
我认为,无论是在工作还是生活里,面对复杂和模糊的事情,用系统对抗随机,不失为一种行之有效的手段。
(完)
参考
- 本文作者:Plantree
- 本文链接:https://plantree.me/blog/2025/devops-ci-cd/
- 版权声明:所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
最后更新于: 2025-02-14T08:51:58+08:00