公司 Ancestry 地點 猶他州李海市 產業 網際網路公司、線上服務

挑戰

Ancestry 是家譜和消費者基因體學的全球領導者,運用精密的工程和科技,協助世界各地的人們探索造就他們的生命故事。公司已投入 30 多年創新和打造產品與技術,而其核心是產生真實且感性的人類回應。Ancestry 目前為超過 260 萬名付費訂戶提供服務,擁有 200 億筆歷史記錄、9 千萬棵家譜樹,以及超過 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 擁有一個容器可以更輕鬆地管理並擁有更小的部署單元。

透過建立該流程,某些服務的部署時間縮短到不到一分鐘。「作為程式設計師,我們有所謂的 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 頻道上可能就有 8,500 人。現在有這麼多主要公司和不同類型的公司參與其中。它是貢獻者的多樣性、貢獻者的數量、令人難以置信的稱職和友善的社群。」

正如他和他在 Ancestry 的團隊從他所謂的社群中「許多人的善良和技術能力」中受益匪淺一樣,他們也貢獻了有關最佳實務的資訊、記錄了錯誤問題並參與了開放原始碼對話。他們也積極參加 meetups,以幫助教育和回饋猶他州當地的科技社群。MacKay 說:「我們正試圖盡我們所能地回饋我們的經驗,而不僅僅是程式碼。」

當他與正在考慮採用雲原生基礎架構的公司會面時,他從 Ancestry 的 Kubernetes 之旅中給出的最佳建議是:「從小處著手,但要從困難的問題開始,」他說。而且「你需要一位了解容器化願景的贊助者,以幫助你解決政治以及在需要變更時可能發生的其他技術障礙。」

憑藉 MacKay 的團隊在過去一年半中領導的變革,雲原生將成為 Ancestry 技術譜系的一部分,並在未來許多年持續發展。MacKay 一直是這項技術的擁護者,以至於他說人們開玩笑地指責他紋了 Kubernetes 刺青。

「我真的沒有,」他笑著說。「但我充滿熱情。我不專屬於任何技術;我使用任何我需要的、可以讓我們變得偉大的東西。如果是別的東西,我也會用。但現在我相信 Kubernetes。我相信容器化。我認為如果我們能夠到達那裡並在那個世界中站穩腳跟,我們將在敏捷性和我們談論的所有事情方面走得更遠、做得更好,而且它會向前發展。」

他停頓了一下。「所以,是的,我想你可以說我是 Kubernetes 的福音傳道者,」他說。「但我不會去紋刺青!」