基于价值流的DevOps平台扩展软件供应链发展策略分析

 

近年来,高科技产品供应链的断供话题成国人的热点话题,缺芯少魂成为许多高科技企业约束生产能力的主要瓶颈,生产线上缺少产品所需的基础零部件和关键原材料,因此也让我国加大基础科学和核心生产工艺的投入力度。

 

作为企业级应用软件行业发展的亲历见证者,考虑软件供应链问题以及软件供应链与硬件供应链的差异,如何避免类似硬件产品的供应链问题值得我们深思

 

 

01

软件供应链的定义

 

什么是供应链?传统意义上来说,供应链即从采购、生产、仓储、运输、销售,最终把产品送到客户手上的过程,这一条供应产品的链涉及产品全生命周期的闭环。更宽泛的供应链应该从产品创造的开端就介入,即产品的研发、生产、销售以致产品生命周期结束。

 

从传统供应链的概念扩展来看,软件供应链就是从软件策划开始,通过需求分析、设计、编码、编译、集成、测试、打包、发布和部署运营,直到软件产品的生命周期结束(EOL,End of Life)为止。目前国内的绝大部分软件产品都不是从零开始研发,其软件成分有70%-80%由开源软件组成,而提供常用开源软件的组织或个人创作者很大部分来自于开源社区或软件库,大部分开源社区的软件来自于欧美国家提供,从这个角度来看,软件供应链已经全球化,可以视为全球软件供应链。

 

从经济学来说,全球供应链(Global Supply Chain)是指在全球范围内组合供应链,它要求以全球化的视野,将供应链系统延伸至整个世界范围,根据企业的需要在世界各地选取最有竞争力的合作伙伴。全球供应链整合了分散在各国的从原料供应商到最终消费者的关键商业过程,用于向消费者和其他利益相关者提供产品、服务、增值和信息交换。

 

如何低成本高效整合全球软件资源,包括软件基础架构、组件、模型、数据、算法等,形成自己的软件供应链竞争优势已经成为各软件研发组织必须面对的重大挑战。DevOps理念和工具的引入成为近年来高科技企业提供研发效能的重要抓手,也带来了在数字新基建中DevOps系统的建设热潮

 

价值导向的软件供应链管理

 

DevOps平台服务于软件的研发和运维过程,目标是为了更快速、低成本和高质量的研发和交付软件,但是如果和企业价值流管理脱节,则无法衡量软件研发部门创造和交付的产品价值,也无法度量和优化项目组合的投资回报率。因此基于价值流的DevOps平台已经成为下一代软件研发平台,Forrester在2021年提出,到2023年70%的组织将使用价值流管理来改善DevOps中的流量,从而更快地交付客户价值

 

 

02

软件供应链的价值流

 

从组织视角来看,价值流动的过程称之为价值流,但是从更加宏观的交付角度看,价值传递与增长的过程成为价值链。价值链分析法由美国哈佛商学院著名战略学家迈克尔·波特提出,把企业内外价值增加的活动分为基本活动和支持性活动,基本活动涉及企业生产、销售、进向物流、去向物流、售后服务。支持性活动涉及人事、财务、计划、研究与开发、采购等,基本活动和支持性活动构成了企业的价值链。价值链一旦建立起来,就会非常有助于准确地分析价值链各个环节所增加的价值。价值链的应用不仅仅局限于企业内部。随着互联网的应用和普及,竞争的日益激烈,企业之间组合价值链联盟的趋势也越来越明显。
 

 

 
传统供应链从所需的原材料开始,通过采购与这些材料的供应商建立联系。然后,这些供应商将材料交付给制造商(形成链中的下一个环节)。产品制造完成后,将流向链中的下一个环节:分销。其中包括存储,交付和零售商,它们构成了链中的最后一个环节,将产品传递给了消费者。软件供应链遵循相似顺序,以供应链的计划为例,在传统的供应链中,计划涉及确保您获取适量的原材料来满足需求。在软件供应链中,计划同等重要。
 
