破除软件开发困局,基于容器平台的 DevOps 转型实践
![破除软件开发困局,基于容器平台的DevOps转型实践](https://static001.geekbang.org/infoq/8a/8a11033c803d9cd2bf6c884e229aec16.jpeg)
本文分享自华为云社区《DevOps赋能行业云原生数字化转型》,作者:云容器大未来。
企业软件开发困局
随着信息化的进程不断加速,带来的各种业务应用、平台应用等软件资产的复杂度也快速上升。随之而来的信息化基础设施能力与软件工程全生命周期的管理也会变得越来越复杂,数字化转型、云原生、持续交付的口号随之升起。
千行百业都在响应数字化转型的号召以提升业务效率、企业竞争力或是市场竞争力。但是企业在转型的过程中却举步维艰。往往原因有以下几点:
流程固化,牵一发而动全身:原有的流程已经制定多年,相关人员也已经习惯这套流程。突然的规则转变以及带来的相关风险无人愿意主动承担。
部门墙明显,无法快速协同:在金融等行业中,每个部门的成员往往都是统一职责的。如业务部门,只负责市场运营、项目需求管理等;研发部门,只负责开发以及测试;运维部门,只负责平台的运维、基础设施的维护等。一个业务软件的版本迭代,需要从多个部门层层流转,但部门与部门之间的沟通又不彻底,出现问题也容易互相牵扯,最终导致软件需求交付效率的大大下降。
严谨的网络环境管理却又松散的制品管理:网络部门严格管理着各个环境之间的网络访问逻辑,一般情况下,开发人员只能访问开发环境;而且开发、测试、准生产以及生产环境之间网络都是不互通的。在没有强有力的政策干预下,可能会出现各个环境都独立一套代码、制品仓库,更糟糕的是,可能不同的软件产品线都独立管理各自的代码、制品仓库。因此在阶段流转时,需要通过传统的拷贝方式去做流转传递,带来了额外的管理成本,也更容易引入人为风险。
过多的编外人员带来的各种散乱工具链:在软件研发部门可能存在多方外包人员,而每一方外包人员都有各自熟悉的软件开发工具,代码仓库有些使用 Gitlab,有些使用 Gitea;制品仓库有些使用 nexus,有些使用 jforg;甚至构建工具都不能统一,有用 Jenkins 的,也有本地构建的。这也带来了管理上的巨大麻烦。
显而易见的困局,企业在数字化转型过程中面临流程固化、部门墙明显、制品管理松散和工具链混乱等问题,导致软件需求交付效率下降。需要打破原有流程和部门墙,建立统一的管理体系,加强制品管理和工具链整合,以提高软件需求交付效率。
破局之法:DevOps
面对以上重重现状和困难,我们迎来了曙光——DevOps。
DevOps 最初诞生于互联网企业。DevOps 作为一种文化、哲学和实践的集合,自从诞生以来,就一直在不断地进化和扩展。它的定义以及理念大家都耳熟能详:打破部门墙、紧密合作、自动化、小步快跑、敏捷迭代等等。它是一种文化宣言,提及了方法论,每个企业或者行业都能够结合自身实际情况去操作实施。
核心理念:
变更的快速响应:DevOps 支持需求的快速更改和新功能的快速部署。通过自动化构建和部署流程,开发团队可以快速地将代码从开发环境推送到生产环境。
持续反馈:通过持续集成和持续部署,可以确保在开发周期的任何阶段捕获问题,以及在生产过程中立即收集用户反馈,然后快速将这些反馈整合到产品迭代中。
跨功能协作:DevOps 鼓励开发团队、QA 团队和运维团队从需求收集的初期就开始紧密合作,以确保全方位理解和满足用户需求,并从整个软件交付流程中消除障碍。
原则优化:DevOps 的实践着重于自动化和精益原则,包括尽早消除浪费,确保需求的清晰性和简洁性,以及提供最大的价值。
从核心理念就能够看出,DevOps 文化实践需要有统一的软件工程工具链,所有相关人员都能够在 DevOps 平台上执行各自的工作,实现部门之间通力协作和重复流程的全面自动化。
![](https://static001.geekbang.org/infoq/c9/c9bd9afd4cfff18fc1ea78717017f9f7.png)
上图展示了 DevOps 的相关角色以及整体工作流程。一个较为完整的 DevOps 全流程工具链便呼之欲出:从基础设施的管理、项目管理,再到代码管理和持续交付,最后是持续运维。除却文化理念,DevOps 的核心是自动化流水线工具,实现了自动化持续交付,而持续交付的核心是持续集成(CI)和持续部署(CD)。
CI/CD 共同构成了现代软件开发的核心实践,旨在促进软件的快速迭代和高质量交付。其中,持续集成主要关注开发阶段的频繁合并和测试,而持续部署则扩展了这一过程,涵盖了代码从集成到被部署到生产环境的整个流程。两者都是自动化的关键实践,有助于实现 DevOps 的目标。
![](https://static001.geekbang.org/infoq/3e/3e565e67fbc2ddc4de561a5234d51427.png)
遵循理论引导并结合实际情况,我们归纳了针对金融等行业的破局三板斧。
DevOps 专业团队指导,打破固有流程
在金融等行业并不缺乏优化现有流程的勇气,只是没有明确的目标以及专业指导。当 DevOps 的呼声以及发展越来越强大时,国内涌现出了很多专业的 DevOps 专家咨询团队,他们能够结合企业的实际现状给出最优解,在组织架构不调整的情况下保障以尽可能小的变更达到最大的效果,消除企业顾虑。
统一的 DevOps 工具链平台,打破部门墙,规范研发流程
我们发现绝大多数企业都无法做到为每一个项目划分全功能团队(从市场、需求到研发、测试最后到运维),往往都是独立的市场部、研发部和运维部。这天然的形成了沟通与阶段流转之间的部门墙,由于更改现状牵扯太大,我们便通过应用 DevOps 的理念,建立统一的 DevOps 工具链平台,对当前项目的全生命周期进行管理。针对每一个原始需求,从需求记录、分析、分配到后续的开发、测试、验证及最终上线,都能被相关人员看到。阶段的流转也能够在相关平台上直接操作和通知,杜绝冗长低效的跨部门流程。我们提倡相关人员使用 DevOps 平台的同时,梳理最佳实践,进行定期培训,潜移默化的让研发流程变得统一和规范。
在严谨的网络环境内搭建统一的核心资产库
核心资产库的统一有必要性,各个项目组成员,即使在不同的应用环境下,也不能单独建立。如代码仓库,不能在开发环境和测试环境各有一套。我们需要统一的核心资产库去践行 DevOps 的理念。该库需要打通从开发到生产环境的网络连接,并通过严格的权限控制,来实现安全合规。
行业困局的解决方案
为了满足理论支撑,我们基于华为云UCS作为容器平台底座,结合软通动力应用交付平台来实现行业云原生数字化转型的最佳解决方案。
![](https://static001.geekbang.org/infoq/39/394e5955bfa63a0da43b8c741d62b668.png)
华为云 UCS(Ubiquitous Cloud Native Service)是业界首个分布式云原生产品,为企业构建云原生业务部署、管理、应用生态的全域一致性体验 ,实现客户在使用云原生应用时,感受不到地域、跨云、流量的限制,让云原生的能力进入企业的每一个业务场景,加速千行百业拥抱云原生。
而软通动力应用交付平台是一款持续交付产品,帮助企业快速建立稳定软件发布的内部开发者平台与 DevOps 文化,为开发者提供云原生应用运行环境,开发者通过平台的自助服务能力,进行应用的构建、部署、验证、运维等生命周期管理操作,降低应用开发者使用云原生技术的门槛,提升应用的部署和运行质量。平台支持 UCS 云原生服务中心快速安装,用户只需要通过页面表单的填写即可快速部署平台,实现开箱即用。
客户通过 UCS 对多方集群执行统一纳管,从而达到对多个集群的统一治理,实现配置管理、容器迁移、策略中心、流量治理和容器智能分析。这在网络环境严苛的金融等行业中是非常便利的。
云原生服务中心精选了各种成熟可靠的开源工具,为客户提供了统一便捷的安装体验,其中的多种工具能够和应用交付平台实现集成联动效果,如 SonarQube 和 ArgoCD。他们支持配置对接到应用交付平台的持续集成流水线或安全测试编排中,实现多个工具平台的串联,打破数据孤岛。
整体解决方案中,实现 DevOps 的核心便是华为云 UCS 提供的容器底座以及应用交付平台提供的集成和自动化能力,两者相辅相成。原本的应用交付平台得到升华。通过 UCS 的特性,我们可以实现多集群的统一联邦管理,让快速搭建双活、主备等高可用应用部署架构变得轻而易举。这种架构极大地提升了运维能力,使构建发布过程实现全面自动化,从而提高交付质量、缩短交付周期、保持技术路线一致性以及规范资源使用。
值得一提的是,UCS 云原生服务中心的引入使得企业能够快速安装和使用诸如 ArgoCD、SornaQube 等热门开源工具平台。这不仅丰富了企业的技术选择,还增强了企业的灵活性,使企业在快速变化的市场环境中始终保持竞争力。
将 UCS 与软通动力应用交付平台相结合,企业将获得一套更高效、更可靠的运维解决方案。这套方案可以全面提高企业的运维能力,降低人工干预成本,提高交付质量,并确保技术路线的一致性。在此基础上,通过 UCS 云原生服务中心的引入,企业还能够快速接入各类热门开源工具平台,进一步提升企业的灵活性。这套解决方案将助力企业在激烈的市场竞争中脱颖而出,实现业务的持续发展。
方案落地实践与价值
某资产管理公司成立 10 年期间累积了不少软件资产,过于陈旧的研发体系以及日益膨胀的原始需求,使得他们迫切的想要进行云原生改造,实践 DevOps 来得到交付效率上的提升。
在入场调研的过程中,我们发现其所面临的困境和金融业企业困境如出一辙:各个环境的割裂、没有统一的代码仓库、阶段流转靠 U 盘拷贝、散乱的依赖管理、缺失自动化构建能力以及没有统一规范的软件研发流程,全靠各个团队自由发挥。
云原生 DevOps 专家团队面对这种实际场景,针对性的给出了架构设计和迁移改造方案。
容器化改造
客户原先的系统服务都是虚拟机部署,一个微服务需要单独规划一台 4U8G 的虚拟机,如此配置不易弹性伸缩且有巨大的资源浪费。专家团队顺势提出容器化改造,并且使用业界首个分布式云原生产品华为云 UCS 作为容器平台底座,同时给出微服务容器化改造的最佳实践,帮助客户快速迁移。
统一代码仓库和制品仓库
令人惊讶的是,客户没有统一的代码仓库和制品仓库,多个团队之间的代码资产各自管理。有些使用 Git,有些使用 SVN,更有甚者就未使用代码仓库。因此在代码从开发环境转换到测试环境、准生产环境时,通过 U 盘拷贝的形式,制品依赖更是如此。所以改造的下一步是统一必备的软件开发工具。综合考量各种因素后,我们为客户提供了 Gitlab 代码仓库、SWR 镜像仓库以及 nexus 依赖仓库。
统一的 DevOps 平台
有了容器平台、代码仓库、镜像仓库等基础设施和软件开发平台,实践 DevOps 需要将这些平台结合起来,并提供持续交付的能力。软通动力应用交付平台完美匹配,其灵活的集成管理能力串联了多个研发工具链,给客户提供高效便捷的流水线配置体验。
研发流程优化
当基础配置全部准备完成后,此时需要流程规范和最佳实践进行指导。华为云 UCS 专家团队结合资产管理公司的组织架构以及业务结构,为客户量身定制了基于新平台的研发流程。从理论出发结合实际为客户实现云原生数字化转型。
![](https://static001.geekbang.org/infoq/b8/b8be8ef152ec2890479ddca05babca7f.png)
经过客户及华为云云原生团队的共同努力,客户业务最终完美的迁移到容器环境中。经过一段时间的学习、适应和磨合,客户按照 DevOps 的文化理念进行迭代、统一代码和制品仓库以及配置自动化流水线。据效能统计:人力管理成本平均减少 70%、构建部署的频率提升十余倍、更改失败率降低、平均交付周期以及资源利用率都有了巨大的优化,顺利打破金融等行业的云原生、数字化转型困局。
访问链接,体验华为云分布式云原生 UCS:https://www.huaweicloud.com/product/ucs.html
版权声明: 本文为 InfoQ 作者【华为云开发者联盟】的原创文章。
原文链接:【http://xie.infoq.cn/article/7916b0af9a3325ed5cdb9b936】。文章转载请联系作者。
评论