挑战
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 说,“但对于一个试点项目来说,它也足够小,我们知道我们可以以非常恰当、安全的方式处理它。”
当它在 2016 年初顺利上线时,“该服务的部署时间实际上从 50 分钟缩短到了 2 或 5 分钟,”MacKay 补充说。“开发团队非常兴奋,因为我们专注于为我们的客户提供出色的体验。这意味着功能、意味着稳定性、意味着我们需要的一流运营所需的所有这些东西。”
那片摇晃的叶子的稳定性向 MacKay 和他的团队发出信号,他们决定采用云原生技术对公司来说是正确的选择。Ancestry 拥有一个私有数据中心,它在其网站(于 1996 年推出)上构建了数百种服务和技术以及传统的部署方法。“它过去对我们来说效果很好,但遗留系统的总和在其处理过程中变得非常繁琐且耗时,”MacKay 说。“我们正在寻找其他方法来加速,从而在交付我们的解决方案和产品时更加敏捷。”
这种需求促使他们在 2015 年探索容器化。Ancestry 的工程师已经在 Linux 上使用诸如 Java 和 Python 等技术,因此部分决定是为了使基础设施对 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 的优势。“到今年年底,我们非常接近将所有应该或可以放入 Kubernetes 中对 Linux 友好的世界中的所有内容都放入其中,”他说,并补充说他期待着目前正在开发中的联邦和水平 Pod 自动缩放等功能。“Kubernetes 对我们来说非常棒,我们将继续乘风破浪。”
他指出,这种浪潮与充满活力的 Kubernetes 社区息息相关,自从 Ancestry 作为早期采用者加入以来,这个社区已经突飞猛进地发展壮大。“这只是一种非常粗略的判断方式,但在 2015 年 6 月的 Slack 上,可能只有 500 人,”MacKay 说。“我上次查看时,仅在 Slack 频道上就有大约 8500 人。现在有如此多的主要公司和各种不同的公司参与其中。这是贡献者的多样性、贡献者的数量,以及令人难以置信的称职和友好的社区。”
正如他和他在 Ancestry 的团队从他所谓的社区中“许多人的善良和技术能力”中受益一样,他们也贡献了关于最佳实践的信息,记录了错误问题并参与了开源对话。并且他们一直积极参加 meetups,以帮助教育和回报犹他州的当地技术社区。MacKay 说:“我们正在尽我们所能回馈我们的经验,而不仅仅是代码。”
当他与考虑采用云原生基础设施的公司会面时,他从 Ancestry 的 Kubernetes 之旅中给出的最佳建议是:“从小处着手,但要解决难题,”他说。“你需要一位理解容器化愿景的支持者,以帮助你解决在需要变革时可能出现的政治障碍和其他技术障碍。”
在 MacKay 的团队在过去一年半所领导的变革下,云原生将成为 Ancestry 未来多年技术谱系的一部分。MacKay 一直是这项技术的拥护者,以至于他说人们开玩笑地指责他纹了 Kubernetes 纹身。
“我真的没有,”他笑着说。“但我充满热情。我并不只专注于任何一种技术;我使用任何能使我们变得伟大的技术。如果需要其他技术,我也会使用。但现在我相信 Kubernetes。我相信容器化。我认为,如果我们能到达那里并在那个世界中立足,我们将会走得更远,在敏捷性和我们所谈论的一切方面都会变得更好,而且它会继续发展。”
他停顿了一下。“所以,是的,我想你可以说我是 Kubernetes 的布道者,”他说。“但我不会去纹身!”