使用 Python、Docker 與庫伯奈斯進行資料轉換

由安德魯·科茨和艾倫·馮

我們最近創建了一個應用程式來轉換給定天的數據檔,將它們串聯,並將其上傳到 FTP 伺服器。具體而言,下面是應用程式的作用。

  1. 從 S3 下載給定一天的單個 GZ 檔。
  2. 解壓它們
  3. 轉換 JSON 轉換管分隔格式
  4. 將一整天的所有資料合併到一個檔案中
  5. 壓縮該檔案
  6. 透過 FTP 上傳

這個應用程式有一些有趣的事情。首先,雖然我們傳統上為這些類型的應用程式使用 shell 腳本,但這次我們選擇了 Python。此語言使應用程式更易於維護,因為它可以輕鬆支援單元測試。Python 還支援一種功能更實用的程式設計風格,我們開始在整個組織中更頻繁地使用這種樣式。

關於應用程式的另一個有趣的事情是,它在 Docker 容器中運行。使用 Docker 的一個重要好處是,我們的開發環境與我們的生產環境完全一樣。因此,我們在部署過程中沒有遇到諸如 Python 版本錯誤或缺少 Python 模組等問題。這有助於我們在幾分鐘內完成初始部署到生產階段,而對於我們的傳統環境中會佔用的天數相比。

為了將應用程式部署到伺服器群集中,我們使用 Kubernetes。具體來說,我們使用"kubectl 創建"命令。此命令的輸入是 YAML 檔,其中包含要使用的 Docker 映射、CPU 資源和記憶體資源。雖然此應用程式設計為在單個容器中運行,但 Kubernetes 使在幾秒鐘內擴展到多個容器變得非常容易。下面是如何執行此操作的範例。

$ kubectl 刻度 rc 我的應用程式 [副本]5

由於副本選項設置為 5 個,這意味著我們將擴展到五個容器。請注意,我們還在 Kubernetes 之上構建了工具,以説明管理多個群集。使用此工具,我們指定要部署到的位置,系統會自動查找指定位置的正確環境變數。

如您所見,Python、Docker 和 Kubernetes 可幫助我們編寫更簡潔的代碼並更快地反覆運算,從而帶來更好的產品。將來,我們希望將更多遺留應用程式過渡到此環境。敬請期待 部落格 關於這個的帖子。

如果你有興趣解決這樣的問題,我們很樂意有你 加入我們的團隊!

關於作者
ShareThis

ShareThis 自 2007 年以來,通過綜合社會共用、興趣和意圖數據,解鎖了全球數位行為的力量。受全球超過300萬個功能變數名稱的消費者行為推動, ShareThis 觀察真實人員在真實數位目的地上的即時操作。

關於我們

ShareThis 自 2007 年以來,通過綜合社會共用、興趣和意圖數據,解鎖了全球數位行為的力量。受全球超過300萬個功能變數名稱的消費者行為推動, ShareThis 觀察真實人員在真實數位目的地上的即時操作。