为了保证投入最小的资源以最快的速度实现产品功能,计划的关键点包括:
  1. 架构设计:设计软件架构,选用开源框架和组件;
  1. 软件采购:商业基础软件的购买;
  1. 资源开发:开发人员招聘计划;
  1. 人才外包:外部开发人员购买计划;
  1. 研发工具:软件交付平台;
  2. 组件管理:软件组件的生命周期研究。
 
计划完成后,软件供应链可能需要一个采购步骤。在传统的供应链模型中,采购阶段是指管理与供应商的关系。它还涉及采购更有效或更具成本效益的零件和材料以进行外包。
企业更加关心自己核心能力的建设和发展,发展整个价值链中一个环节,如研发、生产、运维等环节。近年来,软件研发组织开始重视采用DevOps,建立基于业务敏捷原则的DevOps工具和组织文化,提高团队效率和研发效能,由于组织战略的落地关注的不仅仅是研发价值,业务价值也是更加重要的关注指标,因此将业务价值与研发运维过程融合的BizDevOps概念正逐步被组织普遍接受,基于价值流指标的研发管理平台也在逐渐流行
 
大部分软件开发商都使用开源软件或组件作为其功能和产品的基础,这意味着需要对这些软件来源进行管理。因此,软件供应链中的部分采购链专用于分析产品的开源组件的合规性、质量和安全性,具体包括文档、支持、许可和安全隐患之类的因素。
 
每个软件公司都有自己交付方式,大致包括:售前、销售、实施和部署。实际上,应用传统供应链思维,可以更好的理解软件交付客户(或放在机器上)所需采取的步骤,并通过交付价值流的分析减少不必要的浪费,并能够跟踪到企业规划的目标(如KPI),从而支持战略目标的实现
 
 

03

软件供应链的市场环境

 
由于软件作为数字化产品,没有库存和运输限制,仅仅通过互联网就可以快速流动、下载、集成、测试和运行,并按照需求提供个性化的服务,软件供应链自然形成全球协作研发的网络。尽管没有采购活动将开源软件或产品、闭源组件和商业化软件整合在一起,形成各式各样的行业解决方案,开源软件具有公开、可使用、可修改、可分发的特点,已经作为供应链的重要组成部分,在降低软件开发成本的同时也提高了软件的交付效率,并带动了开源软件的飞速发展。
 
软件供应链呈现出以下特点:
1、中美贡献的开源软件份额最高,促进形成全球化软件供应链
当前软件很少从头开始构建,开发团队依靠第三方和开源组件来交付代码并更快地进行创新,而无需重新发明轮子,Linux的成功就是典型案例。软件不仅是程序员编写的,产品的部分组件是由开源软件组合而成。从一开始Linux就由组件软件项目构建,既是软件供应链的接受者,也是其他项目的组成部分。软件组件仍在快速增长,2021年排名前4位的开源编程语言下载量超过2.2万亿次,仅Maven Central中的Java就有4970亿次下载。
 
中国在GitHub的贡献者数量已占据GitHub活跃贡献者14%,仅次居于美国。据GitHub预测,到2030年中国开发者将成为全球最大的开源群体之一。未来所有的组织都离不开软件,软件供应链面向的市场环境也将全球化和多元化,国内也建立了相当多的开源社区和镜像仓库。
 
2、云环境成为主流软件部署方式,DevOps平台成为研发支撑工具
随着云计算技术成本优势的扩大,软件的运行主要集中在互联网和私有云环境中。欧洲和美国的商业软件提供商主要转向云环境,许多软件都是以SAAS产品提供,最具代表性的产品包括Salesforce、SAP和AutoCAD等,用户通过订阅模式使用产品,按照年度或月度进行付费,让软件的交付和计费更加灵活,用户的选择更多,而且云原生的应用程序构建比例越来越大。
 
云原生应用程序构建为在Docker容器中运行的一组微服务,在Kubernetes 中编排,并使用DevOps和GitOps工作流进行部署和管理。云原生应用架构包含 3 个特征:容器化、微服务和 DevOps,容器在虚拟化环境中运行,从而将包含的应用程序与其环境隔离。云原生架构是一种包含技术实现与管理(组织流程)的软件开发方法论。技术实现部分主要包括敏捷基础设施、云公共基础服务和微服务;组织流程部分主要包括持续交付和 DevOps。
 
