建構自動升級的lakeFS環境

年夏天,我有機會在 Treeverse 出色的開發團隊實習,並參與 LakeFS 專案。

這個機會代表了我編程之旅的一個重要進展,我的編程之旅卑微地從麻省理工學院基於博客的編程語言——Scratch 的小橙貓 開始!在小學開始接觸程式設計後,沒多久,我就讓 Scratch Cat 帶著編碼邏輯和運動的橙色和藍色拼圖在螢幕上飛馳。

這種逐一定義世界的過程,對某

個義大利水管工進行編碼來跳躍或讓龍噴出火焰的過程,是令人興奮的。我相信任何使用程式碼的人都會欣賞程式設計的成功時刻,當所有文字行最終開始協同工作以實現奇蹟時!

在整個學校裡,我繼續創造程式

碼的小世界,完成電腦科學課程,並熬夜瘋狂地完成黑客馬拉松專案。當我搬進大學宿舍時,我意識到了一些事情——創建應用程式是一個困難(但有益)的過程,但這只是整個過程的一部分。部署程式碼並允許其他人使用它是一個單獨的方面,需要額外的學習。

軟體工程和 DevOps 的結合將繼

續塑​​造我在 Treeverse 的經歷。

深入 DevOps
在了解了 LakeFS 程式碼 越南 WhatsApp 號碼數據 庫的詳細資訊後,我準備開始我的實習專案了!

我的任務:部署應用程式並建立一個部署管道,使開發人員能夠擁有一個長期存在的、可升級的

LakeFS 環境。這個環境可以讓我們:

獲得有關使用者部署體驗以及他們在自己的 CI/CD 流程中可能遇到的問題的寶貴見解
為 Treeverse 的開發人員在生產環境中展示 LakeFS 的功能鋪路。
這項任務一開始似乎令人畏懼——我對 Docker 容器或 AWS 幾乎沒有經驗,而且部署是科技公司工程師拋出的一個花哨的流行詞。

WhatsApp數據

但在我出色的導師 Itai 和文件的

幫助下,我很快就能夠學習這項工作所需的工具。

使用 Terraform 和 AWS
LakeFS 部署的重點是Terraform,這是基 我們一步一步教您如何制定儲蓄計劃 礎架構即程式碼 (IaC),它允許我從設定檔啟動 AWS 資源。查看 Yoni Augarten 的早期工作和LakeFS 部署頁面讓我了解了部署 LakeFS 需要哪些資源。

我們使用 ECS 進行容器

編排,使用 ALB 進行彈性負載平衡,使用 Route 53 進行 DNS 記錄,使用 RDS 進行 LakeFS 所需的 Postgres 資料庫。我使用 Terraform 的配置 加拿大數據 語言建立並連結了每個資源,並在 ECS 任務定義中設定了必要的 LakeFS 環境變數。

設定完成後,只需要一個 terraform apply指令即可啟動 LakeFS!

自動升級和那些煩人的遷移

一旦 LakeFS 運行並連接到我們的 S3 儲存桶,我需要確定升級過程。該專案的目標是建立一個長期存在的 LakeFS 實例,因此自動升級是一項重要功能。

LakeFS 不會在應用程式上儲存狀態,而是將其卸載到 Postgres 資料庫。基於這種設計,很明顯資料庫遷移將成為主要問題。

從新的 LakeFS 映像運行lakefs migrate up 會使

用二進位檔案中的 DDL 腳本升級資料庫架構。我利用 ECS 的容器相依性功能建立一個容器,該容器在從單獨的容器運行 LakeFS 之前執行「向上遷移」命令。

使用 Terraform 在本地測試此升級策略成功!但在這個過程中,我確實在程式碼中遇到了一些有趣的(且具有破壞性的)遷移行為,稍後我將更詳細地討論這些行為。

返回頂端