中国企业 研发⾼效能⽩⽪书 近年来中国企业研发正在从粗放型⾛向精益型,研发⼯作的“⾼效能”成为⼏乎每个研发团队共同的追求。 中国软件服务产业也在近5-10年中得到了⻜速发展,技术服务的边界不断拓展,赋能研发⾼效的产品层出不穷,适合中国研发环境的技术服务体系在不断完善。从结果上看,中国企业正在⾼效能研发的路径上快速前进。 本份报告以中国⾼效能研发企业为研究对象,尝试解读市场中具有代表性的⾼效能研发解决⽅案。本次报告由五个篇章组成,如CI/CD、ChatOps、企业级软件架构、CodeReview、价值流管理等主题。研究⼩组期待可以通过研究,帮助中国企业研发团队获得⾼效能研发新知。 3 ⽬录CONTENTS ⼀、关于企业级软件架构4 ⼆、常⻅的企业级软件架构⽅案8 三、极狐GitLab企业级软件架构13 四、极狐GitLab企业级软件架构最佳实践30 五、企业级软件架构市场发展趋势展望33 ⼀、关于企业级软件架构 企业级软件架构的定义和适⽤场景 定义:企业级软件架构,通常指在企业环境中设计和构建软件系统时所遵循的架构原则和指导⽅针。 适⽤场景:不同企业、不同⾏业、不同业务场景下企业级软件架构需求不同,较为常⻅的需求如规模化运营需求、⾼可 ⽤需求和⾼安全性需求 ⼀般情况下,较⼩规模团队不需考虑企业级软件架构,⼀旦企业⽤户数量、请求数量达到 ⼀定的规模,单⼀节点不能满 ⾜规模化运营需求,企业可以考虑企业级软件架构。 业务⼤规模增⻓ 企业级软件架构的使⽤⽬的是为了解决业务问题,所以需要有⾜够的性能保证多节点的使 ⽤低时延和稳定性,保证业务 ⾼效、顺利地进⾏。 ⾼可⽤需求 数据备份是保证数据安全可靠的常⻅⽅式之⼀。使⽤企业级软件架构,需要考虑数据安全性保证、可扩展性,建⽴⼀定的灾备机制,保证业务⽣命⼒。 ⾼安全性要求 企业级软件架构的 价值是什么? 企业级软件架构的核⼼价值是确保软件系统能够⾼效地满⾜企业的业务需求,能够适应企业业务环境的变化和挑战。 降本增效 在早期搭建赖以⽣存的基础架构系统时,出于经营考虑,⼀些公司优先考虑功能。随着项⽬开发深⼊,整体架构需要不断修改以适应业务需求的变化和发展,修改成本变得越来越⾼。通过采⽤企业级软件架构,可以帮助企业更快更好地优化架构,保障系统⾼可 ⽤性和⾼可靠性,实现降本增效的⽬的。 企业级软件架构的 价值是什么? 优化体验 企业级软件架构能够帮助企业提⾼⾃身整体运营能⼒,有助于进⾏基础设施建设和信息化建设。灾难恢复和零停机升级等可以保证基础设施的⾼稳定性和⾼可⽤性,不仅能够降低开发者的负担,还能为开发者和⽤户提供更好的使⽤体验。 保障安全 对于⽣产系统,⽆论是软件还是硬件,安全都是不可或缺的。在⽊桶理论中,安全是⼀个⽊桶的底线;在泛信息系统的安全等级中,也有机密性、完整性、可⽤性三⼤要素。⽽可⽤性受到的影响,也会影响安全评级。所以企业级软件架构是⼀套安全的信息化系统的必要组成部分,是信息安全的保障之⼀。 8 ⼆、常⻅的企业级软件架构⽅案 企业级软件架构 ⼩规模、低成本的企业级软件架构 ⼤规模、⾼可⽤的企业级软件架构 中⼤规模、修补型企业级软件架构 9 常⻅的企业级软件架构⽅案 企业级软件架构的重要性不⾔⽽喻,不同业务规模和⽬标诉求的公司选择搭建企业级软件架构的⽅式。 •企业级软件架构选择因素: ⽤户活跃度 业务体量 ⾃动化程度 存储规模和⽅式 团队规模: ⼩规模、低成本的企业级软件架构 团队规模在500⼈以下的⼩团队。 架构⽬标: 通常使⽤开源组件或者根据不同的诉求⾃建/⾃改企业级软件架构,满⾜短期的⽬标诉求,解决当下的问题。 架构特征: 此类企业级软件架构的不同组件之间兼容性有待调整和验证;可扩展性不⾜较难⽀撑企业⻓期的发展需求。 中⼤规模、修补型企业级软件架构 团队规模: 从⼩团队向中⼤型团队发展中的传统企业。 架构⽬标: 通常先做功能,不做或者后做质量,采取⾃主修改或单点使⽤开源组件的⽅式,单点问题单点解决。 架构特征: 很多“反模式”企业级软件架构出现,软件架构越发难以理解;内部质量低、开发⼈员理解历史架构困难、后期不易维护和扩展。 ⼤规模、⾼可⽤的企业级软件架构 团队规模: 团队⼈员规模较⼤、业务处在增⻓期的中⼤型企业。 架构⽬标: 能够根据不同类型的业务弹性分配资源,具备良好的可扩展性以满⾜业务的快速发展。 架构特征: ⼤规模、⾼可⽤、易维护的企业级软件架构;能够⽀撑业务数据峰值场景,满⾜多地办公和内外部协同办公需求,推动实现降本增效。 三、极狐GitLab企业级软件架构 极狐GitLab的企业级软件架构 •在数字化逐渐成为企业发展的战略共识的市场背景下,数字化⽣产过程⽇益成为更多企业的标准配置。 •⽽随着业务规模和团队规模的不断扩 ⼤,需要⼀个更稳定的架构来⾯对业务问题。这些服务更为复杂业务场景的架构解决⽅案产品,我们可以概括为企业级软件架构。 •极狐GitLab的企业级软件架构主要为 ⾼可⽤架构和分布式架构(GEO)两种常⻅形式。 15 极狐GitLab GEO多地部署架构 极狐GitLab的GEO多地部署架构可以实现⾃动后台验证,确保传输的数据与计算的校验和相匹配,相较于传统⾃建服务有更好的完整性。 极狐GitLab企业级软件架构包括⾼可⽤可扩展架构与GEO多地部署架构,经过了GitLabPerformanceTool²的充分测试,能够更好地为企业服务。 极狐GitLab ⾼可⽤可扩展架构 极狐GitLab的⾼可⽤可扩展架构是与基础设施⽆关的,极狐GitLab可以与不同IaaS层的基础设施对接。企业可以根据需求选择不同公司的云,包含但不限于阿⾥云、腾讯云、Azure、AWS等。 极狐GitLab 两种企业级软件架构 1、极狐GitLab⾼可⽤可扩展架构 极狐GitLab的⾼可⽤和扩展性源⾃全球流⾏的代码托管平台GitLab.com⼗多年的技术实践沉淀。 性能特征:理论上⽆限扩展的能⼒ 分布式架构 ⽔平伸缩 负载均衡 主从多副本机制 云原⽣ 适⽤企业规模 1000⼈50000⼈ ⾯向3000以内的研发⼈员架构图 (随着⼈员增加,节点数会有⼀定调整) 组件配置详情 ApplicationServer处理实时和异步请求,⾄少2节点实现HA PostgreSQL采⽤Consul⽅案,Redis使⽤Sentinel,⾄少3节点把相关组件部署在⼀起实现⾼可⽤ 代码仓库存储在Gitaly节点,建议使⽤3个节点保证⾼可⽤;Praefect作为Gitaly节点的proxy/router,⾄少需要3节点 共享存储建议使⽤对象存储 使⽤只读镜像,⽤户可以更快地获取项⽬和读取数据,同时仍将所有更改推送到主服务器 所有复制操作都是异步的,并在它们发⽣时排队等待调度 2、极狐GitLabGEO多地部署架构 极狐GitLabGEO专为分布式团队设计。分布式团队使⽤极狐GitLabGEO可以实现就近访问,减少克隆和获取⼤型存储库所需的时间,并改进⽤户协作流程。 项⽬存储库和数据库(包括 ⽤户帐户、问题、合并请求、组、项⽬数据等)都复制到 ⽤户的辅助实例上 极狐GitLabGEO多地部署架构⼯作流程图 19 如何选择合适的极狐GitLab企业级软件架构? ——满⾜⾼可⽤需求 企业可以根据不同的业务情况选⽤不同的极狐GitLab企业级软件架构⽅案: •500⼈以下企业:单节点架构遇到显著的性能问题且RTO时间≤0.5h; •500-2000⼈企业:RTO时间≤0.5h; •2000⼈以上企业:运维⼈员不具备丰富云原⽣经验,且不必须将部分组件部署在K8S上; ⽤户数≥500? 否是 单节点情况下是否已经遇到了性能瓶颈 否是否 ⽤户数≥2000? 是 单节点 RTO时间 ≤0.5h? 否是否 运维⼈员是否具备丰富云原⽣经验并务必将部分组件部署在K8S? 原⽣混合架构 是 可部署在同地的GEO⽅案,起到⼀定的负载均衡作⽤ 完全⾼可⽤架构最接近当前⽤户的云 2017.ALLRIGHTS 20 如何选择合适的极狐GitLab企业级软件架构? ——满⾜跨地区实时备份需求 相⽐较于⾼可⽤架构相对多样的适配标准,GEO多地部署架构的适配标准更为清晰:如果⼀家企业需要跨地区进⾏实时备份,那么这家公司即需要使⽤GEO异地 双站点架构。 是否需要跨地区的异地实时备份? 否是 单站点GEO异地双站点? 2017.ALLRIGHTS 21 极狐GitLab 企业级软件架构配置和部署 为了实现收益最⼤化,企业级软件架构的选择需要兼顾业务需求和部署环境。根据⽤户数不同,极狐GitLab给出了环境配置建议和部署架构的组合选择建议。 服务器 建议使⽤虚拟机或云服务器,相⽐物理机,虚拟机或云服务器有成本低和维护便利等优势。 建议使⽤SSD(读写IOPS硬盘 分别不低于8000和2000), 建议使⽤lvm逻辑卷挂载到单独的⽬录,⽤于存储极狐GitLab数据和⽇志。 ⽹络建议所有节点均部署在相同的⼦⽹,⽹络延迟建议保证 低于2ms。 21 22 极狐GitLab 企业级软件架构配置和部署 为了实现收益最⼤化,企业级软件架构的选择需要兼顾业务需求和部署环境。根据⽤户数不同,极狐GitLab给出了环境配置建议和部署架构的组合选择建议。 负载均衡 建议外部负载均衡和内部负载 均衡分别部署,减轻节点压⼒。 建议在Rails节点定期运⾏备份,其中运⾏备份的Rails节点,建议存储数据的分区⾄少为当前⽣产数据量的3-4倍⼤⼩,⽤于存放备份时产⽣的临时⽂件及备份⽂件。 ⽇常备份 架构 针对不同规模的⽤户规模,建议选择不同类型的架构形式。组合内容包括单节点、GEO异地双站点、组建分布部署、⾼可⽤、未聚合的完全⾼可⽤等。 不同⽤户规模 企业级软件推荐架构 200⼈以下 企业规模 建议采⽤: 单节点+⽇常备份的架构形式 •这种形式可以实现性能够⽤且节省资源的效果 200-500⼈ 企业规模 建议采⽤: 单节点+GEO+⽇常备份的架构形式 •这种形式可以实现性能够⽤且节省资源的效果 不同⽤户规模 企业级软件推荐架构 500-1000⼈ 企业规模 建议采⽤: 分布式部署+GEO+⽇常备份的架构形式 •这种形式可以确保极狐GitLab中的关键组件相对分散,降低单点整体宕机⻛险 不同⽤户规模 企业级软件推荐架构 1000-2000⼈ 企业规模 建议采⽤: 部分⾼可⽤+GEO+⽇常备份的架构形式 •这种形式可以确保极狐GitLab中的⼤部分组件 都可以通过各种机制处理故障 不同⽤户规模 企业级软件推荐架构 2000-3000⼈ 企业规模 建议采⽤: 部分⾼可⽤+GEO+⽇常备份的架构形式 •这种形式可以确保极狐GitLab中的⼤部分组件都可以通过各种机制处理故障 不同⽤户规模 企业级软件推荐架构 3000-5000⼈ 企业规模 建议采⽤: 未聚合的完全⾼可⽤+GEO+⽇常备份的架构形式 •这种形式可以确保极狐GitLab中的所有组件都是分散的并且可以通过各种机制处理故障。 不同⽤户规模 企业级软件推荐架构 5000⼈以上 企业规模建议采⽤: 未聚合过的、增强版完全⾼可⽤+GEO+⽇常备份,增加PG&Gitaly节点资源、硬盘 ⼤⼩、拆分Redis节点的架构形式 •这种形式可以确保极狐GitLab中的所有组件都是分散的并且可以通过各种机制处理故障 企业级软件架构: 搭建不是完成,仅仅是开始 1 2 3 4 5 安全性 性能和稳定性 新功能和改进 兼容性 技术⽀持 企业级软件架构并不是⼀次性⼯作,更为⻓期的使⽤维护⽔平也是企业 • 服务客户的重要能⼒考量之⼀。 •极狐GitLab产品拥有⾮常敏捷和迅速的软件发版频率;不断更新和提⾼的软件性能可以提供强⼤的原⼚技术保障系统。 •这⼀系统主要