3、软件供应链处于黑盒状态,难以追溯与跟踪软件组分
由于大规模生产的产品,比如工业装备,开发流程和制造管理历经工业化和信息化的磨合,相应的产品设计软件(CAD)、计算机辅助工艺设计管理系统(CAPP)及企业资源计划(ERP)等也成为企业常用工具,从原材料到制成品的具有完整的流程和记录,产品的组成采用工程BOM(物料清单)和制造BOM进行记录和跟踪,所以工业化产品的组成结构都非常清晰,为产品的售后服务和维护提供了详细的记录,汽车制造商可以针对批次产品进行一对一的召回,食品加工厂商也能根据制造过程明确标明产品的原料、营养成分和以卡路里标识的能量,便于用户选购。
 
然而,交付给软件制成品时,通常只有一个安装包和相应的安装文档,用户无法得到软件的成分,对用户来说就是一个黑盒产品,无法分辨软件的合规性和安全隐患。如果使用Java开发的Jar包或打好的War包,能够通过解压缩查看系统使用的一些开源组件,但是如果交付的是Native Binary文件,比如C语言、Golang或C++开发的软件,由于生成的是机器执行码,则无法直接通过解压分析二进制文件的组成结构,追溯和跟踪也难以执行。大部分商业软件引入开源软件成分或组件时,由于对于开源共享的信任,开发人员通常不会仔细核查开源软件是否存在安全漏洞和法律风险,所以也给用户留下了安全隐患。
 
 

04

软件供应链遇到的挑战与风险

 
最近一段时间,“俄乌冲突”引发了重大的全球局势变化。在真实硝烟背后,一场没有硝烟的科技战已激烈打响,众多美欧科技巨头先后宣布对俄“断供”。全球最大独立开源软件公司SUSE、美国开源软件巨头红帽、主流开源容器引擎Docker,纷纷宣布停止与俄罗斯业务的消息震动开源界。“科技无国界”的口号可以随时被国家利益所影响,契约可以毁坏,规则可以打破,开源的大门可以突然紧闭。
 
虽然软件供应链的全球化和开源闭源软件在交汇融合,同时伴随政治主张和政治倾向导致的贸易摩擦等国际环境因素影响,无论是契约还是开源,关键技术掌握在谁的手里都不如掌握在自己手中来得可靠。我们应当以开放心态拥抱开源、推动开源,但绝不能完美化开源,因为开源绝不等于自主。
 
所以我国的软件供应链也面对诸多挑战与风险:
1、缺少基础主流的开源软件核心技术
当前,我国自主开发操作系统、数据库、基础中间件、软件仓库等基础软件还没有形成规模优势,市场上应用比较成熟的服务器操作系统如CentOS、中间件Tomcat、NGINX、数据库MySQL、容器Docker、容器编排管理K8S等都是由美国公司主导和控制,我国软件企业目前还处于技术跟踪和应用推广阶段,缺少自主可控的系列产品与之竞争,因此面临技术风险。
 
中美贸易战以来,开源是否禁用一直被广泛讨论。国内有专家认为,长期以来,我国开源技术开发者“在别人田地里种庄稼”,虽然目前尚未受到美国等西方国家的出口管制,但未来是否会被管制仍属未知。
 
2、开源软件的法律风险
开源软件作为产品重要的组成部分,主要的发展基金皆由美国提供。目前全球三大顶级开源基金会(Linux、Apache、OpenInfrastructure)均由美国主导,受美国法律法规管辖,由美国掌握最终“解释权”。
 
同时由于License开源许可协议是全球开源知识产权规则体系话语权的重要衡量标准,全球主流开源协议(Apache、BSD、GPL、LGPL、MIT等)均由美国主导制定,开源开发者经常会受到商业利益驱动而随时改写或切换开源许可协议。因此在引用开源文件时面临法律风险。
 
