公司 Ygrene 地點 加利福尼亞州佩塔盧馬 行業 清潔能源融資

挑戰

Ygrene 是一家 PACE(物業評估清潔能源)融資公司,自 2010 年以來已資助了超過 10 億美元的貸款。為了批准和處理這些貸款,Ygrene 開發經理 Austin Adams 說:“我們有大量資料來源正在聚合,還有大量系統需要處理這些資料。”該公司曾使用大型伺服器,“我們已經達到了垂直擴充套件的極限。我們有一個非常不穩定的系統,僅僅為了即時進行後臺資料處理,請求就使其不堪重負。使用者看到的效能非常差。我們需要一個解決方案,而不需要我們對程式碼庫進行大規模重構。”作為一家金融公司,Ygrene 還需要確保其應用程式的安全交付。

解決方案

Ygrene 團隊從 Engine Yard 平臺和 Amazon Elastic Beanstalk 遷移出來,採用了雲原生技術和實踐:Kubernetes 幫助垂直擴充套件和分發工作負載,Notary 用於構建時控制和獲取在使用第三方依賴項的 Docker 映象上的信任,以及 Fluentd 用於“觀察我們堆疊的每個部分”,所有這些都在 Amazon EC2 Spot 上執行。

影響

以前,部署通常需要三到四個小時,並且每週或每兩週在低流量時段部署兩三個月的工作量。現在,Kubernetes 的部署需要五分鐘,整個部署(包括冒煙測試)需要一小時。Adams 說:“我們能夠每週部署三到四次,只需一週或兩天的工作量。”“我們在工作日、白天進行部署,並且沒有任何停機時間。即使在半夜,我們也不得不請求業務批准才能停機,因為人們可能正在進行貸款。現在我們可以部署、交付程式碼和遷移資料庫,所有這些都無需停機。公司可以獲得新功能,而無需擔心業務丟失或延遲。”此外,透過使用 kops 專案,Ygrene 現在可以以以前成本的十分之一,在 AWS EC2 Spot 上執行其 Kubernetes 叢集。Adams 說,這些雲原生技術“改變了可擴充套件性、可觀察性和安全性——我們正在新增非常安全的新資料來源。”“如果沒有 Kubernetes、Notary 和 Fluentd,我們就無法告訴我們的投資者和團隊成員我們知道發生了什麼。”

在不到十年的時間裡,Ygrene 已為可再生能源專案提供了超過 10 億美元的貸款。

Ygrene 是一家 PACE(物業評估清潔能源)融資公司。開發經理 Austin Adams 說:“我們利用房屋或商業建築的資產淨值來為任何節電、發電、節水或減少碳排放的物業改進專案提供融資。”

為了批准這些貸款,公司處理了大量的承保資料。Adams 說:“我們需要驗證房產、公司或個人的大量不同資訊點。因此,我們有大量的聚合資料來源,還有大量的系統需要即時處理這些資料。”

到 2017 年,部署和可擴充套件性已成為痛點。他說,公司曾使用大型伺服器,“我們已經達到了垂直擴充套件的極限。”遷移到 AWS Elastic Beanstalk 並沒有解決問題:“Scala 服務需要來自主要 Ruby on Rails 服務和不同供應商的大量資料,因此它們以 Ruby 服務無法處理的速度請求資訊。我們與 Elastic Beanstalk 的配置也存在大量缺失。這一切都達到了高潮,我們意識到我們有一個非常不穩定的系統。”

Adams 和團隊的其他成員著手尋找一個能夠帶來變革的解決方案,但他表示,“這不需要我們對程式碼庫進行大規模重構。”作為一家金融公司,Ygrene 對安全性和可擴充套件性的需求同樣重要。他們透過採用雲原生技術找到了答案:Kubernetes 幫助垂直擴充套件和分發工作負載,Notary 在每個級別實現可靠的安全性,Fluentd 用於可觀察性。Adams 說:“Kubernetes 是社群的發展方向,我們希望面向未來。”

