导读:本文由梯度科技高级开发工程师汤吉昌撰写,深入探讨了某科研单位信息系统的建设过程中,如何通过引入云原生平台和DevOps理念,解决内部开发和运维团队独立运作、项目周期长等问题,实现了高效、稳定的开发和运维一体化。
该科研单位的信息系统于2018年6月启动建设,涉及超过20家软件厂商的参与。初期采用微服务架构,但由于未引入DevOps理念,导致开发和运维流程分离,项目面临诸多挑战,如测试和部署孤立、手动部署错误频发、团队协作不同步等,整体迭代速度慢,用户满意度低。
为了解决这些问题,去年该单位引入了以云原生生态为核心的梯度智能云平台,并全面实施DevOps理念。以下是具体的应用效果:
1. 全生命周期管理:从代码提交、Review、编译、测试到最终业务镜像构建和部署,形成了统一的应用全生命周期管理,确保每个环节无缝衔接。
2. 环境一致性:高可用部署保证节点异常时仍能正常运行,解决了开发、测试、生产环境不一致的问题,提供了裸金属、虚拟机、私有云、公有云的统一接入能力。
3. 租户/用户管理:通过细粒度权限管理,实现资源隔离,快速定位问题责任人,提升问题解决效率。
4. 配置中心:统一托管配置文件,灵活管理不同环境下的配置,增强安全性。
5. 持续交付:自动化代码获取、检查、编译打包、构建镜像和部署,整个过程不超过3分钟,极大节省时间。
6. 微服务管理:集成测试中实现流量控制、故障注入等功能,提高测试效率和软件健壮性。
7. 资源管理:将容器云划分为测试和演示集群,确保环境独立性和资源隔离。
8. 监控管理:实时监控应用和服务器状态,及时告警并通知运维人员。
9. 镜像仓库:保存所有版本镜像,支持快速回滚和安全扫描。
10. 应用管理:直观查看和管理所有应用的运行情况,随时调整资源。
11. 编排管理:提供helm编排文件包,快速部署中间件集群。
12. 日志管理:采集并分析所有日志,快速定位问题。
项目建设中共有四个环境:开发、集成测试、演示和生产环境。根据实际情况,DevOps流程分为五个阶段:
第一阶段:研发人员提交代码后自动触发构建任务,完成镜像构建和测试环境部署。
第二阶段:测试人员进行集成测试,依靠微服务治理实现流量监控和故障注入。
第三阶段:集成测试通过后,手动升级演示环境。
第四阶段:产品经理和客户共同验证需求,决定是否发布到生产环境。
第五阶段:确认发布后,通过移动介质导入业务镜像到生产环境,选择合适的发布策略。
关键点在于业务镜像,确保应用运行环境稳定可靠。
通过一年多的实践,使用DevOps带来了显著的好处:
1. 全量交付:解决增量交付中的版本管理问题,确保镜像可控。
2. 自动化构建:规范检查和发布流程,减轻沟通负担。
3. 唯一性保障:通过Git代码源及版本仓库,确保业务应用唯一性。
4. 快速反馈:任何环节出现问题立即停止流水线,迅速修复,降低上线风险。
具体表现如下:
1. 测试环境发布频次:从每天10次提升到120+次。
2. 生产环境发布频次:从每周5次提升到100+次。
3. 提出需求到发布生产:从10天缩短至2天。
4. 版本迭代周期:从月级别缩短至周级别。