Meta 怎麼將 Jupyter Notebook 變成可自動排程
大家都知道 Jupyter Notebook 非常好用,很適合用來開發 prototype 、跑數據分析、視覺化圖表等用途, Meta 也很仰賴 Jupyter Notebook 做數據分析、視覺化圖表等工作,而且很多要定期手動執行產出報告(有認真做數據監控的公司都會有日報、週報、月報、季報等等),如果這些負責人忘記手動執行,就會有沒數據可看的問題。
p.s. 要定期手動執行的原因是, Jupyter Notebook 先天不是為了 data pipeline 用途而開發,所以自然不會有自動排程的功能
要解決這個問題,想當然應該是用 Apache Airflow 等系統執行就好,但是這些寫好的 Notebooks 如果要改成用 Apache Airflow 或者其他系統執行,其實也是一個成本。
所以 Meta 想了一個方法,結合幾個內部系統做了一項內部工具,把 Jupyter Notebooks 變成可自動排程執行,這之間當然也有些隱私安全考量,畢竟數據被撈回去在員工電腦,也是增添一些資料外洩風險,如果弄成內部工具,除了可以監管這些 Jupyter Notebooks 之外,也可以把資料控制在安全係數比較高的守備範圍內。
Meta 的做法:
執行 Jupyter Notebook 之前,自動把該 notebook 需要的資料倒出來存成 CSV 檔案丟到暫時的伺服器(這步可以避免資料庫機敏連線資訊外洩
第 1 步的資料會被載入到 Jupyter Notebook 之中,所以 Jupyter Notebook 根本不需要透過網路存取資料就可以執行資料處理的工作
最後的數據一樣輸出為 CSV 檔案,一樣透過內部工具上傳到資料倉儲(資料也不會暫存在員工電腦
回收所有過程產生的檔案以及暫時伺服器(完美滅口,沒有機會外洩原始資料
看完覺得這做法還蠻值得參考的,不過我總覺得硬要把 Jupyter Notebook 變成自動排程這件事,最後會變成另一種很畸形的產物,不過哪間公司沒畸形產物呢⋯⋯😄