公司 Ancestry 地点 犹他州莱希市 行业 互联网公司,在线服务

挑战

Ancestry 是家族史和消费者基因组学领域的全球领导者,它利用先进的工程和技术,帮助世界各地每个人发现自己的家族故事。该公司已投入超过 30 年的时间进行创新和构建产品及技术,其核心在于引发真实而感性的人类反应。Ancestry 目前拥有超过 260 万付费订阅用户,拥有 200 亿条历史记录,9000 万棵家谱,以及超过 400 万人加入其 AncestryDNA 网络,使其成为全球最大的消费者基因组学 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 的工程师们已经在使用 JavaPython 等基于 Linux 的技术,因此部分决定是为了使基础设施更利于 Linux。他们很快决定使用 Docker 进行容器化,“但最终还是要靠编排部分才能真正发挥作用,”MacKay 说。

他的团队研究了 Docker ComposeMesosOpenStack 提供的编排平台,甚至开始原型化一些自主开发的解决方案。然后他们开始听到 Kubernetes v1.0 即将发布的传闻。“一开始,我们关注的是秘密存储,这样我们就不必自己管理所有这些,还有配置映射、无缝部署策略的方法,”他说。“我们发现 Kubernetes 处理资源、类型、标签和其界面方式,比我们见过的其他方案都先进得多。它非常适合我们的功能需求。”

此外,MacKay 表示,“我只是相信 Google 在容器化方面的历史所带来的信心。所以我们从一开始就走在前沿。从那以后我们就没有回头过。”

这并不是说采用新技术没有带来一些挑战。“改变很难,”MacKay 说。“不是因为技术很难或者技术不好。只是人们喜欢按照他们以前的方式做事。有早期采用者,也有后来者。这是一个双方的学习经验。”

找出 Ancestry 最佳部署操作是采用云原生基础设施的一项重要工作。MacKay 说:“我们希望确保流程简便,并以允许我们达到所要求和客户所要求的最高安全程度的方式进行控制。”“Kubernetes 和其他产品有一些不错的解决方案,但需要一些‘胶水’来将其整合到公司流程和治理中。这就像拥有一副通用的手套,但当你真正想抓取某些东西时,你必须让它为你量身定制。这就是我们必须做的。”

他们的最佳实践包括允许开发人员部署到开发阶段和生产环境,然后控制需要治理和审计的方面,例如秘密。他们发现,每个服务有一个命名空间有助于实现秘密和配置映射的封装。对于他们的需求而言,每个 Pod 中只有一个容器使得管理和拥有更小的部署单元变得更容易。

通过建立这个流程,某些服务的部署时间缩短到了一分钟以内。MacKay 说:“作为程序员,我们有 REPL(读取、评估、打印和循环),但有了 Kubernetes,我们有了 CDEL(编译、部署、执行和循环)。”“这是一个非常快速的循环,并且有助于理解当我们的服务部署到生产环境时,它们与我们在预生产环境中测试的一样。云原生方法让 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 频道上可能就有 8,500 人。现在有这么多大型公司和各种类型的公司参与其中。它是贡献者的多样性、贡献者的数量,以及令人难以置信的称职和友好的社区。”

尽管他和他在 Ancestry 的团队从他所说的社区中“许多人的优点和技术能力”中受益匪浅,他们也贡献了关于最佳实践的信息,记录了错误问题,并参与了开源对话。他们还积极参加见面会,以帮助教育和回馈犹他州的当地科技社区。MacKay 说:“我们正在努力回馈我们的经验,而不仅仅是代码。”

当他遇到考虑采用云原生基础设施的公司时,他从 Ancestry 的 Kubernetes 之旅中给出的最佳建议是:“从小处着手,但要解决难题,”他说。而且,“你需要一位理解容器化愿景的赞助人,帮助你应对政治以及在需要变革时可能出现的其他技术障碍。”

随着 MacKay 团队在过去一年半中带来的变革,云原生将在未来多年成为 Ancestry 技术谱系的一部分。MacKay 如此拥护这项技术,以至于他说人们开玩笑地指责他有 Kubernetes 纹身。

“我真的没有,”他笑着说。“但我充满热情。我并不排斥任何技术;我使用任何能让我们变得出色的现有技术。如果是其他技术,我也会用。但现在我坚信 Kubernetes。我相信容器化。我认为如果我们能做到这一点,并在那个世界中站稳脚跟,我们将走得更远,在敏捷性以及我们谈论的所有事情上都会做得更好,它会继续前进。”

他停顿了一下。“所以,是的,我想你可以说我是 Kubernetes 的布道者,”他说,“但我不会去纹身!”