附录C Box:案例研究

    在2014年夏天,Box感到十年的硬件和软件基础设施的痛苦,这与公司的需求无法保持一致。

    一个平台允许其超过5000万用户(包括政府和大型企业如通用电气公司)管理和共享云中的内容,Box最初是一个庞大的数百万行代码的庞大的PHP代码,内置裸机数据中心。它已经开始在巨石上慢慢消失,分解成微服务。 “随着我们扩展到全球各地,公共云战争正在升温,我们开始专注于如何在许多不同的环境和许多不同的云基础设施提供商之间运行我们的工作负载,”Box联合创始人和服务架构师Sam Ghods。 “迄今为止,这是一个巨大的挑战,因为所有这些不同的提供商,特别是裸机,都有非常不同的界面和与他们合作的方式。”

    当Ghods参加DockerCon时,Box的云本土之旅加速了。该公司已经认识到,它不能再仅仅使用裸机来运行其应用程序,并正在研究与Docker的容器化,使用OpenStack进行虚拟化以及支持公共云。

    在那次会议上,Google宣布发布Kubernetes容器管理系统,Ghods赢得了胜利。 “我们研究了许多不同的选择,但Kubernetes确实很出色,特别是因为博格老兵的团队非常强大,并且具有完全基础架构不可知的方式来运行云软件,”他说,内部集装箱协调人Borg。 “事实上,第一天它的设计与裸机一样运行,就像我们可以在我们的数据中心内实际迁移到它一样,然后使用相同的工具和概念在公共云提供商上运行,好。”

    另外:Ghods喜欢Kubernetes拥有一套通用的API对象,如pod,服务,副本集和部署,这些对象创建了一个一致的表面来构建工具。 “甚至像OpenShift或Deis这样的构建在Kubernetes之上的PaaS层仍然将这些对象视为一流的原则,”他说。 “我们很高兴能够在整个生态系统中共享这些抽象概念,这会产生比我们在其他潜在解决方案中更多的动力。”

    几个月后,该团队可以发送并要求提供信息的第一个现场服务启动。那时,Ghods说:“我们对Kubernetes集群的稳定性感到满意。我们开始移植一些服务,然后我们将增加集群的大小和端口数量,最后每个数据中心的服务器数量大约为100台,这些服务器纯粹专用于Kubernetes。而且在未来的12个月里,这个数字将会增长很多,达到数百甚至数千。“

    在观察开始使用Kubernetes进行微服务的团队时,“我们立即看到正在发布的微服务数量有所增加,”Ghodsnotes说。 “显然,通过微服务构建软件的更好方式已被压抑,并且灵活性的提高帮助我们的开发人员提高了生产力,并为更好的架构选择做好了准备。”

    Ghods反映,作为早期采用者,Box与公司现在的经历有不同的旅程。他说:“我们肯定是在等待某些事情稳定或获得释放功能的锁定步骤,​​”他说。 “在早期,我们对Kubectl应用等组件做了很多贡献,并等待Kubernetes释放它们中的每一个,然后我们会升级,贡献更多,并来回多次。整个项目从我们第一次在Kubernetes上进行实际部署到整体可用性需要大约18个月的时间。如果我们今天完成同样的事情,它可能会少于六个。“

    无论如何,Box无需为Kubernetes对公司工作做过多修改。 Ghods说:“我们团队在Box中实施Kubernetes所做的绝大多数工作一直致力于在我们现有的(往往是遗留下来的)基础架构内工作,例如将我们的基础操作系统从RHEL6升级到RHEL7或整合它将纳入我们的监控基础架构Nagios。但总体而言,Kubernetes非常灵活,能够适应我们的许多限制因素,并且我们在裸机基础架构上非常成功地运行它。“

    对于Box来说,更大的挑战也许是文化上的挑战。 Ghods说:“Kubernetes和一般的云本身代表了一个非常大的范式转换,并且它不是非常渐进的,”Ghods说。 “我们基本上是这样说的,Kubernetes将会解决所有问题,因为它能够以正确的方式做事,而一切都会突然变得更好。但是要记住,它不像其他许多解决方案那样可靠。你不能说这家或那家公司花了多少时间做这件事,因为还没有那么多。我们的团队必须真正为资源而战,因为我们的项目有一点点的恐惧。“

    最后,影响力非常强大。 “在Kubernetes之前,”Ghods说,“我们的基础设施非常陈旧,需要6个多月才能部署一个新的微服务。现在,一个新的微服务部署时间不到五天。我们正在努力让它达到不到一天。诚然,这六个月的大部分时间都是由于我们的系统有多么糟糕,但裸机本质上是一个难以支持的平台,除非您有像Kubernetes这样的系统来帮助管理它。“

    按Ghods的估计,Box距离他成为90% Kubernetes店的目标还有几年的时间。 “到目前为止,我们已经完成了一项稳定的,关键任务的Kubernetes部署,它提供了很多价值,”他说。 “现在我们所有电脑的10%左右都运行在Kubernetes上,我认为明年我们可能会超过一半。我们正在努力实现所有无状态服务使用案例,并计划在此之后将我们的重点转移到有状态服务。“

    事实上,这就是他在整个行业中的设想:Ghods预测Kubernetes有机会成为新的云平台。 Kubernetes提供了一个涵盖不同云平台的API,包括裸机,以及“当我们可以针对单一界面进行编程时,我不认为人们已经看到了可能的全部潜力”,他说。 “与AWS改变基础架构一样,您不必再考虑服务器或机柜或网络设备,Kubernetes使您能够专注于您正在运行的软件,这非常令人兴奋。这是愿景。“

    Ghods指出了已经在开发或最近发布的作为云平台的项目:集群联合,仪表板UI和CoreOS’setcd运营商。 “我真的相信这是我在云基础架构中看到的最激动人心的事情,”他说,“因为它是一个前所未有的自动化和智能环境,其基础设施对每个基础设施平台都是可移植和不可知的。”

    由于早期决定使用裸机,Box不得已开始了Kubernetes之旅。但是Ghods表示,即使公司现在不必对云提供商不可知,Kubernetes也可能很快成为行业标准,因为越来越多的工具和扩展是围绕API构建的。