什么是软件供应链?
它是一个使用在线共享的第三方资源进行软件开发的互联系统。
提及“链”表明流程中的每个环节都会影响下一个环节,因此一个阶段的故障或延迟可能会减慢或停止整个流程。链条中的各个环节可以代表单个开发人员、整个团队或管理软件。
使用第三方组件是理想的选择,因为软件开发人员可以通过使用已经解决常见计算问题的工具(而不是编写自己的工具)来更快地开展工作。
尽管使用第三方组件构建软件从计算的早期就开始出现,但这种方式的思考很可能是在 20 世纪 90 年代随着 Linux 操作系统的出现而开始的。这种协作开发的软件是由一群相互联系的独立开发人员构建的,该软件取得了巨大的成功,现已广泛应用于从卫星到手表的各个领域。
为了更好地解释这个概念,让我们从这个术语在制造业的起源开始:
什么是供应链?
当你想到建造什么东西时,大多数人都会想到工厂。工厂生产的产品是由零件制成的,而让工厂停止运转的最快方法就是零件供应短缺。
在制造的早期,几乎所有零件都是完全在内部制造的。个别公司完全负责自己的供应,这意味着工厂某一部分的短缺将立即导致生产放缓。优化意味着确保您有稳定的零件供应。
随着从汽车到电器等各种产品和功能的需求不断增加,单个零件的复杂性也随之增加。公司从专门生产该特定零件的单独工厂采购零件才有意义。这个过程本身会增加零件的创建、拼凑,最后组装成最终产品,所有这些都在不同的工厂进行。
这些相连的供应商可以被视为“供应链”。
由于工厂及其最终客户的距离越来越远,因此供应链的概念也必须包括运输。您的卡车、火车或飞机是否可靠移动对于任何供应链都至关重要。
事实上,只有能够管理并适应软件供应链变化的公司才能生存下去。那些在优化供应链方面特别有效的企业可以脱颖而出。
尽管供应链很少成为制造业之外的一般话题,但过去十年的重大颠覆使其成为人们关注的焦点。尤其是当一艘船堵塞苏伊士运河时,当然还有 2020 年的 COVID-19 大流行。两者都强调了全球经济对供应链的依赖。
制造业与软件供应链有何关系?
与标准制造一样,软件开发最初是在内部构建所有部件的。随着时间的推移,集成第三方软件组件的项目数量急剧增加。我们现在估计超过 90% 的软件使用元素来自社区驱动的软件项目。
世界各地的开发团队现在都在使用这些项目中的软件,这些项目使用众所周知的“开源”内部结构来快速原型化、开发和交付软件。
如今,软件编写量减少,组装量增加,平均现代应用程序由70-90% 的开源组件组成。就像常规供应链一样,那些能够优化其软件供应链的人会在根深蒂固的竞争对手之后取得成功(想想 Zoom 和 Slack 与 Skype 和 Google Chat)。
这种“从头开始的软件”到“从零件开始的软件”的转变只是制造语言与软件相关的多种方式之一。这是因为软件开发和标准供应链之间存在许多重叠领域:
与标准供应链的相似之处
-
非常旧的软件和旧部件。两者都有问题。与仓库中金属部件的腐蚀类似,随着时间的推移,软件中发现漏洞的机会也会增加。
-
第三方来源可能会关门。这会给工厂和开发商带来问题。
-
供应商可能使用劣质零件。正如汽车零件制造商的问题可能会导致昂贵的召回一样,软件也需要使用来自良好第三方项目的优质零件。您的团队所依赖的软件可能没有使用最好的组件。
-
最新最好的并不总是最好的。尤其是当新供应商出现质量控制问题时。同样,软件供应链应该避免总是使用最新软件的诱惑。
尽管存在大量重叠,但并非制造中的所有主题都是相同的。以下是一些主题存在分歧的地方:
与标准供应链的差异
-
软件是无限可复制的。任何单个软件组件都不会耗尽仓库空间。然而,通常有很多选项可供选择,选择正确的选项可能很困难。
-
软件供应链攻击。恶意软件开发人员和其他不良行为者正在攻击软件工厂。大多数实体工厂很少需要担心攻击。
-
无需传输软件。由于宽带的广泛采用,这不再是一个问题。然而,连接仍然需要安全可靠。制造商和软件都需要验证正确的组件来自正确的人。
攻击与成长
如果您正在阅读本文,很可能是因为您在新闻中看到过对“软件供应链”一词的引用或听说过。
不幸的是,让这个话题从技术圈进入主流的是安全问题。特别是,一次攻击的目标似乎会影响不相关的公司。例如,2020 年底针对 SolarWinds 的臭名昭著的攻击最终因“软件供应链攻击”而影响了微软的服务。
一种攻击可以影响许多其他系统的方式是由于现代软件开发的集成性质。理解这一点可以为每个人打开改进软件的大门。
新闻中不常讨论的一件事是,不仅是攻击,而且软件供应链本身也在突飞猛进地增长。对于来自公开来源的软件,预计2021 年至 2022 年下载量将超过 3 万亿次。全球开发人员持续采用软件组件意味着我们预计 2023 年及以后这个数字将会更大。
优化安全软件供应链
毫无疑问,围绕该主题的大多数新闻都集中在安全漏洞造成的危害上。然而,软件供应链的改进不仅仅是为了防止损害。它们还满足了每个人对更好软件的渴望,包括更多功能和可靠性。
毫不奇怪,改进您在软件供应链中的角色也类似于制造业的建议:
-
引入自动化、持续测试和持续改进
-
尽早解决流程中的问题
-
选择最佳组件
-
向客户公开您的使用情况
许多读者可能会想“但是计算机不是已经自动化了吗?” 毫无疑问,计算机速度肯定更快,软件也更智能。然而,软件开发过程中的许多步骤仍然非常手动且以人为中心。
原文始发于微信公众号(河南等级保护测评):网络安全知识:什么是软件供应链?
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论