公司GolfNow 位置奥兰多,佛罗里达 行业高尔夫工业技术和服务提供商

挑战

一名成员NBC体育组GolfNow是高尔夫行业的技术和服务领导者,管理10种不同的产品,以及世界上最大的电子商务发球机组。由于业务开始迅速和全球扩展,Golfnow的单片应用成为有问题。“我们一直垂直而不是水平地发展我们的基础设施,而且业务成本变得有问题,”戈尔诺·斯兰德·斯兰德·斯兰德·斯兰德·莫姆克··梅哈克德“我们希望能够更容易地在全球范围内扩展。”

解决方案

转向微服务和集装箱化,Golfnow开始将其应用程序和数据库从第三方服务转移到其自己的群集码头工人Kubernetes。

影响

效果立竿见影。在保持同样的容量的同时,在高峰时期,golfnow发现其第一个应用的基础设施成本几乎减少了一半。

你不是每天都能说你把运营费用削减了一半的。

但穆罕默德警长和乔什·钱德勒就是这么做的,他们帮助领导了他们的公司,GolfNow这是一个由Kubernetes管理的从单片到集成化的本地云基础设施的旅程。

NBC Sports Group,Golfnow是一家技术和服务公司,是一家拥有世界上最大的T恤市场的技术和服务公司。Golfnow在10种不同的产品中为500万活跃的高尔夫球手提供服务。近年来,业务已经发展得如此之快,即支持其巨大单片应用程序的基础设施(用C#.NET编写并由SQL Server数据库管理系统备份)无法跟上。“随着我们的增长,我们显然需要扩大我们的基础设施,我们一直在垂直而不是水平地生长,”警长·戈尔诺的董事架构“我们的成本是指数级增长的。最重要的是,我们必须建立一个灾难恢复(DR)环境,然后,这意味着我们必须将我们的原始数据中心恰好复制到另一个刚刚的数据中心待命。我们基本上浪费了金钱并加倍基础设施的成本。“

在搬迁Golfnow的第一个重要的应用程序中 - 为高尔夫球场和B2B营销平台的预订引擎 - 从第三方服务到自己的Kubernetes环境,“我们的账单彻底地下来了,”警长说。

这些辉煌的业绩始于2014年底。为了支持GolfNow的全球增长,团队决定公司需要有多个数据中心,并能够根据需要快速轻松地重新路由流量。“从那时起,我们知道我们需要朝着拆解、微服务和集装箱化的方向前进,”Sheriff说。“当时我们正试图逃离c#。净SQL Server.由于它在Linux上没有很好地运行,那么容器的一切都顺利运行。“

为此,团队转移到与之合作node . js,开源开源跨平台JavaScript运行时环境,用于开发工具和应用程序,以及MongoDB.,开源数据库程序。当时,码头工人在容器中部署应用程序的平台,仍然是新的。但当团队开始对此进行试验时,Sheriff说道:“我们意识到这便是我们想要走的方向,特别是因为这是行业发展的方向。”

GolfNow的开发团队进行了“内部低调”的概念验证,并赢得了他们的支持。“我们真的很喜欢它是多么容易,能够在彼此之间传递容器,并让它们在任何时间运行,这正是它在我的机器上运行的方式,”Sheriff说。因为这总是Ops与开发者之间最大的抱怨,对吧?“它在我的机器上管用!”但后来我们开始考虑,‘我们如何确保这些设备继续运行?’”

这导致团队寻求寻找公司需求的正确的编排系统。警长说,他们尝试过的少数选项太重或“感觉不太正确”。2015年夏末,他们发现了刚刚发布的Kubernetes.因为使用方便,警长很快就喜欢上了它。“我们做了另一个概念验证,”他说,“Kubernetes获胜是因为社区的支持,建立在谷歌已经做的基础上。”

但在他们和Kubernetes一起之前,美国全国广播公司,Golfnow的母公司,还要求他们与另一家公司的比较商店。警长和他的团队喜欢竞争公司的平台用户界面,但不喜欢它的平台不会让容器在Docker上自然运行。在Sheriff的volfnow,Steve Mcelwee的Sheriff的VP没有明确的决定,在史蒂夫McElwee成立了一个三个月的试验,在此期间,一个Golfnow团队(由警长和乔希组成,他现在是主要的领导建筑师,开放平台)将建立一个Kubernetes环境,以及一个大型的NBC团队将与其他公司的平台建立一个。

“我们推动了集群的发展,我们试图让一切按照我们希望的方式运行,”Sheriff说。“我们从中得到的最大收获是,我们不仅想让我们的应用程序在Kubernetes和Docker中运行,我们还想让我们的数据库在那里运行。我们真的希望我们的整个基础设施在Kubernetes内部运行。”

当时,社区中没有任何东西可以帮助他们让Kafka和MongoDB集群在Kubernetes和Docker环境中运行,所以Sheriff和Josh自己想出了办法,花了整整一个月的时间才找到正确的方法。“一切都是从那里开始的,”警长说。“我们能够将所有应用程序连接起来,并且提前一个月完成了我们的概念验证。我的副总裁说,‘好吧,结束了。Kubernetes获胜。”

从2016年1月开始,下一步就是让所有东西都投入生产。该团队首先专注于一个已经用Node.js和MongoDB编写的应用程序。作为一个高尔夫球场的预订引擎和B2B营销平台,该应用程序已经在向微服务方向发展,但还没有完全完成。当时,它正在运行Heroku组成和其他第三方服务 - 导致每月大的账单。

“我们的目标是把这些东西都拿出来,放到我们和Kubernetes一起创建的新平台上谷歌计算引擎(GCE),”警长说。“所以我们最终在我们的Kubernetes集群中,一件一件地,并行地构建Heroku和Compose。然后,实际上,只是在后台切换了配置。在Heroku中,我们让应用运行时碰到一个Compose数据库。我们将获取配置,改变它,并让它击中在我们集群中运行的数据库。”

使用此过程,他们能够迁移零碎,没有任何停机时间。第一次迁移是在OFF时段完成的,但要测试限制,该团队在一天中期迁移了第二个数据库,当时很多用户运行该应用程序。“我们这样做了,”警长说,“再次成功。没有人注意到。”

经过三周的监控以确保一切都稳定运行后,团队将应用程序的其余部分迁移到他们的Kubernetes集群中。这一举措的效果立竿见:除了大幅削减月度成本外,Sheriff说:“在高峰期以同样的产能运行,我们能够实现横向增长。因为我们可以更有效地使用容器来使用虚拟机,所以我们根本不需要支付额外的费用。”

他们不仅节省了钱,还节省了时间。Josh说:“我今天上午开了一个会,讨论如何将一些应用程序从一个集群迁移到另一个集群。“我花了两个小时来解释这个过程。我实际移动应用程序的时间不到30秒!我们可以在极短的时间内移动数据中心。如果你不是库伯内特家族的人,你是不会相信我的。”Sheriff是这样说的:“在Kubernetes之前,我晚上根本睡不着。我总是被吵醒,因为事情不顺利。在Kubernetes之后,我晚上一直在睡觉。”

GolfNow上的一小部分应用程序已经迁移到Kubernetes环境中。“我们的核心团队正在重写大量的。net应用程序到net核心(它与Linux和Docker兼容)这样我们就可以在容器中运行它们,”Sheriff说。

展望未来,警长和他的团队希望花费2017年继续建立一个整个平台,围绕kubernetes无人机这是一个开源的连续交付平台,使其更以开发者为中心。“现在他们能够管理配置,他们能够管理他们的部署和类似的事情,使所有这些正在创建所有这些微服务的子团队能够自给自足,”他说。“所以它可以把我们从应用中拉出来,让我们确保集群是健康运行的,然后把它转移到我们的Ops团队。”

从长远来看,Sheriff还有一个更大的目标那就是让更多的人加入Kubernetes的阵营。他表示:“我们实际上是在努力让这个平台足够通用,以便我们的任何姊妹公司如果愿意,都可以使用它。”“毫无疑问,我认为它可以作为一种模式。我认为我们迁移到它的方式,我们构建它的方式,都是其他公司可以学习的方式,也不应该害怕。”

Golfnow团队还通过开放Josh建造的机器人框架来回馈Kubernetes社区。“我们注意到仪表板用户界面实际上比我们开始的速度快得多,”警长说。“但是,我们意识到我们所需要的东西是更多的机器人,这些机器人真正帮助我们通过松懈地管理Kubernetes。”Josh解释道:“随着Kubernetes-Slack集成,您可以基本上钩住群集和问题命令和编辑配置。我们尝试尽可能简化安全配置。我们希望这将是我们的主要谢谢Kubernetes,你给了我们的一切。“

在三个月的时间里,GolfNow团队从完全的新手变成了生产准备,他们急切地鼓励其他公司跟随他们的脚步。他们学到的教训是:“你必须得到老板的支持,”警长说。“另一件重要的事情是有两到三个人致力于这类工作。你不能让一半参与,一半不参与的人。”如果你从一开始就没有购买,证明它会让你成功。

Josh补充道:“这是云领域的《无敌金刚》。“试一试,看着它发生。当你看到这些类型的应用程序堆栈时,我觉得证据就在布丁里。他们更快,更有弹性。”