Meta での Jupyter Notebook のスケジュール設定
Meta では、Bento は社内の Jupyter ノートブック プラットフォームであり、多くの社内ユーザーが利用しています。 ノートブックは、一定の間隔で繰り返す必要があるレポートやワークフロー (データ ETL の実行など) の作成にも広く使用されています。 このようなノートブックを使用するユーザーは、必要な頻度でノートブックを手動で実行することを忘れないようにする必要があります。このプロセスは、使用するノートブックの数に応じて拡大できないため、忘れてしまう可能性があります。
この問題に対処するために、私たちは Meta で利用可能な残りの内部ツールとシームレスに適合するスケジュールされたノートブック インフラストラクチャの構築に投資しました。 インフラストラクチャへの投資は、私たちが構築するすべてのものにプライバシーが確実に組み込まれるようにするのに役立ちます。 これにより、プライバシーを保護した方法で革新的で価値のあるソリューションを構築し続けることができます。
データ プライバシーと規制への準拠を目的として、メタ システムを介したデータ フローに関する質問に透過的に回答できる機能が、当社のスケジュールされたノートブックの実装を業界の他の企業と区別しています。
この投稿では、プライバシーとリネージを意識した方法で、Bento と Dataswarm (Apache Airflow を思い浮かべてください) と呼ばれるバッチ ETL パイプライン フレームワークをどのように結合したかについて説明します。
Meta では、スケジュールされたアーティファクトに対して静的分析を実行し、透過的な Dataswarm Operator とデータ アノテーションを活用してデータフローに関する一貫したナラティブを維持することで、本番環境の信頼性を向上させることに取り組んでいます。 ノートブックには次のような特別な課題があります。
これら 3 つの考慮事項が設計上の決定を形成し、影響を与えました。 特に、スケジュールできるノートブックを、主に ETL を実行するノートブックと、データ変換を実行して視覚化を表示するノートブックに限定しました。 その他の副作用のあるノートブックは現在対象外であり、スケジュールする資格がありません。
スケジュールされたノートブックをサポートするための 3 つの主要なコンポーネントがあります。
上記で強調された懸念事項の大部分に対処するために、ネットワークにアクセスせずにコンテナー内でノートブックの実行状態を実行します。 また、入出力データの注釈を活用してデータの流れを示します。
ETL の場合、新しい方法でデータをフェッチして書き込みます。
データが意図された目的のみに使用されることを保証するために、BentoOperator を Meta のデータ目的フレームワークに統合しました。 このフレームワークは、メタのスタック全体でデータが流れ、変換される際に、データ使用目的が確実に尊重されるようにします。 ノートブックのスケジュール設定の一環として、「目的ポリシー ゾーン」がユーザーによって提供され、これがデータ目的フレームワークとの統合ポイントとして機能します。
次に、ノートブックをスケジュールするためのワークフローを見てみましょう。
スケジュールのエントリ ポイントをノートブックのヘッダーから直接公開したため、ユーザーはボタンを押すだけで開始できます。
ワークフローの最初のステップは、スケジュールに合わせてパイプラインを自動生成するために使用されるいくつかのパラメーターを設定することです。
次のステップでは、Phabricator (Meta の差分レビュー ツール) の差分が作成される前に、生成されたパイプラインをプレビューすることが含まれます。
ノートブックを実行するためのパイプライン コードに加えて、ノートブック自体もソース管理にチェックインされるので、レビューできるようになります。 スケジュールされたセットアップでノートブックを実行しようとした結果も、テスト計画に含まれます。
差分が確認されて着陸すると、翌日からスケジュールの実行が開始されます。 何らかの理由でノートブックの実行が失敗した場合は、スケジュール所有者に自動的に通知されます。 また、ノートブックの実行のデバッグに役立つコンテキスト ペイン拡張機能を Bento に直接構築しました。
私たちは、プライバシーを意識した方法でスケジュールされたノートブックをサポートするという課題に取り組んできましたが、スケジュールの対象となるノートブックは、ETL を実行するノートブックまたは他の副作用を伴わないデータ分析を実行するノートブックに限定されています。 これは、ユーザーが最終的にスケジュールを設定したいノートブックのほんの一部にすぎません。 ユースケースの数を増やすために、SQL セルに加えて他の透過的なデータ ソースのサポートに投資する予定です。