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

挑战

Ancestry 是全球领先的家谱和消费者基因组学公司,它利用先进的工程和技术帮助世界各地的人们发现他们的身世故事。30 多年来,该公司一直致力于创新和构建产品和技术,其核心是产生真实而感人的人类反应。Ancestry 目前为超过 260 万付费用户提供服务,拥有 200 亿份历史记录、9000 万棵家谱,其 AncestryDNA 网络中有超过 400 万人,使其成为全球最大的消费者基因组学 DNA 网络。该公司的热门网站 ancestry.com 在“大数据”一词流行之前就一直在处理大数据。该网站建立在数百种服务、技术和传统的部署方法之上。Ancestry 的软件工程师兼架构师 Paul MacKay 说:“它在过去对我们很有效,但在处理过程中变得相当繁琐,而且很耗时。作为一家主要在线服务公司,我们一直在寻找加速的方法,以便更敏捷地交付解决方案和产品。”

解决方案

该公司正在向云原生基础设施过渡,使用 Docker 进行容器化,使用 Kubernetes 进行编排,并使用 Prometheus 进行集群监控。

影响

MacKay 说:“Ancestry 的每一款产品、每一个决定都专注于让我们的客户对自己和家人有亲密、有时甚至是改变人生的发现而感到高兴。随着公司的不断发展,使用 Kubernetes 所带来的生产力提高帮助 Ancestry 更快地实现了客户发现。例如,随着转向 Docker 化,我们现在可以在不到一分钟的时间内部署大部分代码,而不是花费 20 到 50 分钟来部署新的代码。除了云原生和 Kubernetes 类型技术的各种特性和优势之外,我们还真正体验到了显著的时间节省。”

一切始于一片颤抖的叶子。

自十年前推出以来,颤抖的叶子图标已成为 Ancestry 的标志性功能之一,它向用户表明,您可以使用一个有用的提示来了解更多关于您的家谱的信息。

因此,当该公司决定开始将其基础设施迁移到云原生技术时,第一个在 Kubernetes(用于跨主机集群管理应用程序容器的开源平台)上启动的服务就是这个提示系统。可以把它想象成亚马逊的推荐产品,但它不是推荐产品,而是推荐记录、故事或家族联系。Ancestry 软件工程师兼架构师 Paul MacKay 说:“这是网站中非常重要的一部分,但它也足够小,可以作为试点项目,我们知道我们可以以一种非常合适、安全的方式来处理它。”

MacKay 补充说,当它在 2016 年初顺利上线时,“我们这项服务的部署时间实际上从 50 分钟缩短到了 2 到 5 分钟。开发团队非常激动,因为我们专注于为客户提供良好的体验。这意味着功能、稳定性,以及一流运营所需的一切。”

颤抖的叶子的稳定性向 MacKay 和他的团队表明,他们决定采用云原生技术对公司来说是正确的选择。Ancestry 拥有一个私有数据中心,其网站(于 1996 年上线)建立在数百种服务、技术和传统的部署方法之上。MacKay 说:“它在过去对我们很有效,但遗留系统的总和在处理过程中变得相当繁琐,而且很耗时。我们一直在寻找其他加速的方法,以便更敏捷地交付解决方案和产品。”

这种需求促使他们在 2015 年开始探索容器化。Ancestry 的工程师已经在 Linux 上使用 JavaPython 等技术,因此部分决定是关于使基础设施更加适合 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。MacKay 说:“我们有许多不同的服务,构成了 [网站] 从 DNA 方面和家谱方面都非常丰富的环境。我们在集群中拥有前端堆栈、后端堆栈和后端处理类型堆栈。”

该公司继续权衡哪些服务将迁移到 Kubernetes,哪些服务将保持原样,哪些服务将在未来被替换,因此不必迁移。MacKay 估计,该公司“正在接近将要迁移的功能的一半。我们不再需要做太多说服工作。更多的是时间问题,让产品管理和工程人员获得他们需要的知识和信息。”

展望未来,MacKay 认为 Ancestry 将在 2017 年最大限度地发挥 Kubernetes 的优势。他说:“到今年年底,我们几乎可以将所有应该或可能在 Linux 友好环境中的东西都放到 Kubernetes 中,”他还补充说,他期待着目前正在开发的联合和水平 Pod 自动扩展等功能。“Kubernetes 对我们来说非常棒,我们将继续乘风破浪。”

他指出,这波浪潮与充满活力的 Kubernetes 社区息息相关,自 Ancestry 作为早期采用者加入该社区以来,该社区一直在突飞猛进地发展。MacKay 说:“这只是一个非常粗略的判断方法,但在 2015 年 6 月的 Slack 上,可能只有 500 人。我上次查看时,仅在 Slack 频道上就有大约 8500 人。现在有这么多大公司和不同类型的公司参与进来。这是贡献者的多样性、贡献者的数量、极其称职和友好的社区。”

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

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

随着 MacKay 的团队在过去一年半中领导的变革,云原生将在未来几年成为 Ancestry 技术谱系的一部分。MacKay 一直是这项技术的拥护者,他说人们开玩笑地指责他身上有 Kubernetes 纹身。

“我真的没有,”他笑着说。 “但我充满热情。 我不局限于任何技术;我使用任何我需要的、让我们变得更好的东西。 如果是别的东西,我会用它。 但现在我相信 Kubernetes。 我相信容器化。 我认为,如果我们能够进入并在这个领域站稳脚跟,我们将走得更远,并且在敏捷性和我们谈论的所有方面都做得更好,它会继续前进。”

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