案例分析:
以用户和供应商身份拥抱云原生

公司  华为     地点  中国深圳     产业  通信设备

挑战

华为是世界上最大的电信设备制造商,拥有超过 18 万名员工。 为了支持华为在全球的快速业务发展,华为内部 IT 部门有 8 个数据中心, 这些数据中心在 100K+ VMs 上运行了 800 多个应用程序,服务于这 18 万用户。 随着新应用程序的快速增长,基于 VM 的应用程序的管理和部署的成本和效率都成为业务敏捷性的关键挑战。 该公司首席软件架构师、开源社区总监侯培新表示: “这是一个超大的分布式系统,因此我们发现,以更一致的方式管理所有任务始终是一个挑战。 我们希望进入一种更敏捷、更得体的实践”。

解决方案

在决定使用容器技术后,华为开始将内部 IT 部门的应用程序迁移到 Kubernetes 上运行。 到目前为止,大约 30% 的应用程序已经转移为云原生程序。

影响

“到 2016 年底,华为的内部 IT 部门使用基于 Kubernetes 的平台即服务(PaaS)解决方案管理了 4000 多个节点和数万个容器。 全局部署周期从一周缩短到几分钟,应用程序交付效率提高了 10 倍”。 对于底线,侯培新表示,“我们还看到运营开支大幅削减,在某些情况下可削减 20% 到 30%,我们认为这对我们的业务非常有帮助”。 这里给出一些华为内部结果资料、外部需求,也是公司的技术包装产品 FusionStage™ , 它被作为一套 PaaS 解决方案提供给其客户。
“如果你是一个供应商,为了说服你的客户,你应该自己使用它。 幸运的是,因为华为有很多员工,我们可以利用这种技术来展示我们所能构建的云的规模。”

- 侯培新,首席软件架构师、开源社区总监
华为的 Kubernetes 之旅始于一位开发者。 两年前,这家网络和电信巨头雇佣的一名工程师对 Kubernetes 这一跨主机集群的管理应用程序容器的技术产生了兴趣,并开始为其开源社区作出贡献。 随着技术和社区的发展,他不断地将这门技术告诉他的经理们。

与此同时,华为也在为其内部的企业 IT 部门寻找更好的编排系统,该系统应该支持每一个业务的流程处理。 华为首席软件架构师、开源社区总监侯培新表示, “我们在全球拥有逾 18 万名员工,内部流程复杂,所以这个部门可能每周都需要开发一些新的应用程序。 我们的 IT 部门经常需要启动数万个容器,任务要跨越全球数千个节点。 这是一个超大的分布式的系统,所以我们发现以更一致的方式管理所有的任务总是一个挑战”。

过去,华为曾使用虚拟机来封装应用程序,但是,“每次我们启动虚拟机时”,侯培新说, “无论是因为它是一项新服务,还是因为它是一项由于节点功能异常而被关闭的服务,都需要花费大量时间”。 华为转向了容器化,所以是时候尝试 Kubernetes 了。 采纳了这位工程师的建议花费了一年的时间,这个过程“不是一蹴而就的”,侯说, 但一旦投入使用,“Kubernetes 基本上解决了我们的大部分问题。 以前,部署时间大约需要一周,现在只需几分钟。 开发人员非常高兴。使用 Kubernetes 的那个部门也十分高兴”。

侯培新看到了使用这项技术给公司带来的巨大好处, “Kubernetes 为基于云的应用程序带来了敏捷性、扩展能力和 DevOps 实践”,他说, “它为我们提供了自定义调度体系结构的能力,这使得容器任务之间的关联性成为可能,从而提高了效率。 它支持多种容器格式,同时广泛支持各种容器网络解决方案和容器存储方案”。
“Kubernetes 基本上解决了我们的大部分问题。 以前,部署时间大约需要一周,现在只需几分钟。 开发人员很高兴。使用 Kubernetes 的部门也很高兴。”
最重要的是,这对底线有影响。侯培新说, “我们还看到,在某些情况下,运营开支会大幅削减 20% 到 30%,这对我们的业务非常有帮助”。

华为对这些初步结果感到满意,并看到客户对云原生技术的需求,因此加大了 Kubernetes 的投入。 2016 年春,公司不仅成为用户,而且成为了供应商。

