挑戰
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 的工程師們已經在使用 Java 和 Python 等基於 Linux 的技術,因此部分決定是為了使基礎設施更利於 Linux。他們很快決定使用 Docker 進行容器化,“但最終還是要靠編排部分才能真正發揮作用,”MacKay 說。
他的團隊研究了 Docker Compose、Mesos 和 OpenStack 提供的編排平臺,甚至開始原型化一些自主開發的解決方案。然後他們開始聽到 Kubernetes v1.0 即將釋出的傳聞。“一開始,我們關注的是秘密儲存,這樣我們就不必自己管理所有這些,還有配置對映、無縫部署策略的方法,”他說。“我們發現 Kubernetes 處理資源、型別、標籤和其介面方式,比我們見過的其他方案都先進得多。它非常適合我們的功能需求。”
這並不是說採用新技術沒有帶來一些挑戰。“改變很難,”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 的佈道者,”他說,“但我不會去紋身!”