挑战
Ancestry 是全球领先的家谱和消费基因组学公司,它利用先进的工程技术帮助世界各地的人们发现他们自身的起源故事。该公司在过去 30 多年中一直致力于创新和构建产品和技术,这些产品和技术的核心是产生真实而感性的情感反应。 Ancestry 目前拥有超过 260 万付费订阅用户,拥有 200 亿条历史记录、9000 万个家谱,并且 AncestryDNA 网络拥有超过 400 万人,使其成为全球最大的消费基因组 DNA 网络。该公司的热门网站 ancestry.com 早在该术语流行之前就开始使用大数据。该网站建立在数百种服务、技术和传统部署方法之上。“这对我们来说过去一直很有效,”Ancestry 的软件工程师和架构师 Paul MacKay 说,“但它的处理过程变得非常繁琐,而且耗时。作为一个主要的在线服务,我们一直在寻找方法来加速,以便在提供解决方案和产品方面更敏捷。”
解决方案
该公司正在过渡到云原生基础设施,使用 Docker 容器化、Kubernetes 编排和 Prometheus 进行集群监控。
影响
“Ancestry 的每个产品、我们做出的每个决定都专注于通过关于他们自己和他们家人的私密、有时甚至是改变人生的发现来取悦我们的客户,”MacKay 说。“随着公司不断发展,使用 Kubernetes 带来的生产力增长帮助 Ancestry 更快地让客户发现新东西。例如,通过转向 Docker 化,我们不再需要花费 20 到 50 分钟来部署新代码,现在我们可以在不到一分钟的时间内部署大部分代码。除了来自云原生和 Kubernetes 类型技术的各种功能和优势之外,我们确实体验到了显著的节省时间。”
自十年前推出以来,摇晃的树叶图标已成为 Ancestry 的标志性功能之一,它向用户表明,可以使用一些有用的提示来了解更多关于自己家谱的信息。
因此,当该公司决定开始将其基础设施迁移到云原生技术时,在 Kubernetes(用于跨主机集群管理应用程序容器的开源平台)上推出的第一个服务就是这个提示系统。将其视为亚马逊的推荐产品,但该公司不是推荐产品,而是推荐记录、故事或家族关系。“这是网站非常重要的一部分,”Ancestry 软件工程师和架构师 Paul MacKay 说,“但也足够小,可以作为试点项目,我们知道可以以非常适当且安全的方式进行处理。”
当它在 2016 年初顺利上线时,“我们对这项服务的部署时间从 50 分钟缩短到了 2 到 5 分钟,”MacKay 补充道。“开发团队非常高兴,因为我们专注于为客户提供出色的体验。这意味着功能,这意味着稳定性,这意味着我们一流运营所需的一切。”
那个摇晃的树叶的稳定性向 MacKay 和他的团队发出了信号,表明他们决定拥抱云原生技术的决定是该公司正确的选择。使用私有数据中心,Ancestry 在数百种服务和技术以及传统部署方法的基础上构建了自己的网站(该网站于 1996 年推出)。“这对我们来说过去一直很有效,但传统系统的总和在处理过程中变得非常繁琐,而且耗时,”MacKay 说。“我们正在寻找其他方法来加速,以便在提供解决方案和产品方面更敏捷。”
这种需求导致他们在 2015 年开始探索容器化。Ancestry 的工程师已经使用 Java 和 Python 等技术在 Linux 上运行,因此部分决定是关于如何使基础设施更易于使用 Linux。他们很快决定想要使用 Docker 进行容器化,“但最终还是需要编排部分来真正实现它,”MacKay 说。
他的团队研究了 Docker Compose、Mesos 和 OpenStack 提供的编排平台,甚至开始原型化一些内部解决方案。然后他们开始听到有关 Kubernetes v1.0 即将来临的发布的消息。“我们最先关注的是秘密存储,这样我们就无需自行管理它,还有配置映射、无缝部署策略的方法,”他说。“我们发现 Kubernetes 的资源、类型、标签以及界面是如此先进,远远超出了我们所见过的其他东西。这是一个功能上的契合。”
这并不是说采用新技术没有遇到一些挑战。“改变是困难的,”MacKay 说。“不是因为技术很难或技术不好。只是人们喜欢做他们以前做过的事情。你会有早期采用者,也会有后来加入的人。对双方来说都是一个学习过程。”
弄清楚 Ancestry 最佳的部署操作是采用云原生基础设施所需工作的重要组成部分。“我们希望确保流程既简单又可控,以允许我们实现我们和客户所要求的最高安全级别,”MacKay 说。“对于 Kubernetes 和其他产品,有一些很好的解决方案,但需要一些粘合剂才能将其融入企业流程和治理中。就像拥有一副通用手套,但当您真正想要抓住某些东西时,您必须对其进行定制以适合您。这就是我们必须做的事情。”
他们的最佳实践包括允许其开发人员部署到开发阶段和生产阶段,但随后控制需要治理和审计的方面,例如机密信息。他们发现,每个服务使用一个命名空间对于实现机密信息和配置映射的隔离很有用。对于他们的需求,每个 Pod 使用一个容器使得管理和部署更小的单元变得更容易。
建立了这个流程后,某些服务的部署时间缩短到不到一分钟。“作为程序员,我们有 REPL:读、评估、打印和循环,但在 Kubernetes 中,我们有 CDEL:编译、部署、执行和循环,”MacKay 说。“这是一个非常快速的循环,并且可以很好地理解,当我们的服务在生产环境中部署时,它们与我们在预生产环境中测试的服务相同。云原生方法为 Ancestry 提供了更好的可扩展性和适应工作负载变化时的业务需求的能力。”
Ancestry 在 Kubernetes 上首次部署提示系统的成功帮助推动了该技术的更大范围采用。“工程师喜欢编写代码,他们喜欢做功能,他们不喜欢坐在那里等待事情部署,并担心扩展和收缩,”MacKay 说。“过了一段时间,工程师们就成为了我们的拥护者。在培训课程中,开发团队总是那些说‘Kubernetes 极大地节省了我们的时间;它是一个推动者;它真的很棒。’的人。随着时间的推移,我们能够说服我们的管理层,这是行业正在进行的过渡,我们需要参与其中。”
一年后,Ancestry 已将大量应用程序迁移到 Kubernetes。“我们有许多不同的服务,构成了 [网站] 从 DNA 方面到家谱方面的丰富环境,”MacKay 说。“我们有前端堆栈、后端堆栈和后端处理类型的堆栈,它们都在集群中。”
该公司继续权衡将哪些服务迁移到 Kubernetes,哪些服务将保持原样,哪些服务将在未来被替换,因此无需迁移。MacKay 估计该公司“正在接近那些将要迁移的功能的一半。我们不再需要进行太多说服。更多的是与产品管理和工程人员获取他们所需的知识和信息有关的时间问题。”
展望未来,MacKay 认为 Ancestry 将在 2017 年最大限度地利用 Kubernetes 的优势。“到年底,我们将非常接近于将所有应该或可以在 Linux 友好环境中运行的东西迁移到 Kubernetes,”他说,并补充说他期待着目前正在开发的功能,例如联合和水平 Pod 自动扩展。“Kubernetes 对我们来说非常棒,我们也将继续乘着这股浪潮。”
他指出,这股浪潮与充满活力的 Kubernetes 社区息息相关,自 Ancestry 作为早期采用者加入该社区以来,该社区发展迅速。“这只是一个粗略的判断方法,但在 2015 年 6 月的 Slack 上,可能只有 500 人,”MacKay 说。“我上次查看时,仅仅在 Slack 频道上可能就有 8500 人。现在有如此多的主要公司和各种类型的公司参与其中。这是贡献者的多样性、贡献者的数量,以及令人难以置信的称职和友好的社区。”
正如他本人和他在Ancestry的团队从社区中“许多人的善良和技术能力”中获益一样,他们也贡献了关于最佳实践的信息,记录了错误问题并参与了开源对话。他们还积极参加聚会,以帮助教育并回馈犹他州的当地科技社区。MacKay 说:“我们试图尽我们所能回馈,而不仅仅是代码。”
当他与考虑采用云原生基础设施的公司会面时,他从Ancestry的Kubernetes之旅中得到的最佳建议是:“从小处着手,但要解决难题,”他说。而且“你需要一位理解容器化愿景的赞助人,来帮助你解决在需要改变时可能出现的政治和技术障碍。”
随着MacKay团队在过去一年半时间里领导的变革,云原生将在未来几年成为Ancestry技术血统的一部分。MacKay是这项技术的坚定支持者,他说人们开玩笑地指责他有一个Kubernetes纹身。
“我真的没有,”他笑着说。“但我很有激情。我并不局限于任何技术;我使用任何对我们有利的技术。如果是其他东西,我会使用它。但现在我相信Kubernetes。我相信容器化。我认为,如果我们能够实现这一点,并在那个世界中确立自己,我们将走得更远,而且在敏捷性以及我们谈论的所有方面都会好得多,它会继续前进。”
他停顿了一下。“所以,是的,我想你可以说我是Kubernetes的传道者,”他说。“但我不会纹身!”