使用 Python、Docker 與庫伯奈斯進行資料轉換
由安德魯·科茨和艾倫·馮
我們最近創建了一個應用程式來轉換給定天的數據檔,將它們串聯,並將其上傳到 FTP 伺服器。具體而言,下面是應用程式的作用。
- 從 S3 下載給定一天的單個 GZ 檔。
- 解壓它們
- 轉換 JSON 轉換管分隔格式
- 將一整天的所有資料合併到一個檔案中
- 壓縮該檔案
- 透過 FTP 上傳
這個應用程式有一些有趣的事情。首先,雖然我們傳統上為這些類型的應用程式使用 shell 腳本,但這次我們選擇了 Python。此語言使應用程式更易於維護,因為它可以輕鬆支援單元測試。Python 還支援一種功能更實用的程式設計風格,我們開始在整個組織中更頻繁地使用這種樣式。
關於應用程式的另一個有趣的事情是,它在 Docker 容器中運行。使用 Docker 的一個重要好處是,我們的開發環境與我們的生產環境完全一樣。因此,我們在部署過程中沒有遇到諸如 Python 版本錯誤或缺少 Python 模組等問題。這有助於我們在幾分鐘內完成初始部署到生產階段,而對於我們的傳統環境中會佔用的天數相比。
為了將應用程式部署到伺服器群集中,我們使用 Kubernetes。具體來說,我們使用"kubectl 創建"命令。此命令的輸入是 YAML 檔,其中包含要使用的 Docker 映射、CPU 資源和記憶體資源。雖然此應用程式設計為在單個容器中運行,但 Kubernetes 使在幾秒鐘內擴展到多個容器變得非常容易。下面是如何執行此操作的範例。
$ kubectl 刻度 rc 我的應用程式 [副本]5
由於副本選項設置為 5 個,這意味著我們將擴展到五個容器。請注意,我們還在 Kubernetes 之上構建了工具,以説明管理多個群集。使用此工具,我們指定要部署到的位置,系統會自動查找指定位置的正確環境變數。
如您所見,Python、Docker 和 Kubernetes 可幫助我們編寫更簡潔的代碼並更快地反覆運算,從而帶來更好的產品。將來,我們希望將更多遺留應用程式過渡到此環境。敬請期待 部落格 關於這個的帖子。
如果你有興趣解決這樣的問題,我們很樂意有你 加入我們的團隊!