Bloomberg以其新闻服务和无处不在的股票交易终端而闻名,但实际上Bloomberg的19000名员工中有超过1/4是软件工程师和技术专家,他们每年生产数以千计的定制应用来帮助客户了解和预测金融市场。
Bloomberg每天运行600多个独有的应用,以支持还在开发中的所有应用。Bloomberg的数据分析和基础架构负责人Steven Bower说,管理如此庞大的应用结构是非常复杂的,他们不得不自己编写软件来自动化反复运行相同机器实例的过程,或者在软件中模拟计算机——令人头疼而又单调的事情。
3年前,Bloomberg开始尝试使用Kubernetes。Bloomberg是由谷歌开发的一种编排工具,被作为开源软件对外发布。Bloomberg过去曾经试用过其他编排工具,但发现这些工具很不成熟,而Kubernetes却有所不同:它运行良好,不断扩大的开发人员社区正在迅速填补各个部分,使Kubernetes更好地发挥功能。
今天,Bloomberg的开发人员正在将大部分开发基础设施迁移到Kubernetes。Bower说:“他们可以创造一个完全成熟的环境,并且在桌面上和在生产环境中使用感受是一样的。”
这突显了Kubernetes的基本承诺:这是一种开发和部署软件的全新方式,现在将引发企业计算的巨大转变,不仅加快了将想法变成软件的速度(通常是数量级的),而且还将这个过程推向了云端。
与此同时,Kubernetes通过让企业更容易地使用多个公有云提供商,从而提振这个由AWS和微软以及谷歌等竞争对手的整合世界。实际上,有些人把Kubernetes称为面向云计算的操作系统——这将对企业和消费者产生深远的影响。
一夜之间的轰动
自从2014年年中发布以来,Kubernetes已经成为史上普及最迅速的开源项目。据451 Research称,在那些使用容器软件(由Kubernetes管理)的企业中,有70%已经采用了Kubernetes。容器可以让应用封装成为易于运行在企业任何数据中心计算环境或者公有云的格式变得更为简单。据估计,到明年Kubernetes的企业采用率将达到90%。
不过,Kubernetes的吸引力不仅限于加快软件开发。Kubernetes已经得到了所有主要云提供商和本地基础设施提供商的认可,这意味着为其编写的软件几乎可以运行在任何地方。这将使云快速成为几乎所有新软件开发的默认平台,还消除了跨多个公有云和私有云平台迁移软件工作负载的障碍,为企业组织提供了前所未有的操作灵活性。
“开发人员开发了一个应用,该应用运行在容器中,它在[质量保证]环境和生产环境中在笔记本电脑上运行的表现是相同的,”GE运输数字化解决方案首席软件架构师Aaron Mitti这样表示,该部门正在将大多数用于管理大型铁路和运输船队的软件迁移到容器中。“从软件开发生命周期的角度来看,这确实有所帮助。”
专家表示,Kubernetes还将从根本上改变大多数软件的构建方式。软件交付加速,更可预测,更加可靠。Kubernetes消除了很多实验障碍,因为失败的后果影响较低。因此,企业组织可以更灵活地将新的创新推向市场并在其基础上进行构建。简而言之,Kubernetes最终可以将长期承诺的数字化转型理念变为现实。
Gartner研究总监Gregg Siegfried说:“能够在任何一种系统——从[35美元的]Raspberry Pi到25000节点的集群——上运行相同的操作系统,这个一个变革性的想法。”怎么这么说呢?MapR Technologies企业架构副总裁Jim Scott说,任何好的技术“都应该像魔术一样,”对于许多用户来说,Kubernetes确实如此。
管理员们喜欢让事情变得简单,用单个命令就可以设置新集群,一次性就可以在数千个容器上管理和平衡工作负载,此外还可以把数据访问管理设置到细粒度级别,从而无需为安全目的设置副本设备。
Bloomberg的Bower说:“我觉得总有一天我们回首的时候会说,真不知道没有这些我们要怎么工作。”
吸引的不止是极客
从表面上看,容器编排是一个只有极客们才会喜欢的话题。但Kubernetes基本上自动化了大规模设置和管理软件容器的整个过程。要了解为什么这一点很重要,将有助于了解你了解软件开发的演化历程。
在商业计算的前40年发展过程中,软件是以单一的方式构建的,逻辑、数据库访问、用户界面和报告功能都集成到一大块代码中。这种方法很慢,且容易出错,因为单行中如果出现错误会导致整个应用崩溃。
从20世纪90年代末开始,大多数软件开发开始转向服务的方式,在这种方式中,应用被分解为模块化的单元,通过网络相互通信。由于这种服务模块可以并行构建,因此加快了开发的速度,而且服务是可以复用和共享的。
但是这种方法也存在很多问题。首先,要管理由数百或数千个服务组成的应用几乎是一件不可能的事情,特别是这些服务运行在不同的物理和虚拟机上的时候。个别服务的减速或故障也会影响依赖于这些服务的其他服务,从而带来难以预测的性能问题。与特定操作系统版本和数据库相关的服务很难与其他人共享的。
容器解决了服务中固有的许多问题,至少从开发人员的角度来看。这些自容器的软件包中包含了应用运行所需的所有内容,包括操作系统内核、开发人员工具、库甚至数据库。在2013年正式开源的Docker平台,提供了第一个运行软件容器的一致性平台,这意味着封装在容器中的代码可以在任何支持Docker的平台上——也就是说,所有这些平台。
开发者的爱
开发者喜欢容器。预配置的容器可以保存在库中,这样就可以反复使用这些容器。容器与虚拟机非常相似,可以在几秒钟内启动,避免长时间等待分配基础设施、安装和测试软件。容器固有的可移植性意味着开发者可以在笔记本电脑上构建应用,然后将应用移至服务器或云中,而不会出现兼容性问题。“任何简化基础设施的东西都是必要的,目的是为了让开发者专注于应用代码,”Forrester副总裁、首席分析师Dave Bartoletti说。
容器已经迅速成为服务的首选工具,但并未解决复杂性的问题。容器化服务很难大规模管理,且性能取决于底层架构的健康状况。运行在一个过载集群上的容器化服务会拉低其他所有相关服务的性能,这意味着运营人员仍然必须关注管理基础设施的一些细节。
Kubernetes解决了这些问题,提供了一组服务让容器能够相互通信,同时还可以处理大部分粗糙的管道细节。例如,Kubernetes可以自动将资源分配给服务器以提高性能,或者关闭并重新有问题的容器,避免出现性能问题。
环境规模越大,Kubernetes带来的好处就越多。Kubernetes可以像智能手机一样透明地自动更新软件,还可以自动提供一致的存储和网络服务,帮助操作人员减轻一些繁重且容易出错的任务。
Red Hat产品战略总监Brian Gracely表示:“企业可以将大量应用组合放在Kubernetes上,设置一个底层管理层。使用得越多,价值就越高。”
Ygrene Energy Fund就遇到了这种情况。Ygrene是一家成立有8年时间的融资公司,帮助房主通过提高能效项目获得低成本贷款。Ygrene的竞争优势部分是来自于它与金融机构建立的关系。要构建与很多银行和抵押贷款公司接口的系统,采用单一开发方法就会是极其复杂的。
所以Ygrene采用了基于微服务的方法,使用容器和Kubernetes编排功能。Ygrene高级软件工程师Austin Adams在5月举行的KubeCon + CloudNativeCon EU 2018大会上表示:“目前一切都是运行在一个容器内的。”
每当Ygrene需要与另一个系统集成时,它就会创建一个小型的集装箱化服务,并将其添加到组合中。Adams说:“后端看起来一团糟,微服务到处散布。这就是我们使用云原生工具来管理这些的原因。”这让Ygrene的承销系统赢得了准确性和质量相关的奖项。
Kubernetes早期的两个特点是很显著的。一个是代码库没有被“分支”,或者被分解成一个单独的项目。Fork是开源开发人员解决分歧的常用方法。原始项目的副本是在另一个方向上生成并演化的。分支可以恢复停滞不前的项目,但也可能引入不兼容的问题。
Wikibon的首席分析师James Kobielus说,在过去四年中Kubernetes代码一直保持一致,这“保证了你可以构建和部署到任何人的发行版上,并将服务来回迁移,无论是在本地、在云端还是在边缘。所有这些都是可以无缝互操作的。”
Kobielus有34个Kubernetes发行版,这些发行版已经得到了负责培育开源云项目的机构——Cloud Native Computing Foundation的认证。另外有21个托管平台即服务产品包括有嵌入式的Kubernetes。到目前为止,所有这些都使用相同的代码。
普遍采用
这是Kubernetes其他主要成果的基础:Kubernetes已经被所有主流的云和平台即服务或云应用创建工具提供商以原生形式所采用。Forrester的Bartoletti说,“想象一下未来很多企业将有一个使用Google容器和AWS容器引擎的Pivotal容器服务,这一点都不令人感到意外。”
GE运输部对几款编排管理器进行了评估,发现所有这些管理器都存在不足。当时Kubernetes也还不成熟,但是各大厂商的支持热潮令人信服。GE首席技术官Wes Mukai表示:“我们看到微软、Red Hat等厂商都有计划支持Kubernetes。这是一个巨大的动力,让像我们这样的企业更容易做出决定。”
其中很大一部分是与Kubernetes作为Google大规模基础设施的编排工具的起源有关。搜索巨头Google花了十多年时间开发和测试Kubernetes及其前身Borg,然后将代码以开源的形式发布。
这意味着发布到社区的该项目已经在全球要求最苛刻的云上进行了严格的测试。与开发人员只是半心半意地发布到社区的许多软件项目不同,Google对Kubernetes采取了相对不干涉的方法,积极鼓励其他开发人员甚至竞争对手在代码库基础上进行构建。
Google高级软件工程师、Kubernetes主要开发人员之一Tim Hockin表示:“为了让Kubernetes变得重要,它就必须不能只属于Google。我们比我们预想地更早迈出了这一步,为采用者打开了这扇大门,并获得了一些重要的补丁和影响力,这给了人们一种归属感。”
这让让其他软件公司相信,Google不会试图利用Kubernetes来作为自己云服务的优势。即使是Amazon也无法抗拒这股潮流。MapR公司的Scott表示:“我认为Amazon很艰难地认可了Kubernetes。”
不管怎样,Amazon还是认可了。在试图推进自己的容器编排平台两年时间但收效甚微之后,AWS于去年11月接受了首席执行官Andy Jassy所说的Kubernetes的“共鸣”。
Google的竞争对手最初可能不太愿意,但无论来源如何,在不同平台上进行标准化都有一定的优势。很多专家将Kubernetes与Linux进行了比较,Linux是一种无处不在的操作系统,Lunix的普及结束了长达十年的Unix标准之争,并使整个行业向前发展。Amazon和其他所有基础设施即服务提供商都从中受益,因为它打破了云原生开发的障碍。
Weaveworks公司首席执行官、CNCF技术监督委员会主席Alexis Richardson说:“到2027年,云将覆盖到1亿开发者。我们如何让企业和开发者们轻松地在云上构建?这一切都是由容器和周边工具实现的。”
从长远来看,这一切意味着什么?Kubernetes的普及非常迅速,影响力仍然存在。“如果运行在Kubernetes平台上的企业工作负载超过了5%这一大关,我会感到非常惊讶的,” Kubernetes持续交付平台开发公司Codefresh的首席布道师Dan Garfield这样说道。然而,取得一定的发展似乎是肯定的。
接下来会发生什么
软件开发和交付将会加速。开发者一直是过去几年创新的巨大受益者,包括云计算、敏捷的DevOps开发方法和现在的容器技术。定义基础设施的大部分工作都是自动化的,这让开发者们可以把更多时间花在代码上。
Kubernetes不仅将一些操作系统从开发软件中消除了,而且让这个过程具有可移植性。瞬态容器可用于快速尝试新想法,确定赢家和淘汰输家。
所有这些因素都将加大企业数字化转型的压力。那些能够更迅速利用新开发的企业将快竞争对手一步。Kubernetes最终将DevOps放在首位,最后剩下的障碍转移到采用软件开发技术上,该技术在质量和速度方面得到了极大的改进。“这使得我们有机会让企业能够为他们的客户快速开发新的软件体验,部署这些软件并根据最终用户的反馈做出更改,” Richardson说。
软件开发将变得更加简单,非技术人员也可以上手。随着复杂性逐渐消除,软件开发工具发展到业务逻辑的更高层次,Wikibon的Kobelius说。例如,图形建模工具使开发人员能够直观地表示分布式组件之间的复杂依赖关系和流。这些高级模型可以编译到容器中以便执行。
Kobelius说:“开发人员不需要知道特定计算或存储或资源被分配到的位置和时间,这将通过在云中的抽象这一神奇方式进行处理。”
服务公司Lyft的软件工程师Matt Klein对此表示认同,他曾表示:“10年后,人们编写的是业务逻辑而不是编写代码。”
客户期望得到更好的在线体验。Kubernetes内置的负载平衡和资源分配功能将使应用性能更具可预测性,并相应地提高客户期望。例如,流媒体视频服务提供商HBO使用Kubernetes自动均衡服务器负载,以适应去年《权力的游戏》剧集带来的收视率激增。
私有云将看起来更像是公有云。Kubernetes将推动云原生设计的广泛采用,这意味着应用将默认为云计费,这也将给本地数据中心带来影响。“由于所有应用现在都可以享受云原生设计带来的好处,因此我们将看到本地企业IT基础架构和遗留应用将适应这些新的设计模式,”BlueData Software公司首席架构师Tom Phelan这样说道。
多云将成为主流。基于Kubernetes构建的应用几乎可以运行在任何地方,这意味着企业组织将有更多的动力在多个云和本地基础设施之间转移工作负载。IDC预测,未来12个月有93%的企业组织将采用针对多云提供商的服务。Kubernetes在云端备受欢迎,这将让那些致力于寻求最佳性价比的云提供商数量变得越来越多。
微服务和无服务器应用将发展起来。两者都被认为是取代传统应用开发平台的一个更灵活、更快速、更好性能的替代方案,但复杂性一直是个问题。自动编排功能将让使监控和性能调优变得相对容易一些。应用将变得更加分布,通过应用程序编程接口提供服务将得到更加繁荣的发展。
但最终,最有趣的影响将是那些今天我们还无法预见的影响。很多人将Kubernetes目前的成熟度与1996年万维网的成熟度进行了比较。期望很高,但最有价值的领域将是那些我们甚至都看不到的地方。“随着各种工具和丰富经验的涌现,Kubernetes将被广泛使用但又是隐形的,”Richardson说。
最终,Kubernetes将成为计算结构的一部分。Google的Hockin说:“最终,我希望它只是你部署应用的一种方式。”
好文章,需要你的鼓励
临近年底,苹果公布了2024年App Store热门应用和游戏榜单,Temu再次成为美国下载量最多的免费应用。
云基础设施市场现在已经非常庞大,很难再有大的变化。但是,因为人们可以轻松地关闭服务器、存储和网络——就像开启它们那样,预测全球云基础设施开支可能非常困难。