液体的软件

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

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

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

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

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

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

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

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

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

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

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