“我们构建了 Kubernetes 技术解决方案”,侯培新说, 指的是华为的 FusionStage™ PaaS 输出。 “我们的客户,从非常大的电信运营商到银行,都喜欢云原生的想法。他们喜欢 Kubernetes 的技术。 但是他们需要花费大量的时间来分解他们的应用程序,将它们转换为微服务体系结构。 作为解决方案提供者,我们帮助他们。 我们已经开始与一些中国银行合作,我们看到中国移动(China Mobile)和德国电信(Deutsche Telekom)等客户对我们很感兴趣”。

“如果你是一个用户,你就仅仅是个用户”,侯培新补充道,“但如果你是一个供应商,为了说服你的客户,你应该自己使用它。 幸运的是,因为华为有很多员工,我们可以利用这种技术来展示我们所能构建的云的规模,向客户提供智慧服务”。 尽管华为拥有自己的私有云,但其许多客户使用华为的解决方案运行跨云应用程序。 这是一个很大的卖点,大多数公共云提供商现在都支持 Kubernetes。 侯培新说,“这使得跨云转换比其他解决方案更容易”。

“我们的客户,从非常大的电信运营商到银行,都喜欢云原生的想法。他们喜欢 Kubernetes 的技术。 但是他们需要花很多时间来分解他们的应用程序,把它们变成微服务体系结构,作为一个解决方案提供商,我们帮助他们。”
在华为内部,一旦他的团队完成内部业务流程部门向 Kubernetes 的转型,侯培新希望说服更多部门转向云原生开发和实践。 “我们有很多软件开发人员,所以我们将为他们提供我们的平台作为服务解决方案,我们自己的产品”, 他说,“我们希望在他们的迭代周期中看到显著的成本削减”。

在见证了华为最开始的向 Kubernetes 的转型之后,侯培新为其他考虑该技术的公司提供了建议, “当你开始设计应用程序的架构时,首先考虑云原生,然后再考虑微服务架构”,他说,“我想你会从中受益”。

但是如果您已经有了遗留应用程序,“首先从这些应用程序中一些对微服务友好的部分开始, 这些部分相对容易分解成更简单的部分,并且相对轻量级”,侯培新说, “不要从一开始就认为我想在几天内将整个架构或所有东西都迁移到微服务中。 不要把它当作目标。你应该循序渐进地做这件事。 我想说的是,对于遗留应用程序,并不是每个部分都适合微服务架构”。

毕竟,尽管侯培新对华为的 Kubernetes 充满热情,但他估计, “未来 10 年,或许 80% 的工作负载可以分布式地在云原生环境中运行,但仍然有 20% 不是,但是没关系。 如果我们能够让 80% 的工作负载真正是云原生的、敏捷的,那么最终会有一个更好的世界”。
“未来 10 年,可能 80% 的工作负载可以分布式地在云原生环境中运行,但仍然有 20% 不是,不过没关系。 如果我们能够让 80% 的工作负载真正是云原生的、敏捷的,那么最终会有一个更好的世界。”
在不久的将来,侯培新期待着围绕着 Kubernetes 开发的新功能,尤其是华为正在开发的那些功能。 华为的工程师已经在为联邦功能(将多个 Kubernetes 集群放在一个框架中进行无缝管理)、调度、容器网络和存储,以及刚刚发布的一项名为 Container Ops 的技术工作,这是一个 DevOps 管道引擎。 “这将把每个 DevOps 作业放到一个容器中”,他解释说,“这种容器机制使用 Kubernetes 运行,也用于测试 Kubernetes。 有了这种机制,我们可以比以前更容易地创建、共享和管理容器化 DevOps 作业”。

尽管如此,侯培新认为这项技术只是实现其全部潜力的一半。 首先,也是最重要的,他想要扩大它可以协调的规模, 这对于华为这样的超大规模公司以及它的一些客户来说非常重要。

侯培新自豪地指出,在华为第一位工程师成为 Kubernetes 的贡献者和传道者两年后,华为现在是这个社区的最大贡献者。 他说,“我们发现,你对社区的贡献越大,你得到的回报也就越多”。