此外,美国开始研究并将逐步推广软件物料清单(SBOM)国际标准,关键基础设施和医疗设备软件将率先采用。一旦主要厂商将SBOM作为必填项,我国软件开发商将面临公开软件组件的采用情况,开源部分将一览无余,法律风险将更加直接。
 
3、软件供应链的安全漏洞风险
 
由于开源软件具有公信力,一贯秉承开放、共享的原则,开源软件涉及源代码共享,很多配置信息中会涉及账号密码等敏感信息,如果不对代码进行审核检查,若开源软件存有恶意代码、病毒,极有可能会造成大量敏感信息与数据随着代码的共享而泄露,将给使用者带来较为严重的危害。
 
 
软件产品开发、构建、部署、交付等环节的生产线环境和发布渠道越来越多样化、多元化,IDE、代码库管理、制品管理、构建工具、CI/CD 工具、云平台部署、交付方式等的选择越来越多,这些辅助工具或渠道的不安全因素会作为“基因”传导至软件产品中,也会增加软件供应链的攻击面。同时开源软件公开的源代码,如果包含对企业数据库的访问代码,则可能导致整个数据库面临数据泄露的危险,同时也可能导致企业内部文件与用户信息的泄露。因此,开源带来的数据安全及隐私风险问题不可小觑。
 
 
对于软件开发体系中开发工具、开发团队、开发生命周期及软件产品和补丁的任何恶意行为,都可能破坏或影响最终用户的信息安全。2020 年底爆发的“太阳风”(SolarWinds)供应链攻击事件,使得美国政府对供应链安全的重视进一步提升。新思科技《2021 开源安全与风险分析报告》显示,84%的代码库至少含有一个漏洞,近三年漏洞比例逐年增高,60%的已审核代码库包含高风险漏洞。根据开源网安Source Check工具对热门开源项目的扫描结果看,53.8%的项目存在超危风险。
 

 

 

05

软件供应链的发展策略分析

 
软件供应链涉及到整个产业利益和国家安全,因此需要维护稳健的产业环境和安全管理政策,引导行业厂商在保证安全的前提下进行产品定位、技术开发和市场推广。在产业发展过程中,加强政策、标准、市场、技术等手段的协调,保障软件供应链的内生循环和自给自足,实现供需两侧的均衡有序健康发展。
 

 
 
从信创软件产业发展角度,提出以下建议:
1、加强软件物料清单的标准研究与应用推广,防范供应链安全事故
通过研究软件物料清单(SBOM),定义其标准数据元素和交换格式,有助于建立全国信创软件的供应链数据库,确保及时更新软件漏洞,快速修补安全漏洞,防止安全事故的扩散。
 
2、加强行业价值链的监测分析和规划引导,理清产业布局,防止行业内卷
通过软件物料清单,能够建立软件行业的价值链,用于监测分析,了解当前软件行业的产品组成,摸清产业家底,有助于产业规划布局,防止软件项目的重复开发和建设,浪费行业研发资源。
 
3、加大基础组件和关键核心技术的投入,形成自主可控系列产品,提高国际竞争力
基础组件和关键核心技术是我国软件产业的短板,通过软件供应链中产品或组件的数据监测,分析国产化自主可控程度,及时补足自主可控产品的短板,避免法律风险,提高产业的国际竞争力。
 
4、重视方法论的研究和咨询服务,加强产品质量的内部检测和行业认证,提升研发能效
研发效能是我国当前重点研究对象,通过方法论的研究及行业专家咨询服务,并通过软件价值度量及专业化的培训认证,可实现持续改进,从而提供交付能力。
 
5、改进软件产品定价政策,体现智力成果价值,引导行业健康发展
以人月为基础的软件产品或项目定价策略,导致项目交付导向,不利于建立产业具有竞争力的产品壁垒和关键技术的深化落地,无法体现基础软件和智力成果的价值,需要改变软件产品价值等同于项目人力投入的观念,才能引导产业健康发展。
 
推荐阅读
 
1、云加速宣布并购鱼传尺素
2、行业老炮对DevOps行业的新思考——软件研发工业化与智能化
3、DevOps VSM价值流赋能研发团队效能提升
4、产品升级 | 云加速VSDP1.5版本发布,四大亮点推荐