- DevSecOps企业级实践:理念、技术与案例
- 陈能技
- 6100字
- 2023-11-29 18:49:47
1.4.1 中国DevOps现状
根据中国信息通信研究院(简称信通院)发布的《中国DevOps现状调查报告(2021年)》(受访企业以互联网企业、金融企业、运营商等为主),我们可以发现如下信息。
中国企业DevOps落地实践成熟度向全面级继续扩张。调查结果显示,目前成熟度处于全面级的企业占35.40%,同比增长8.84%;16.53%的企业成熟度处于优秀级;0.87%的企业成熟度处于卓越级。
超八成企业已在不同程度上实践敏捷开发,同比增长近三成。调查结果显示,在采用DevOps的企业中,32.24%的企业已经使用敏捷开发了一段时间;28.82%的企业已有一半以上的团队具备较高水平的敏捷开发能力;22.04%的企业的所有团队已经熟练掌握敏捷开发。
超六成企业能够在项目过程中实现调整需求顺序或置换需求。调查结果显示,36.88%的企业在项目过程中可以定期调整需求顺序和置换需求;15.95%的企业在项目全程随时可以调整需求顺序和置换需求,并实现全过程可视化管理。
企业广泛采用实体化敏捷团队,并以持续交付更多业务价值为发展方向。调查结果显示,超七成企业具有实体化敏捷团队,同比增长两成。
Sprint迭代成为继发布计划、看板/任务板、每日站会之后第四位应用超半数的敏捷管理实践。调查结果显示,Sprint迭代、发布计划、看板/任务板、每日站会这4位应用占比分别为51.38%、67.01%、66.14%和62.43%,而2020年的应用占比分别为40.47%、60.06%、52.96%和57.91%,普及程度明显提高。
超半数企业培训或实践过Scrum和看板敏捷管理理论。调查结果显示,培训或实践过Scrum和看板敏捷管理理论的企业占比分别为53.88%和50.00%。
持续集成是最受欢迎的敏捷工程实践,与自动构建、单元测试、持续部署一起占据敏捷工程实践的前四。这4种敏捷工程实践在所调查的企业中的采用占比分别为85.16%、81.61%、81.53%和80.66%
企业重视采用需求和项目管理工具、协作工具以及文档知识库工具提升开发效率与质量。调查结果显示,在需求和项目管理工具方面,49.67%的企业使用Jira;在协作工具方面,52.24%的企业使用微信,45.96%的企业使用钉钉;在文档、知识库工具方面,31.34%的企业使用Confluence。
多数企业将源代码、应用配置、构建和部署自动化脚本均纳入版本控制系统进行统一管理。调查结果显示,31.81%的企业将源代码、应用配置、构建和部署自动化脚本均纳入版本控制系统;23.43%的企业将源代码、应用配置、构建和部署自动化脚本、数据变更脚本、环境配置等均纳入版本控制系统;仅有2.32%的企业将源代码分散在本地自行管理。
近九成企业将构建产物纳入统一制品库进行规范管理,同比增长一成,并且企业对制品晋级管理关注度上升。调查结果显示,26.05%的企业将构建产物以唯一版本号纳入统一制品库进行规范化管理;30.62%的企业将构建产物、构建依赖组件等所有交付制品纳入统一制品库进行规范化管理;17.14%的企业将所有交付制品纳入统一制品库进行规范化管理,并且实现制品晋级管理;13.55%的企业将所有交付制品纳入统一制品库,实现制品晋级管理,并且具有完善的开源合规的制品管理。
大部分企业的变更管理过程逐渐清晰,但是具备统一的工作项管理系统的企业仅三成,这导致企业变更过程可视化和全过程数据分析能力不足。调查结果显示,30.71%的企业已建立代码基线,有统一的工作项管理;29.02%的企业所有代码变更均关联工作项;19.29%的企业已使用统一的工作项管理系统并贯穿软件生命周期;10.09%的企业已支持可视化变更生命周期和全程数据分析管理。
企业自动化构建能力普及,提交即构建采用率为66.30%。调查结果显示,14.57%的企业已实现代码提交自动触发构建,不同分支的代码构建频率可根据团队需要自定义调整;31.13%的企业实现代码提交自动触发构建,且按需制定构建计划,团队可自定义调整;20.60%的企业仅实现代码提交自动触发构建。
企业自动化构建能力进步升级可以推动企业构建频率提升。调查结果显示,在采用人工构建的企业中,75.12%的企业构建频率为不定期执行构建,构建周期长;在采用脚本实现自动化构建的企业中,25.59%的企业能够实现每日自动构建,构建周期明显缩短;在支持多种构建方式、持续优化构建服务平台的企业中,62.41%的企业具备代码提交自动触发构建、不同分支的代码构建频率根据团队需要自定义调整的能力。
企业持续集成平台自服务化,助力组织级交付能力提升。调查结果显示,19.03%的企业有专门的持续集成团队负责维护持续集成平台;24.67%的企业实现持续集成平台自服务化;而31.18%的企业已经在此基础上提升组织级交付能力,实现能够持续优化和改进团队的持续集成服务。
近三成企业已实现每天多次向代码主干集成,较去年增长10%。调查结果显示,27.74%的企业每天多次向代码主干集成,即可按需集成;23.89%的企业任何变更(代码、配置或环境)都会触发完整的持续集成流程;20.97%的企业每天至少一次向代码主干集成。
软件质量被企业持续关注,持续集成问题普遍在1天内完成修复。调查结果显示,近九成企业能在1天内修复持续集成问题,其中,25.78%的企业一般能在半天到1天内修复持续集成问题;25.49%的企业能在半天内完成修复持续集成问题;22.22%的企业能在半小时内完成修复持续集成问题;10.09%的企业能在10分钟内修复持续集成问题。
近七成企业的团队已实现代码扫描、单元测试和接口测试自动化,但模糊测试、混沌测试和全链路测试等仍待提升。调查结果显示,68.79%的企业实现了代码扫描自动化;68.50%的企业实现了单元测试自动化;64.29%的企业实现了接口测试自动化。
测试阶段持续左移,越来越多的企业使用单元测试,并且接口/服务级测试覆盖率高。调查结果显示,26.34%的企业以单元测试为主,接口/服务级测试覆盖率高;24.31%的企业的接口/服务级测试在接口开发完成后进行;20.13%的企业测试在开发前介入,代码级和接口/服务级测试均在代码开发时同步进行。
虚拟机和容器技术被广泛应用。调查结果显示,超过八成的企业使用了虚拟机和容器技术,同比增长约5%。
近五成企业实现部署发布自服务化。调查结果显示,45.46%的企业实现部署发布自服务化,仅有3.78%的企业人工完成所有环境的部署。
超七成企业的持续交付流水线包括构建、部署和测试等多个环节。调查结果显示,43.65%的企业的持续交付流水线中包括自动化构建、部署、测试等环节;另外,17.23%的企业的持续交付流水线可以直通生产环境;14.57%的企业在此基础上实现了智能调度,并持续优化。
近五成的企业变更前置时间小于1周。调查结果显示,7.99%的企业变更前置时间小于1小时;11.55%的企业变更前置时间为1小时到1天;21.28%的企业变更前置时间为1天到1周。
部署频率为1周到1个月一次的企业占比超六成,同比增长近一成。调查结果显示,6.19%的企业平均1天到1周在生产环境部署一次;28.25%的企业平均1周到2周在生产环境部署一次;32.90%的企业平均2周到1个月在生产环境部署一次。
GitLab、Maven、Jenkins和Docker是实践较广泛的持续交付工具。调查结果显示,这4种工具应用占比分别为53.45%、59.33%、64.20%和55.48%。
企业监控管理趋于完备,自动化、智能化决策能力亟待增强。调查结果显示,超过八成的企业具备全面的监控管理能力,监控已覆盖至系统、应用与接口日志等;仅二成的企业实现了监控告警平台的智能化与自动化决策。
近七成企业实现统一的标准化的监控数据采集管理,部分具备数据采集传输保障及智能化分析运维全生命周期数据的能力。调查结果显示,仅有19.48%的企业的数据监控管理现状是分散的;34.25%的企业具有统一的标准化的监控数据采集、存储及应用;17.44%的企业具备监控大数据的基础运维能力;12.12%的企业具备用智能化技术分析运维全生命周期数据的能力。
企业持续重视事件与变更管理能力建设,可视化能力不足问题仍然突出。调查结果显示,目前占比最多的是有完善的事件与变更管理流程的企业,占比 37.00%,同比增长 14.21%;23.49%的企业具备覆盖全生命周期的事件与变更管理能力,流程与场景部分实现自动化和可视化;10.55%的企业深度规范化,部分场景实现智能化技术应用。
不足四成企业具备自动化配置管理系统/平台,企业智能化配置管理和关联分析能力较弱。调查结果显示,18.77%的企业具有自动化配置管理平台;13.70%的企业具备智能识别配置对象的关联关系的能力,其配置信息能为技术运营活动提供决策支持;仅有 9.11%的企业具有智能化配置管理,支持场景智能生成配置对象的关联规则和提供准确的决策依据。
企业重视容量和成本管理的关联分析、柔性服务及灵活管控能力。调查结果显示,超七成企业支持全生命周期的容量和成本管理,同比增长近一成,其中35.04%的企业具有技术运营全生命周期的容量和成本管理,有规则和流程支持;25.34%的企业具备灵活管控成本的能力;15.21%的企业支持全链路的容量管理能力。
超三成企业结合监控实现自动化扩缩容的高可用管理,同比增长两成。调查结果显示,16.74%的企业能够结合监控自动扩缩容,自动梳理系统拓扑结构;20.82%的企业实现了动态扩容自动化,并采用分布式缓存、分表分库等技术,实现了同城多机房实时数据备份、异地数据备份;仅有10.68%的企业实现了全面自动化和智能化的高可用管理。
业务连续性管理能力仍待健全,半数企业恢复时间目标(Recovery Time Objective,RTO)在 99.9%以下。调查结果显示,21.99%的企业具有基础的业务影响分析与业务风险分析能力,故障恢复时间较长;29.18%的企业整体RTO达到99.9%;19.66%的企业整体RTO达到99.95%;13.70%企业整体RTO达到99.99%;仅有8.08%的企业整体RTO达到99.995%。
仍有近三成企业处于快速处理关于用户体验的投诉问题的阶段,对用户体验管理的重视程度应继续加强。调查结果显示,仍处于快速处理关于用户体验的投诉问题的阶段的企业占比26.56%,同比下降 14.52%;27.33%的企业具有端到端全链路事件埋点,提升部分场景的用户体验;9.73%的企业引入人工智能技术,建立业务领域级别的用户体验类知识图谱或专家系统。
自动化运维工具可以帮助企业更稳定、更安全和更高效地完成监控、分析和服务保障。调查结果显示,Elastic、Zabbix、Grafana、Logstash和Prometheus是较受欢迎的5种自动化运维工具,其应用占比分别为43.01%、36.58%、34.25%、30.41%和29.32%。
Spring Boot和Spring Cloud仍占据当前企业为实现微服务所选择的技术的前两席。调查结果显示,有超过四成企业使用Spring Boot或Spring Cloud实现微服务,使用Spring Boot和使用Spring Cloud的企业占比分别为54.94%和44.23%,同比分别增长23.72%和10.26%。
近七成企业应用架构由专业人士设计,仍有超两成企业应用架构按经验简单拆分成若干可独立开发和编译的功能模块。调查结果显示,19.52%的企业应用架构由专业人士设计和进行模块拆分,各模块可以通过本地进程间通信独立部署;25.95%的企业应用架构由专业人士设计,对设计质量有明确的度量流程,应用各模块通过网络进行通信、独立部署和运行;18.78%的企业应用架构由专业人士设计,能够将系统复杂度降到最低,对应用架构拆分情况形成持续反馈与改进机制。
多数企业均有接口规范和管理流程,越来越多的企业使用统一的接口开发与管理平台。调查结果显示,仅有 1.53%的企业无接口规范和管理流程;34.33%的企业有接口规范和管理流程,并强制实施;27.69%的企业有接口规范和管理流程,使用统一的接口开发和查询平台;14.48%的企业有接口规范和管理流程,使用统一的接口开发与管理平台,并实现各个模块自动注册接口相关信息和自动校验。
超七成企业的应用可实现不同程度的自动扩缩容,部分企业能够根据系统部分特征自动生成扩缩容策略。调查结果显示,24.90%的企业可人工修改应用部署配置,由系统实现应用的自动扩缩容;根据应用的部分特征指标自动生成扩缩容策略、采用自动化方式进行扩缩容的企业占比28.51%,同比增长6.42%;具有多维度自动扩缩容策略、采用自动化方式按需进行扩缩容占比20.03%,同比增长6.20%。
企业重视应用故障修复能力建设,超六成企业具有统一的故障修复平台。调查结果显示,31.00%的企业有统一的日志规范、统一的故障修复平台,可利用工具辅助分析故障;18.22%的企业的应用日志支持全链路追踪,单个应用系统可自动处理部分故障,同比增长6.87%;12.81%的企业的应用日志支持图形化展示全链路追踪信息,实现了自动预警、故障定位和故障自动修复。
超六成企业实现了对整体应用性能管理的优化设计。调查结果显示,33.78%的企业对整体应用性能进行了系统化的、全方位的设计;15.30%的企业支持性能循环管理,建立了制度化的性能设计流程;12.39%的企业建立了完善的性能设计流程,并支持对性能指标的自动化实时分析。
五成以上的企业尝试实践DevSecOps。调查结果显示,53%的企业引入了DevSecOps。
企业关注安全能力建设,近五成的企业有专业安全团队,较去年增长一成。调查结果显示,42.48%的企业具有专门的安全管理团队与安全主管,其中23.01%的企业具有高级别的安全管理组织及不同方向的安全专家团队,仅有13.63%的企业具有对行业作出突出贡献与业界影响力较大的安全专家团队。
企业关注代码安全性、安全测试与漏洞扫描、第三方开源库的安全性、设计符合安全标准和规范等方面的安全内容,外部威胁与攻击、个人信息保护也受到企业重视。调查结果显示,关注代码安全性(76.46%)、安全测试与漏洞扫描(73.10%)、第三方开源库的安全性(66.73%)、设计是否符合安全标准和规范(64.25%)、数据安全(63.89%)、需求是否包括安全相关需求(59.65%)、安全监控(57.88%)、外部威胁与攻击(56.64%)以及个人信息保护(54.51%)这 9 个方面的安全内容的企业均超过半数。
企业自动化安全测试持续向全流程覆盖演进,可帮助企业尽早发现问题,避免安全风险。调查结果显示,55.09%的企业在代码开发阶段添加了自动化安全测试,同比增长14.51%;50.79%的企业在构建与集成阶段引入自动化安全测试,同比增长10.79%;49.66%的企业在质量保证(Quality Assurance,QA)/测试阶段引入自动化安全测试;42.83%的企业能够在应用架构设计阶段就引入自动化安全测试。
源代码静态安全检测、容器镜像安全扫描和Web应用防火墙(Web Application Firewall,WAF)成为企业应用较广泛的DevSecOps技术实践。调查结果显示,这3种DevSecOps技术实践具体应用占比为52.57%、44.25%和42.30%。
半数企业具有完善的数据安全管理要求和流程,但自动化、智能化地识别、预测和处置数据安全风险的能力不足。调查结果显示,26.59%的企业具有数据安全管理要求和数据安全管控机制;34.43%的企业具有完善的数据安全管理要求和流程,可对数据进行全生命周期安全管理,并具有自动化数据安全管理工具。
九成以上企业在软件开发过程中进行安全需求管理,但企业的自动化管理能力和智能化威胁建模能力亟待提升。调查结果显示,27.35%的企业进行安全需求分析和安全设计评审;22.65%的企业具有完善的威胁建模分析方法;24.29%的企业对安全需求进行自动化管理,具有标准化的威胁建模方法和工具以及标准化安全功能组件;21.63%的企业在软件开发过程中的安全管理具备智能化能力;仅有4.08%的企业在软件开发过程中无安全管理。
超六成企业具有完善的安全测试工具链,并实现对源代码、依赖组件及配置的安全管理。调查结果显示,26.86%的企业具有完善的安全测试工具链,并部分集成到流水线,安全测试结果可自动化展示;23.11%的企业持续集成/持续交付(Continuous Integration/Continuous Delivery,CI/CD)流水线中自动化集成较完善的安全测试工具,具有集中的漏洞管理平台;16.48%的企业将安全管理纳入开发交付全过程,并具有智能化的全过程安全交付平台。
企业重视对安全运营监控平台的建设,但智能化运营安全风控平台的感知、决策及处置能力不足。调查结果显示,29.84%的企业具有安全运营中心(Security Operation Center,SOC),具备完善的情报监测、威胁发现、告警及应急响应流程;25.42%的企业具有安全监控及告警管理平台,定期进行安全扫描和漏洞修复;16.53%的企业具有智能化运营安全风险管控平台,可智能化感知、决策和处置运营过程风险等。
安全工具百花齐放,其中代码安全工具、主机安全工具及Web安全工具等应用较广,容器安全、交互式应用安全测试和网络流量分析技术等应用率较低。调查结果显示,代码安全工具Coverity、主机安全工具绿盟、代码安全工具Fortify以及Web安全工具AppScan是企业应用最为广泛的4种安全工具,占比分别为32.74%、31.86%、23.36%和23.36%。