挑战
作为全球最大的电信设备制造商,华为是一家拥有超过 18 万名员工的跨国公司。为了支持其在全球范围内的快速业务发展,华为 的内部 IT 部门拥有八个数据中心,这些数据中心运行着 800 多个应用程序和 10 万多个虚拟机,为这 18 万用户提供服务。随着新应用程序的快速增长,基于虚拟机的应用程序的管理和部署成本和效率都成为了业务敏捷性的关键挑战。“这是一个非常分布式的系统,所以我们发现以更一致的方式管理所有任务始终是一个挑战,”公司首席软件架构师兼开源社区主管侯培新说。“我们希望转向更敏捷、更规范的实践。”
解决方案
在决定使用容器技术后,华为开始将内部 IT 部门的应用程序迁移到 Kubernetes 上运行。到目前为止,大约 30% 的应用程序已经转移到云原生。
影响
“到 2016 年底,华为的内部 IT 部门使用基于 Kubernetes 的平台即服务(PaaS)解决方案管理着 4000 多个节点和数万个容器,”侯培新说。“全球部署周期从一周缩短到几分钟,应用程序交付效率提高了 10 倍。”对于底线,他说,“我们还看到运营费用支出显著减少,在某些情况下减少了 20-30%,我们认为这对我们的业务非常有帮助。”鉴于华为在内部取得的成果,以及在外部看到的市场需求,该公司还将这些技术构建到了为客户提供的 PaaS 解决方案 FusionStage™ 中。
华为的 Kubernetes 之旅始于一位开发人员。两年多前,这家网络和电信巨头的一位工程师对 Kubernetes 产生了兴趣,这种技术用于管理主机集群中的应用程序容器,并开始为其开源社区做出贡献。随着技术的发展和社区的壮大,他不断地向他的经理们介绍它。
巧合的是,与此同时,华为正在为其内部企业 IT 部门寻找更好的编排系统,该部门支持每个业务流程的处理。“我们在全球拥有超过 18 万名员工,内部流程复杂,所以可能每周这个部门都需要开发一些新的应用程序,”华为首席软件架构师兼开源社区主管侯培新说。“我们的 IT 部门经常需要启动数万个容器,任务在全球数千个节点上运行。这是一个非常分布式的系统,所以我们发现以更一致的方式管理所有任务始终是一个挑战。”
过去,华为使用虚拟机来封装应用程序,但是“每次当我们启动虚拟机时,”侯培新说,“无论是由于新服务还是因为某些异常节点功能而关闭的服务,都需要花费大量时间。”华为转向容器化,所以尝试 Kubernetes 的时机正好。花了一年的时间才采纳了这位工程师的建议——这个过程“不是一蹴而就的,”侯培新说——但一旦投入使用,他说,“Kubernetes 基本上解决了我们的大部分问题。以前,部署时间大约需要一周,现在只需要几分钟。开发人员很高兴。那个部门也很高兴。”
侯培新认为使用这项技术对公司有很大的好处:“Kubernetes 为基于云的应用程序带来了敏捷性、横向扩展能力和 DevOps 实践,”他说。“它使我们能够自定义调度架构,从而使容器任务之间的亲和性成为可能,从而提高效率。它支持多种容器格式。它为各种容器网络解决方案和容器存储提供了广泛的支持。”
最重要的是,这对底线有影响。侯培新说:“我们还看到在某些情况下运营费用支出减少了 20-30%,这对我们的业务非常有帮助。”
华为对最初的结果感到满意,并且看到了客户对云原生技术的需求,因此加大了对 Kubernetes 的投入。在 2016 年春季,该公司不仅成为了用户,还成为了供应商。
“我们将 Kubernetes 技术构建到我们的解决方案中,”侯培新说,他指的是华为的 FusionStage™ PaaS 产品。“我们的客户,从大型电信运营商到银行,都喜欢云原生的理念。他们喜欢 Kubernetes 技术。但是他们需要花费大量时间来分解他们的应用程序,将它们转化为微服务架构,而作为解决方案提供商,我们帮助他们。我们已经开始与一些中国银行合作,我们看到像 中国移动 和 德国电信 这样的客户对它很感兴趣。”
“如果你只是一个用户,那你仅仅是一个用户,”侯培新补充说。“但是如果你是供应商,为了说服你的客户,你应该自己使用它。幸运的是,由于华为有很多员工,我们可以展示我们使用这项技术构建的云的规模。我们为客户提供智慧。”虽然华为拥有自己的私有云,但其许多客户使用华为的解决方案运行跨云应用程序。大多数公共云提供商现在都支持 Kubernetes,这是一个很大的卖点。“这使得跨云过渡比其他解决方案容易得多,”侯培新说。
在华为内部,一旦他的团队完成内部业务流程部门向 Kubernetes 的过渡,侯培新希望说服更多部门转向云原生开发周期和实践。“我们有很多软件开发人员,所以我们将为他们提供我们的平台即服务解决方案,我们自己的产品,”他说。“我们希望看到他们的迭代周期大幅缩短。”
在监督了华为最初向 Kubernetes 的迁移后,侯培新为其他正在考虑这项技术的公司提供了建议:“当您开始设计应用程序的架构时,从一开始就考虑云原生,考虑微服务架构,”他说。“我认为你会从中受益。”
但是,如果您已经有遗留应用程序,“首先从这些应用程序中一些微服务友好的部分开始,这些部分相对容易分解为更简单的部分,并且相对轻量级,”侯培新说。“不要从第一天就想着在多少天内我要迁移整个架构,或者将所有内容都迁移到微服务中。不要把这作为一种目标。你应该逐步进行。我想说,对于遗留应用程序,并非每个部分都适合微服务架构。没必要强求。”
毕竟,尽管侯培新对华为的 Kubernetes 充满热情,但他估计“在未来 10 年里,也许 80% 的工作负载可以分布,可以在云原生环境中运行。仍然有 20% 的工作负载不能,但这没关系。如果我们能够使 80% 的工作负载真正实现云原生,并具有敏捷性,那么最终的世界会好得多。”
在不久的将来,侯培新期待着 Kubernetes 正在开发的新功能,尤其是华为正在贡献的功能。华为的工程师致力于联邦功能(将多个 Kubernetes 集群置于单个框架中进行无缝管理)、调度、容器网络和存储,以及最近宣布的一项名为 Container Ops 的技术,它是一个 DevOps 管道引擎。“这将把每个 DevOps 作业都放入一个容器中,”他解释说。“然后,这个容器机制使用 Kubernetes 运行,但也用于测试 Kubernetes。有了这种机制,我们可以比以前更容易地创建、共享和管理容器化的 DevOps 作业。”
尽管如此,侯培新认为这项技术只发挥了一半的潜力。首先,他希望扩大它可以编排的规模,这对于像华为这样的大型公司及其一些客户来说都很重要。
侯培新自豪地指出,在第一位华为工程师成为 Kubernetes 的贡献者和拥护者两年后,华为现在是社区的顶级贡献者。“我们了解到,你对社区的贡献越多,”他说,“你得到的回报就越多。”