平台建设-如何完成 从DevOps-到平台工程的转变 姓名:宋凯() 个人简介 宋凯 高效运维社区资深技术专家 软件持续交付领域13年DevOps相关领域⼯作经验;前五⼋到家业务DevOps平台负责⼈ 资质: •DOIDevOpsEnterpriseCoach国际认证 •中国新⼀代IT产业推进联盟DevOps专家 •DAOps⾦牌讲师项⽬案例: •农⾏、交⾏、上交所、⺠⽣银⾏、浦发银⾏、中信银⾏、移动、电信、南航、⼀汽⼤众、华夏银⾏、华泰证券、海通证券、中泰证券等企业DevOps建设; 合作平台建设: •ADS、云效、蓝鲸、博云牧繁、恒⽣DevOps等 擅⻓DevOps平台设计、CI/CD领域相关的⼯具链应⽤、流⽔线设计落地。 GOPS全球运维大会暨研运数智化技术峰会2024·上海站 一个关于平台工程的故事 平台建设的成本 目录聊聊核心竞争力 渗透指数 01 一个关于平台工程的故事 争取讲透这个概念 国家层面:多项政策文件均提及或鼓励企业建设内部平台工程 平台工程的概念受到广泛关注 平台工程是一组用于设计、构建和运营支持软件价值交付和生命周期管理的平台的方法、流程和机制,具备自助式、自服务能力,能够最小化内部IT人员的认知负荷,提升DevOps/BizDevOps质量、效率与效能。 当前,在我国加速数字化转型的浪潮下,平台工程对于加强科技能力至关重要,多项政策文件均提及或鼓励企业建设内部开发运维平台。 中国证券业协会:建设统一的源代码管理工具和标准化的研发运维一体化工具平台 《中国银保监会办公厅关于银行业保险业数字化转型的指导意见》要求”推动科技管理敏捷转型。建立能够快速响应需求的敏捷研发运维体系,积极引入研发运维一体化工具,建设企业级一站式研发协同平台。建立适应敏态与’稳态’的全周期线上交付管理流程,完善数字化交付管理体系“ 国家金融监管总局:积极引入研发运维一体化工具,完善数字化交付管理体系 《证券公司网络和信息安全三年提升计划(2023-2025)》提到,建设统一的源代码管理工具和标准化的研发运维一体化工具平台,进而将安全控制手段嵌入信息系统开发的需求分析、设计、编码、测试、发布和运维等各环节中,有助于持续提升代码开发效率及安全 国际权威资讯机构预测 Gatner将平台工程列为2024年顶级战略技术趋势之一,已经连续两年将平台工程作为关键技术预测。根据Gatner的预测,到2026年,80%的软件工程组织将拥有平台工程团队,来提供内部服务、组件和应用程序交付工具,作为可重复使用的资源。其对”平台工程“的定义为:一套用来构建和运营支持软件交付和 生命周期管理的自助式内部开发者平台的机制和架构。 GGOOPPSS全全球球运运维维大大会会暨暨研XO运p数s智技化术技创术新峰峰会会22002244··上上海海站站 ” 01 全面推广、规模化 平台能力待加强 调查显示,DevOps落地成熟度处于全面级的企业最多,为41.20%,同比增长0.34%,具备自动化、规范化的特点;17.83%企业的实践成熟度处于优秀级,具备平台化、自服务化与度量驱动改进的特点;0.85%的企业处于卓越级,能够实现DevOps的高度智能化、数据化及社会化的特点。 02 目前PaaS市场发展比较成熟,存在着各种工具,如SAP云,Azure,AWSLambda等。大多数PaaS平台为开发人员提供了构建应用程序的环境,但只能提供一条路径,只能通过简单设置支持相对不那么复杂的用例。在企业规模扩张时,开发者人数增加,现有的PaaS解决方案难以满足不同需求。 03 目前,DevOps发展迅速,受到广大组织的积极响应。但是,在DevOps理念的落地实施中,研发人员发现自己需要负责一些原来没接触过的工作。 认知负担有可能会引起研发人员的不满,导致DevOps的实践工作受到阻碍。 04 基础设施管理:如管理Docker文件、Helm图表、Terraform代码等文件 流程设计:人员变动、组织架构调整,对现有工作流的影响 所有权管理:包含对接第三方工具以及产品的管理工作,成本等 这个DevOps平台最初解决了许多问题 某家公司中,开发团队和运维团队一直面临着: 开发与运维的协作不畅;部署过程繁琐且易出错;环境造成的故障;缺乏常见的代码质量和安全检测;系统监控和问题排查困难;频率部署低且响应速度慢;资源管理和扩展困难;缺乏可追溯性和变更管理;文档不足或不及时更新;缺乏统一的工作流程和工具集成 等问题,公司引入了DevOps的理念,搭建了一个DevOps平台。 协作问题 DevOps平台通过CI/CD流水线、自动化测试、版本控制等工具,将开发和运维流程紧密集成,使得开发和运维可以无缝协作。 效率问题 DevOps平台自动化构建、测试和部署流程,实现了一键部署,减少了人工干预和错误,提高了部署效率和频率 质量问题 DevOps平台集成了自动化测试、代码审查和持续集成(CI)工具,可以在每次代码提交后自动进行测试和构建,确保代码质量并降低缺陷风险。 一个优秀的团队 效率高 质量好 双倍的完成率 相同时间两个版本 结局? 关联模块代码冲突 配置、数据变更未验证 测试方案未升级、接口未同步 版本二依赖未就绪 线上故障 一个优秀的团队 效率高 质量好 双倍的完成率 相同时间两个版本 等待反复调试 等待测试环境连通 等待第二个版本的测试方案 等待版本排队 相同的时间相同的版本 关联模块代码冲突 配置、数据变更未验证 测试方案未升级、接口未同步 版本二依赖未就绪 线上故障 一个优秀的团队 效率高 质量好 双倍的完成率 相同时间两个版本 需求拆分功能解耦分支策略流水线模版预合并策略 依赖管理测试左移接口管理流水线编排参数管理 分层策略持续测试精准测试 测试案例管理 测试分析管理 所测即所投制品晋级质量门禁部署管理 部署审批与验证 范围广、成本高、复杂性产生的救火 关联模块代码冲突 配置、数据变更未验证 测试方案未升级、接口未同步 版本二依赖未就绪 线上故障 关于平台工程的故事-问题 依然于很多问题 复杂性增加 随着业务系统的增加,平台的功能越来越多,支持的技术栈也越来越丰富,开发人员需要花费大量时间去学习和适应平台工具,平台管理也变得更加复杂。 复杂性增加: 责任分配不明确: 缺乏标准化和自服务能力。 责任分配不明确、响应不及时 由于DevOps平台是由多个团队共同维护的,开发团队、运维团队和平台团队之间的职责边界不明确,导致问题出现时很难迅速定位和解决。 复杂性服务力 缺乏标准化和自服务能力 虽然平台上有很多工具和功能,但开发团队依然需要依赖平台团队来进行环境配置和资源申请,导致了流程的延迟和资源浪费。 一个优秀的团队 效率高 质量好 双倍的完成率 相同时间两个版本 场景可控 复制团队的管理和运作 方式内嵌到平台中 契合度高 减少单场景管理成本 减少单场景执行成本 减少单流程成本 只专注单独工作场景 用户反馈 只专注单独工作场景 开发 弹出工作 环境 提交代码 确认是否就绪 开发工具 创建一个开发任务初始化仓库自动匹配分支策略自动匹配工作流自动匹配流水线连接CMDB初始化环境 关联需求自动/辅助自测冲突校验 自动集成自动出包自动部署 自动分析自动准出/准入判断自动分析 公共服务支撑 二、标准化环境和模板 •建立基础设施即代码标准,通过工具,将基础设施配置自动化。 •针对公司内部常用的技术栈(如微服务、容器化、无服务器架构)设计标准化的模板,让开发人员可以快速部署。 •确保这些模板经过测试,并定期更新和维护,保证一致性和可 靠性。 四、强化平台的监控、治理和安全性 •部署全面的监控系统,以及日志管理工具来实时监控平台和应用的 状态,并进行可视化展示。 •实施访问控制和身份管理确保平台资源的安全性,并且建立审计日志记录和自动化的合规检测。 •配置自动化安全扫描工具和容器镜像扫描,及时发现并修复潜在的 安全漏洞。 一、评估当前DevOps平台现状 •收集开发和运维团队的反馈,评估开发者体验 (DeveloperExperience,DX)。 •分析现有工具链和CI/CD流程的效率,找出瓶颈和不足。 •评估平台的监控、自动化程度以及扩展性。 三、构建自服务门户和自动化工具 •开发一个自服务门户,集成环境配置、资源申请、CI/CD配置等功能,开发 人员可以通过简单的界面或API进行操作。 •集成企业工作流、实现应用的自动化部署和持续交付。 •将CI/CD流水线工具与自服务门户集成,实现代码提交后自动化构建、测试 和部署。 六、持续改进和团队文化转型 •建立定期的反馈和改进机制,通过开发人员和运维团队的反馈来不断优化平台功能。 •实行敏捷开发和DevOps实践,确保平台工程团队能够快速响应和迭代。 •开展跨团队的培训和工作坊,推广平台的使用方法和最佳实践,增强团队之间的协作和知识共享。 五、优化和扩展平台架构 •引入容器化和编排技术,实现微服务架构的自动扩展和资源调度。 •配置服务网格来增强微服务之间的通信管理和安全性。 •优化CI/CD流水线,使其支持多集群和多云环境的部署,提高平台的可扩展性。 小场景功能示例: 应用定义描述、检索查看生成代码框架 自动创建合适流水线自动生成需要环境自动匹配工作流 工作项关联分支自动化质检特性测试 自动化辅助评审 自动计算版本变更范围权限模型 模板化创建 •流水线支持模板化创建,基于模板创建,方便开发人员手工配置流水线的繁琐过程,以提升其配置效率 代码变更触发 •流水线支持代码变更触发,当代码发生变化时,将第一时间触发流水线运行,能够快速的反馈给开发人员代码修改的问题 质量门禁 •流水线中的质量门禁,可以很好的实现自动化的质量控制,实现质量检查左移,及早的发现潜在的问题,避免在集成后期出现问题而导致大范围修改,影响效率 编排和嵌套 •流水线的编排和嵌套,可以应对众多复杂的业务场景,实现流水线的灵活编排和调度 并行执行 •流水线的并行执行,除了节省平台的资源耗费情况,同时能够帮助开发人员减少平台的使用成本,使开发人员更能聚焦业务研发 配置代码化 •流水线通过支持配置代码化,做到更好的版本控制,并增加系统场景化服务的能力,提高易用性 01 新建需求/任务 创建应用 创建分支 关联需求 环境申请 从功能堆砌 主要导向:能用 从单点到场景 关注开发者体验,从单点自动化到场景自动化 02 到场景化服务能力 主要导向:好用 新建需求/任务 创建/注册应用 分支模型/策略 非生产环境 应用配置 生产环境 非生产环境 应用基础设施 生产环境 单点能力的不断提升并外延,与其他单点能力结合,形成场景,场景来源于企业既定的业务流程,实现工具的连锁反应 构建一个完整的应用画像,是实现场景化服务能力的基石 代码仓库 应用画像 流程规范 制品库 运行环境 运行配置 流水线 数据库 通过画像自动为开发团队提供不同场景诉求的服务能力 此图片来源于互联网 减少开发团队对平台内部的学习认知成本,使其更专注于业务开发 单击自此服务处与编自辑动化标题03 04单击平此台治处理编与辑安全标题 单击开此发者处体编验辑,D标X题01 平台工程 02单击标此准化处与编模辑板化标题 单可击观此察性处与编可辑扩展标性题05 06单团击队此文化处和编流辑程优标化题 为了解决这些问题,公司决定向平台工程(PlatformEngineering)转型。平台工程的核心思想以开发者体验为中心,建立一个“工程化”的自服务平台,让开发团队可以像使用一样产品具有相同使用平台的功能,降低学习成本和操