当前位置: 首页 > 科技观察

对话15年技术老手:我是如何填上DevOps的深坑的?

时间:2023-03-15 15:24:04 科技观察

DevOps建设似乎已经成为企业的共识,但何时、如何建设,仍然是企业关注和头疼的问题。企业的技术、人才、业务在多大程度上适合构建DevOps?在构建过程中,应该从哪里入手,如何处理组织架构、原有技术栈和DevOps之间的矛盾?DevOps建设有参考架构吗?构建完成后,DevOps的下一步是什么?......为了回答以上问题,我们采访了15年技术老兵、现任华为云DevCloud首席解决方案架构师王金伦。DevOps是Development和Operations的组合,是指统称为一组流程、方法和系统,用于促进开发、技术运营和质量保证部门之间的沟通、协作和集成。根据中国信息通信研究院(CAICT)发布的《中国 DevOps 现状调查报告(2019 年)》:“超过半数的企业使用DevOps敏捷工程实践来管理开发项目,近60%的企业选择编码标准、单元测试和持续一体化。”这说明DevOps已经成为企业软件开发的主流,被很多企业采用。尽管企业期望通过DevOps获得更多价值,并愿意积极尝试,但DevOps的成功实践仍然是一个难题。根据《中国 DevOps 现状调查报告(2019 年)》的调查结果:“只有31.65%的企业真正能够成功实施DevOps。此外,还有近40%(41.13%)的企业不知道自己是否成功实施了DevOps。”这个结果虽然出乎意料,但也在情理之中。毕竟,在DevOps实践中,成功的方法有很多,但失败的方法也更多。本文将重点探讨DevOps建设过程中的矛盾和难点,让大家的DevOps建设之路更加顺畅。DevOps中的矛盾与冲突任何新事物的出现与落地,必然伴随着矛盾与冲突,DevOps也不例外。DevOps一出现,很多人就开始担心:“传统运维会被DevOps干掉吗?”是的,DevOps的第一个冲突很快就出现了,就是传统运维和DevOps的矛盾,有些人认为两者不相容,那么实际情况是怎样的呢?对于传统的运维和DevOps,王金伦是这样理解的:“运维(Operations)本质上就是综合运用人员、流程和工具平台来管理IT基础设施和应用系统,整合平台和系统服务。价值在于按照一定的SLA持续向内部或外部客户提供,随着企业业务目标、IT基础设施、应用系统、运维理念、运维方式、运维工具平台的不断发展,运维将成为在不同的阶段或从不同的角度呈现出一定的发展特征。”“传统运维和自动化运维可以简单理解为行业在不同阶段或不同角度对运维的特征标签,它们各有不同的特点。例如,传统运维通常具有被动、标准化程度低、自动化程度低的特点;自动化运维通常具有主动性、标准化程度高、自动化程度高的特点。”企业实施DevOps的合适节点在很多人的印象中,DevOps是一个高级的方法框架,使用DevOps可以为企业带来无限的收益,但事实是我们看到很多企业的DevOps实践并不成功,而很多开发者抱怨DevOps是一个“累赘”。造成这种情况的原因,大多是企业根本没有准备好实践DevOps。那么,一个企业想要构建DevOps,应该具备哪些素质呢?”从理论上讲,DevOps相关的方法和实践,无论是大型企业还是中小企业,无论是敏感的还是稳态的业务系统,都可以采用。”王金伦说,“企业在进行DevOps转型或变革时,建议从需要高敏捷性的产品入手(比如企业向终端用户提供的基于互联网的服务)可以更充分体现DevOps的能力。当然,DevOps的有效实施离不开人员技能、流程、工具链平台的支持。它还与系统架构(如微服务架构等)和系统依赖的基础设施(如云计算等)密切相关。因此,企业应该在DevOps方法、微服务架构、云原生架构、云计算、自动化测试、持续集成、持续交付、灰度发布等技术储备。当然,企业最好不要寄希望于一蹴而就完成这些储备,而是应该参照DevOps实施框架,在软件交付过程中逐步进行技术储备,自然而然地实施DevOps的方法和实践。《DevOps实践与企业组织结构》在企业DevOps建设过程中,组织结构的调整和员工职责的变化始终存在,尤其是Dev和Ops相关角色的变化。DevOpsTopologies曾提出9种有效的DevOps团队结构:模型一:Dev和Ops无缝协作,适合强技术领导模型二:完全分担Ops职责,适合拥有单一主要Web产品或服务的组织模型三:Ops是IaaS(平台),适合有多个Web产品或服务的组织不同的产品或服务,一个传统的Ops部门,或者应用都运行在公有云上模型4:DevOps作为外部服务,适用于运维经验不多的小型组织模型5:DevOps组有固定的有效期,Model1的前身。Model6:DevOpsEvangelistgroup,适用于Dev和Ops有一定优势的组织。疏远倾向。模型7:SRE组(Google模型),适用于高级工程师和成熟度企业。模型8:容器驱动的协作,适用于容器运作良好的组织。模型9:Dev和DBA协作,适用于具有多个应用程序链接一个或多个大型集中式数据库的组织。以上九种只是比较常见的DevOps团队的组织架构,但是世界上并没有完美的DevOps组织架构。王金伦建议:“组织架构的调整应根据组织的产品组合、技术领导力、团队成员技能水平、运营成本等多方面综合考虑。建议企业建立跨职能自治团队尽可能围绕价值流实现持续价值交付,并随着DevOps实践成熟度的提高不断调整组织架构。”当企业向DevOps转型时,企业各部门人员的工作内容是否会发生变化?因此?王金伦表示:“企业DevOps的实践,不会让业务、需求、开发、架构、开发、测试、部署、运维人员的核心工作内容发生太大变化,但工作方式可能会发生变化。例如,业务人员要有敏捷的思维,而不是拘泥于传统的业务方式;运维人员要更好地与开发人员沟通协作,将运维需求纳入产品backlog等等。“DevOps和云平台无论是基于云平台、IDC还是OpenShift,都可以构建一个完整的DevOps环境,所以DevOps和云平台之间的关系不是必要的,也不是充分的,它们是相互独立的。那么,如何企业判断是否在云平台部署和实践DevOps?王金伦表示:“企业运维平台(OnPremisesorPublicCloud)的部署方式取决于企业业务系统(私有云、私有云、公有云)的部署方式。混合云或公共云)。当所有业务系统都部署在公有云上时,运维平台推荐部署在公有云上。当业务系统运行在私有云或混合云场景时,运维平台的部署方式推荐采用OnPremises方式。“原本部署在本地的运维平台如果要上云,那么主要考虑的是数据安全、运维通道速度等问题。上云之后,企业的组织架构和员工都会DevOps的完整路径和技术选择虽然每个企业都有自己的实际情况,不能照搬别人的DevOps做法,但还是需要熟悉公有云厂商的运维产品特性和能力我们可以有一个比较标准和完整的DevOps参考架构,在王金伦看来,一个完整理想的DevOps平台应该能够满足业务、需求、架构、开发、测试、部署、运维等角色的需求在上面独立完成相关工作。“DevOps平台应该提供项目管理,p原型设计、源代码版本管理、代码质量分析、持续交付流水线、编译构建、测试管理、UI自动化测试、接口测试、性能测试、移动应用测试、部署、发布、运维、WebIDE、文档管理、维基百科、开源镜像站等功能特性。“从理论和实践的角度来看,使用行业开源工具(如Redmine、GitLab、Jenkins等)并不是特别困难,这是一件容易的事,因为根据XebiaLabs统计,有15类DevOps相关工具,多达120种。同时,企业还需要考虑可靠性、可用性、性能、安全、集成、持续升级、异构技术栈等问题。王金伦以持续交付流水线为例,以代码质量和移动App为例,详细介绍了如何进行技术选型。对于DevOps平台来说,持续交付流水线是最关键的核心。目前Gitlab、Jenkins、阿里云晓、华为云DevCloud都可以提供相关功能。对于流水线,主要能力在于可视化任务编排能力(分层、并行/串行、人工干预、访问控制等)、大规模并行调度能力等。如果企业使用开源软件,特别注意应该支付给支持大规模并行调度的能力。对于软件交付,开发人员非常关注代码质量。现在很多公司都在使用SonarQube、Findbugs、Checkstyle、Infer等工具来检查代码质量,但都面临着如何规范不同工具之间相似规则、如何统一多个工具检查结果等挑战。同时,应用人工智能(AI)进行代码质量分析和自动修复成为趋势。企业需要关注开源工具能否及时跟进,以及跟进的质量。手机App已基本成为各企业对外服务系统的标配。如何兼容不同类型的移动终端,成为了开发者非常头疼的问题。虽然移动端提供了仿真器或仿真器,但真机兼容性测试仍然是不可或缺的一环。在这种场景下,搭建移动应用测试平台,采购大量移动终端,对几乎所有企业来说都是巨大的成本负担。企业可考虑相关厂商提供的手机应用程式兼容性测试服务。DevOps实践中的注意事项构建企业DevOps平台说起来容易做起来难!王金伦认为,在实践DevOps的过程中,企业要特别注意以下三点:首先,需要注意DevOps与组织结构、文化和行为的契合度。DevOps集成了敏捷、精益、自治团队和分布式决策等概念。企业应通过顶层设计、实践社区(CoP)和组织变革,建立与DevOps相匹配的组织和文化。我们通常说DevOps转型是“一把手”项目。在很大程度上,组织和文化的变革必须由高层领导来推动。否则,DevOps只能停留在纯工具和工程方法的表面,难以走远。带来可观的价值。其次,公司面临工程方法的挑战。目前,DevOps并没有一个统一的标准或知识体系。因此,企业应该系统地认识敏捷和DevOps,形成大家认同的适合企业的DevOps实施框架,才能更有效地提升能力。在我们接触过的很多软件公司中,他们并没有系统地掌握Scrum的方法,对Backlog、EPIC/Feature/Story、Scrum会议等缺乏基本的了解,因此在敏捷项目管理上遇到了很大的困难。很难,更不用说整个DevOps系统了。华为云DevCloud推出的HE2Eworkshop基于HE2EDevOps实施框架和案例项目。实战结合,帮助企业更系统地理解DevOps。最后,企业将面临的问题是如何构建端到端的一站式DevOps工具平台。企业可以从2+1(项目管理+源代码版本管理、持续交付流水线)的能力构建DevOps平台。我们建议企业尽量使用行业内主流的商业平台,当这些平台确实不能满足自己的核心需求时,他们会寻求自建这条艰难的道路。AIOps是DevOps的下一步吗?DevOps诞生于2009年由项目经理和敏捷实践者PatrickDebois主持的比利时会议。目前,已有多家企业在实践中应用。有了DevOps,自动化程度提高了,测试变得更容易了,部署也更快了。智能运维(AIOps)以自动化为基础,强调将人工智能等技术应用到运维的相关环节(如根因分析、预测、故障恢复等),进一步提高运维效率和运维效率。运维有效性。那么AIOps是DevOps的下一步吗?对此,王金伦认为:“从理论和行业实践来看,AI将成为提升Ops或DevOps能力的重要技术途径。因此,AIOps是DevOps中AI和Ops的结合,希望利用AI“解决Ops方面的能力。AIOps或者智能运维应该是运维的一个重要演进方向。未来,企业级端到端的AIOps解决方案将成为一个重要趋势。”目前,AIOps的主要应用场景包括异常检测、预测分析、优化分析、根因分析、智能自动化运维等,机遇与挑战并存于一切,同样,AIOps也面临着诸多挑战。王金伦认为,最大的挑战是海量的优质数据、训练有素的有效模型和失败的成本,此外,运维领域还涌现出许多其他新技术,有助于提高运维的效率和效果.例如,利用机器学习、大数据分析等技术,提升根因分析、故障预测、自动修复等运维能力;利用ServiceMesh、微服务等技术重构运维平台架构,为DevOps环节提供反馈服务能力等;利用混沌工程等方法,一方面可以测试生产系统的应急响应能力,另一方面也可以测试运维平台在响应过程中提供的价值等等。