作者简介
陈杰,浙江能源集团
信息运维中心 DevOps 项目负责人
来自浙江能源的陈杰致力于运维中心 DevOps 基础设施平台与团队建设。在本文中,陈杰为大家介绍他们团队如何通过 Atlassian 系列产品实现零开发,并快速部署和实施 DevOps 自动化流水线的过程和实践。
关于浙能:
浙江省能源集团有限公司主要从事电源建设、电力热力生产、石油煤炭天然气开发贸易流通、能源服务和能源金融等业务。截至2020年底,浙能集团在职员工有2万多人,总资产2千多亿元,拥有多家上市公司,也是率先开展省属国企数字化改革的能源领军企业。
作为浙能集团信息化建设和运维的承担部门,浙能信息运维中心包含:技术开发与管理、业务分析与实施、硬件环境支撑、客户服务四大团队,共计150余人。主要开展集团核心信息系统、数据中心机房、云服务平台的建设、业务管理咨询、技术开发服务、网络安全防护、系统运维与优化等工作。
问题和痛点:
我们承建的系统数量多,合作的外部团队多,各系统缺乏统一的代码版本管理与流水线平台,为保证后期的建转运顺利进行,我们需要一套统一标准对开发、测试、部署进行规范化管理,提高质量和自主可控的能力。
其次,我们既有外部开发团队,也有内部自主建设项目团队,内部和外部需要一个能够及时沟通和协作的平台,同时提高软件开发效率。
同时,作为信息运维中心,业务的运维保障仍然是核心工作,我们要保障上线的质量和稳定性,提供不间断运维服务,并且可以根据需要快速回滚。
为解决以上问题,我们打算采购一整套成熟的产品及解决方案,已完成中心的信息化转型。
我们原来仅有开源的 Gitlab 做代码管理,没有其它工具平台及历史包袱,经过一系列调研及对比市场主流产品之后,我们决定采用被全球企业认可的 Atlassian DevOps 解决方案及其系列产品,包括:
Atlassian DevOps 系列产品在浙能的使用:
· Jira Software:我们团队根据不同的项目团队情况,灵活设置 Kanban 与 Scrum 的工作模式,如中台运维组大部分工作都是日常任务处理,采用kanban可以更好地度量问题解决平均周期时间。微应用团队,由于日常任务干预较少,有较长周期的计划,且对scrum的接受度较高,我们便请了敏捷教练指导,经过多个sprint,目前已具备自运营的能力。


· Confluence:我们在 Confluence 上搭建了完整的企业知识库和运维手册来,相关团队都可以创建和贡献内容,形成企业的知识积累,我们建立了制度对应的各种通用模板来方便各项目组的使用,但同时也限制了上传附件的大小来避免 Confluence 成为单纯的存储工具。为了帮助大家更好的使用 Atlassian 工具链,我们也还创建了专门的Devops实践指导空间。

· Bitbucket:我们采用了 Git-flow 模型来管理我们的分支,以便开发测试可以同时推进,我们采用 Control Freak 插件(Marketplace 免费 App)来规范大家的代码提交,如必须携带 Jira 编号,阻止 foxtrot merges 等。
相关产品和插件介绍:
· 我们使用开源的 SonarQube 做代码质量检查,使得各项目的技术债大幅降低。
· 用 Nexus 做容器镜像库与其他依赖库,如 Maven,NPM 等。我们充分利用了容器的相关特性,通过基础设施即代码定义了容器的环境,以保证开发测试生产环境的一致性。我们通过容器镜像的元数据保留了镜像的构建信息,方便我们排查问题。我们将流水线的脚本充分抽象和参数化,以致于我们可以方便地克隆和扩大规模,仅客户管理系统项目,半年内我们就构建了8000余次。
Atlassian 全家桶的优势:
- 无需开发,无缝串联:Atlassian 全家桶让我们实现零开发。轻松的搞定 DevOps 流水线的落地 —— Confluence、Bitbucket、Bamboo 通过 Jira 有机串联,我们可以在 Jira 上看到用户故事对应的相关文档、代码提交情况、开发测试生产环境发布情况,让项目管理员可以更精细化地追踪项目进度情况。
- 工作方式的改变:我们一开始以为只需要上线一套产品就可以实现 DevOps,后来发现产品和流水线只是基础,重要的是改变工作习惯和思考方式,简化流程,促进合作。由于要改变习惯,我们首先在技术开发团队进行了小范围试点,各项目情况有别,阻力很大,有很多的困难需要克服。
- 领导的支持:我们一边学习 Atlassian 的理念,一边结合实际做了很多落地尝试,并且在不断的成功和失败中逐渐形成了指导意见,我们将这些实践指导公开在 Confluence 中,鼓励员工们自助解决问题和学习提高,随着项目的不断推广,我们的知识积累日趋完善。
- 我们曾经也做过一些敏捷转型的尝试和探索,自己研究网上各种的攻略却始终不得要领,只有形式化的转型,直到邀请了来自 Atlassian 合作伙伴:范德敏特的谢志锋老师给我们微应用团队做了多个 Sprint 的敏捷教练。谢老师细致入微的参与到我们项目之中,从任务分解到点数评估,他指导我们各个环节怎么做,并提出了建设性的意见,比如 DOD(任务完成标准)。我们在实践过程中不仅提高了开发效率、开发质量,重要的是,团队成员的通过不断的沟通交流增长了默契,提高了凝聚力,可以充分理解项目更可以理解团队。该项目在推广中也起到了模范作用。从简单来说,谢老师教会了我们如何敏捷落地,而实际上,谢老师教我们看得更远。
当然,我们建立整套 DevOps 的时间仅有1年多的时间,踩过很多坑,走过很多弯路,也清楚的知道离顶尖的互联网运维团队还有一定的距离,我们一边学习 Atlassian DevOps 框架和理念,一边通过借鉴外部合作团队的实施方案不断完善我们自己的规范,我们在不断寻求进步和提高,为未来的市场化做准备。
借助 Atlassian 全家桶,我们不一定能全部用起来并做到最好,它是一套大而全的工具,但我们能入门并且有了自己的基础,通过它我们看到了事情的全貌,知道了顶尖的团队是如何做的,也就可以形成自己的框架,我们知道了事情该怎么样去做,知道了目标在哪里,也就知道了将来如何去改进,这是一个好的开始!——陈杰,浙能 DevOps 转型负责人