液体的软件

2017年1月17日由Fred Simon, JFrog联合创始人和首席架构师,共同作者液体软件:如何在DevOps世界中实现可信的持续更新(2018)

现代工业已经发展到这样的地步:一个公司的生存取决于它发布软件的速度。这不仅适用于科技公司,而且适用于大多数公司——他们都开发软件来维护他们的产品、网站、电子商务网站、预订系统、移动应用程序等等。hth华体会最新官方网站通过不断开发新功能来保持竞争优势,快速修复bug和问题以不损失流量,快速解决任何安全漏洞以保持系统安全,这只是其中的几个原因。

在过去,每两年发布一次软件的时代,每个版本都会隆重地贴上版本号的标签,然而由于三个因素,这个概念正在逐渐消失。首先,随着公司使用自动化来缩短发布周期,客户越来越不关心他们正在运行的特定版本——他们只想使用最新的版本。其次,随着软件变得越来越分布式,由微服务组成的软件系统没有一致的整体版本。每个微服务都是独立更新的,所以“宏版本是不断变化的”。第三是构成物联网(IoT)的互联设备的爆炸式增长。随着越来越多的设备进入电网,管理软件更新只能通过自动更新来处理,设备并不真正关心它们运行的是什么版本。

将这些趋势推断到不远的将来,我们将走向一个发布周期变得如此之短、微服务变得如此之小的世界,以至于在任何时候,都有可能更新某些内容。实际上,软件将变成“液体”,因为我们将连接到“软件管道”,将更新流到我们的系统和设备中;液体软件不断更新我们的系统。

这种运作方式在我们的日常生活中已经在一定程度上可见。一个例子是我们无法控制的云服务。供应商更新服务,我们只是透明地接受它。另一个例子是我们大多数人接受的手机固件和移动应用程序更新,或者配置我们的设备,让它们在后台自动发生,但要在企业中广泛应用,仍有一些挑战需要克服。

信任和安全:必须有适当的机制来验证企业使用的许多软件提供者,并验证流入其系统的软件没有被篡改。

软件质量:由于更新是自动的,软件供应商必须以非常高的信心发布软件。

Versionless软件:由于软件正变得无版本化,因此必须有其他方法来准确地识别客户正在运行什么。例如,如果在生产软件中发现了一个错误,供应商需要确定哪个客户收到了该错误。另一方面,如果客户报告了一个错误或问题,帮助台工作人员必须能够识别显示它的软件。

透明度和协调:对于无版本软件,必须有一种不同的方式来协调当前正在运行的软件与更新它的软件,以确定更新是否兼容和所需。

减少发布周期:公司仍然在努力减少发布周期,原因有几个:工具的可用性、对采用DevOps实践的阻力、日益自动化的挑战等等。然而,有些公司已经将发布周期缩短到几秒钟,这表明这确实是可能的。

随着软件变得越来越分布式,发布周期越来越短,最终它们将减少到零。在这一点上,软件将是流动的,从开发环境中不断流动,通过分发平台自动更新系统和设备。没有人工干预的自动化系统固有的安全风险必须通过行业标准工具来减轻,整个过程必须通过详尽的元数据进行调解,以提供消费者方面的透明度。随着安全性和透明性的进步,自动持续更新的液态软件的出现只是时间问题。