藉助 Kubernetes,團隊能夠使用 Docker 快速容器化 Ygrene 應用程式。Adams 說:“我們必須改變一些實踐和程式碼,以及構建方式,但我們能夠在短短一個月左右的時間內將主要系統遷移到 Kubernetes 上,並在兩個月內投入生產。對於一家金融公司來說,這非常快。”

怎麼做到的?Adams 說,雲原生“改變了可擴充套件性、可觀察性和安全性——我們正在新增非常安全的新資料來源。”“如果沒有 Kubernetes、Notary 和 Fluentd,我們就無法告訴我們的投資者和團隊成員我們知道發生了什麼。”

Adams 說,Notary 尤其“簡直是天賜之物”。“我們需要知道我們對第三方依賴項的攻擊面很小,或者至少是可控的。我們將其用作信任系統,也用作隔離,因此生產映象由 Notary 簽名,但一些開發映象我們不簽名。這是為了確保它們不能進入生產叢集。我們一直在測試叢集中使用它,以對我們的構建感到更安全。”

透過使用 kops 專案,Ygrene 能夠從 Elastic Beanstalk 遷移到在 AWS EC2 Spot 上執行其 Kubernetes 叢集,成本僅為以前的十分之一。Adams 說:“以前為了擴充套件,我們需要增加例項大小,這導致高成本和低價值。”“現在有了 Kubernetes 和 kops,我們能夠在 Spot 上使用多個例項組進行水平擴充套件。”

這也有助於他們降低在公共雲中執行所帶來的風險。軟體工程師 Zach Arnold 領導了向 Kubernetes 的遷移,他說:“我們基本上發現,如果能夠使用 EC2 Spot 選擇中斷可能性極低且沒有中斷歷史的例項型別,並且我們願意支付足夠高的價格,那麼我們幾乎可以獲得與使用 Kubernetes 相同的保證,因為我們有足夠的節點。”“現在我們已經重新架構了這些應用程式元件,使其不再駐留在同一伺服器上,我們可以將其推送到許多不同的伺服器上,從而實現更穩定的部署。”

因此,團隊現在可以在一天中的任何時間交付程式碼。Arnold 說:“這很危險,因為它可能會導致整個貸款管理軟體崩潰。”“但我們現在可以在白天安全可靠地部署。”

以前,部署通常需要三到四個小時,並且每週或每兩週在低流量時段部署兩三個月的工作量。現在,Kubernetes 的部署需要五分鐘,整個部署(包括冒煙測試)需要一小時。Adams 說:“我們能夠每週部署三到四次,只需一週或兩天的工作量。”“我們在工作日、白天進行部署,並且沒有任何停機時間。即使在半夜,我們也不得不請求業務批准才能停機 30 分鐘到一小時,因為人們可能正在進行貸款。現在我們可以部署、交付程式碼和遷移資料庫,所有這些都無需停機。公司可以獲得新功能,而無需擔心業務丟失或延遲。”

雲原生也影響了 Ygrene 的 50 多名開發人員和承包商的工作方式。Adams 和 Arnold 花費了大量時間“教人們開箱即用地進行分散式思考,”Arnold 說。“我們最終選擇了我們稱之為‘交付四 S’:安全(safely)、可靠(securely)、穩定(stably)和快速(speedily)。”(有關其安全方面的更多資訊,請參閱他們關於“持續入侵”策略的文章。)Adams 說,至於工程師,“他們已經能夠隨著軟體的進步而進步。我認為最終,開發人員對他們所做的工作感覺更好,而且他們也感覺與現代軟體開發社群的聯絡更緊密。”

展望未來,Adams 很高興能探索更多的 CNCF 專案,包括 SPIFFE 和 SPIRE。他說:“CNCF 已成為眾多專案的出色孵化器。現在我們定期檢視其網頁,以瞭解是否有任何新的、出色的、高質量的專案可以整合到我們的堆疊中。它實際上已成為我們瞭解需要關注哪些軟體以使我們的系統更安全或更具可擴充套件性的中心。”