サーバーレスのパターンとソリューションのループ
Serverless Dagster Cloudありネイティブ パターンの雰囲気やクラウド インフラストラクチャをセットアップせずに、Dagster コードを計画して展開することをお勧めします。 常に変換を GitHub にコミットする必要があります。GitHub Motion は、コードをビルドして Dagster Cloud に直接デプロイします。 UI で Dagster オブジェクトと一緒に作業します。 “>
シャラブ・チャトゥルヴェディDagster Cloud の小説 Rapid Deploy の過剰なステージ概要を共有します 機能.
上記をスパイすると、最も長く除去される 2 つのものは次のとおりです。
- Docker の写真は複数の レイヤー
で構成されています スタック内で、すべてのレイヤーが 内のコマンドのサブセットによって構築されます) Dockerfile
- GitHub 実行マシンで写真を再構築 GitHubアクションキャッシュ
- 構築中
デプロイ Docker コンテナ (90 秒)一つ一つ調べてみましょう
Docker写真の作成
すべてのレイヤーはハッシュで識別されます.
レジストリに写真をインポートするときは、最も簡単な(ハッシュによって識別されるように) レジストリ内で現在最新ではないレイヤーがアップロードされます。
影響を受けていないすべてのレイヤーをキャッシュから実行マシンにプルします。 あなたのベンチャーへの依存関係のかなりのベローが今は変わらないことになった後、それらは実行プロセス全体でキャッシュから実行マシンに静かにコピーされることをカモフラージュしてください。 Docker ビルドは 今はありません
決定論的。 真に同じ内容の画像を常に 2 回実行する必要があります。おそらく、毎回特定のハッシュを構築できます。 (遠回しに関連付けられていましたが、この突然の観察を啓発したいと思いました。隅のケースとして、既にレジストリにあるレイヤーと同等の新しく構築された実質的なレイヤーは、新しいレイヤーとしてアップロードされる必要があることに注意してください。)
一つ一つ調べてみましょう
Docker写真の作成
Docker写真の作成
すべてのレイヤーはハッシュで識別されます.
レジストリに写真をインポートするときは、最も簡単な(ハッシュによって識別されるように) レジストリ内で現在最新ではないレイヤーがアップロードされます。
影響を受けていないすべてのレイヤーをキャッシュから実行マシンにプルします。 あなたのベンチャーへの依存関係のかなりのベローが今は変わらないことになった後、それらは実行プロセス全体でキャッシュから実行マシンに静かにコピーされることをカモフラージュしてください。 Docker ビルドは 今はありません 決定論的。 真に同じ内容の画像を常に 2 回実行する必要があります。おそらく、毎回特定のハッシュを構築できます。 (遠回しに関連付けられていましたが、この突然の観察を啓発したいと思いました。隅のケースとして、既にレジストリにあるレイヤーと同等の新しく構築された実質的なレイヤーは、新しいレイヤーとしてアップロードされる必要があることに注意してください。)
Dockerコンテナの起動 Docker コンテナの起動について啓発するために不可欠な要素は、 AWS Fargate を実行します そして、画像のプロビジョニングと起動には 45 ~ 90 秒かかります。 現在は は表示されません。 画像キャッシュ. 新しいコンテナーを起動すると、すべてのレイヤーがレジストリからプロビジョニングされたコンテナーにダウンロードされます。
現在、重要な要件の 1 つは 再現性 です。 : 特定の同じコードと雰囲気を複数回再デプロイする場所にいる必要があるという意図を勝ち取ります。 コードと環境の識別子としての Docker ピクチャ ハッシュの使用は、この要件に完全に対応しています。
以下に、私たちが検討し、言及したいくつかの選択肢を示します。
選択肢のまとめ- 開始時間が大幅に短縮された AWS Lambda に切り替えます。
ラムダの雰囲気には標準以下の写真が含まれており、必要に応じてカスタマイズするのがより素晴らしいものになっています。 さらに、実行時間に 15 分間の制限を課すため、稼働時間が長いサーバーでは複雑な回避策が必要になる可能性があります。
詩
, , シブ、 と pex. さらに、これらのツールと組み合わせて Python 環境をマウントするための EFS ボリュームの実行についても考えました)
私たちの解決策を支持する最初の要素は、Docker の写真は業界では奇妙ですが、何百メガバイトもの球形の写真を転送することは、小さな写真を同期する必要があることを修正した後、不必要に強引に見えるという認識でした。変化。 git について考えてみてください。git は差分を送信するのが最も簡単ですが、完全で一貫したリポジトリを生成します。 これにより、私たちは可能性 4 の方向に傾きました… 最も単純な場合、私たちのために多くの作業を実行できる適切なツールを獲得できます。 いくつかの実験の後、私たちは
PEXとは?
Python 実行可能ファイルの概要 pex
Python パッケージを pex recordsdata という recordsdata にバンドルする手段です。 。 これらは、Python パッケージとその中のいくつかのブートストラップ コードを昇格させる実行可能なレコードデータです。 話しましょう、私たちは
ダグスターをバンドルする立場にあります
キットとその依存関係を 1 つのファイルにまとめてストリークしますそれ:
「著作権」、「信用格付け」 または 「ライセンス」 for more info. InteractiveConsole ダグスター >
% pex dagster –python python3.8 -o dagster.pex % ./dagster .pex Python .16 デフォルト、12 月 , 全体の雰囲気をひとつのファイルにまとめることは、球体を出荷して S3 に保管するのに便利です。 pex は、「ファイル内のデジタルな雰囲気」を修正する以上のものを提供します。ここにリストされているのは、私たちが実行する他の定式化です。
実行時に、pex 環境は他のインテンション拡張パッケージから完全に分離されます。 雰囲気の中で最も最新の最も魅力的なパッケージは、これらの pex ファイルにバンドルされています。 複数のpex recordsdataを同等のマシンに出荷し、大気隔離を恐れる必要はありません.
$ pex dagster pandas -o out.pex | sha256sum e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 - $ pex dagster pandas -o out.pex )|
sha256sum e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 – これにより、これらの pex レコードデータにタイトルを付けるための開示アドレスの行使において、自信が持てます。 再現性を確保するために、pex ファイル ハッシュと Docker 画像ハッシュを実行します。構成
多数の pex レコードデータが実行時にマージされる可能性が高く、効率的に環境を 1 つにマージします。 % pex pandas -o pandas.pex % pex dagster -o dagster.pex % ) [Clang 14.0.0 (clang-1400.0.29.202)] ダーウィンフォーム 「サポート」、 情報。 「ライセンス」 for more InteractiveConsole パンダ > インポート ダグスター >>>
私たちはこれを行使しますコードを実行時にマージする 2 つの形式に分ける: a
deps.pex 全依存関係を含むファイルとa .16 デフォルト、12月 、01:24:57provide.pex 正しい個体コードを含むファイル甘やかされて育ったプラットフォームのビルド Linux を動かします python:*-slim 派生 規格外の写真 サーバーレス クラウドで。 pex インストゥルメントは、
パッケージ用のホイール
はすぐに入手できます. の使用法pex
pex レコードデータを保存するための S3 と組み合わせて、Docker の写真を作成して起動するオーバーヘッドを高速方向が回避するマシンを構築しました。 .私たちのマシンは次のように動作します: コードを GitHub にコミットすると、GitHub 循環は がっしり execute または rapid execute 以前のデプロイ以降に依存関係が変更されたかどうかを期待しています。 setup で指定された以下の依存関係のビデオ表示を保持します.py
および
Rapid Deploys
necessities.txt
.
強力な実行のために、ベンチャーの依存関係を に実行します。 deps.pex
ファイルとコードを provide.pex ファイル。 どちらも Dagster クラウドにアップロードされます。 迅速な実行のために、最も簡単に実行して provide を追加します。 pex
ファイル.Dagster Cloud では、既存のコンテナーを再利用したり、コード サーバーとして新しいコンテナーをプロビジョニングしたりできます。 deps.pex
と provide.pex はこのコード サーバーにデータを記録し、それらを実行して隔離された環境でコードをストリークします。 ユーザー間でコンテナーを分割することはなく、コンテナー上のすべての環境は同等の個人に属します。 迅速な展開のための義務的なケースと最悪のケースのタイムラインは、 の下に表示されます。 ">




ここでの結果は、急速な方向です。 – 迅速な実行と既存のコンテナーの再利用を実行した後、全体のプロセスは、以前の 3 分以上の代わりに約 40 秒かかります。この特徴を と名付けました迅速な展開
そして、すべての新しいサーバーレスシグナルアップに対してデフォルトで有効になりました.
交換と懸念事項迅速展開します
展開のテンポを大幅に強化 (4-5X) しますが、いくつかの交換オフとその他のコンポーネントが付属しており、現在は調整されています: - 一方、私たちは現在、1 つのコード サーバー上で複数の環境をストリークし、それらが分離されたコードになるようにする立場にあります。 -賢明なことに、それらは同等のRAMとCPUを静かにします。 1 つのコンテナにあまりにも多くの環境を構築し、1 つの雰囲気があまりにも多くの回想を占有すると、同じコンテナ内の他の作業環境に悪影響を与える可能性があります。
Docker は Python を実行できます目的の Linux OS と Python インタープリターは、実行プロセス全体ですぐに利用できるため、任意の OS 上の Linux 用のパッケージ。 pex は、存在するパッケージの Linux 用の pex recordsdata を最も簡単に実行できます Docker コンテナー
. フォールバックとして
と競合する実行中 ディストリビューションを提供します。 このステップは、今後、別の共有プロバイダーに移動される可能性があります。
Docker の画像を構築する際には、深いカスタマイズが考えられます。多くのデフォルト python:*-slim の 1 つを置き換える
写真。 特徴的な同等性のために、ユーザーが標準以下の Docker の画像を楽しむことを指定するためのアプローチを実装する必要がありました。
GitHubワークフローとpex
おそろしくいいですねRep Dockerは基本的に循環系 ) スマートなデザインフォーマーで約10秒を解消。 このステップを完全に取り除くにはどうすればよいでしょうか?以前、GitHub の循環コードを Docker の画像にキット化し、以前の . 別の方法として、循環コードを pex ファイルとしてキット化し、これを循環リポジトリに調べて、GitHub ランナーに直接ストリークします。 これにより、Docker 循環図のダウンロードと起動にかかる時間が不要になり、静かなためすべての依存関係をキット化できます.1 つ私たちが行ったより小さな最適化は、1 つの GitHub ワークフロー ジョブを実行するためのものでした。 GitHubで開始されたすべてのジョブは、新しいランナーをプロビジョニングするのに約10秒かかります.
展開時間を 3 分以上から 40 秒に短縮することは、深刻なテンポアップであり、非常に特に、enjoy プロバイダーを試した後は、terminate の結果にうんざりしていました。 pex を使用することで、Docker 上で再現可能で一貫した雰囲気を実行することができました。私たちは、この pex と docker の組み合わせの他の可能性を探ることに激怒しています。 いつもあなたはこの刺激的な投稿を理解している必要があります, ここにもう1つあります Docker を使用したデプロイの問題について、pex クルーから Weblog が投稿されました。 Docker 画像ビルドをテンポアップするための中間ターゲットとして、演習 pex recordsdata について説明しています。 Dagster Delivery Source ベンチャー、確実に勝つ 有名な個人のGithubレポ.

私たちはあなたの解決策を聞いて何度も大騒ぎしているので、私たちに連絡してください! ご不明な点がございましたら、Dagster コミュニティ Slack (
でお問い合わせください。 参加はこちら
!) または を開始する) Githubディスカッション。 常にバグに突っ込んでください。Githubリマーク。 そして、私たちと一緒に仕事をすることに惹かれたら、私たちの !フォローする:
🌟 Githubで有名な私たち 🐦 Twitterでフォローします
- 📺
申し込むYouTubeチャンネル
𝚆𝚊𝚝𝚌𝚑 𝙽𝙾𝚆 📺
構成
% pex pandas -o pandas.pex % pex dagster -o dagster.pex % ) [Clang 14.0.0 (clang-1400.0.29.202)] ダーウィンフォーム 「サポート」、 情報。 「ライセンス」 for more InteractiveConsole パンダ > インポート ダグスター >>>
私たちはこれを行使しますコードを実行時にマージする 2 つの形式に分ける: a
deps.pex 全依存関係を含むファイルとa .16 デフォルト、12月 、01:24:57provide.pex 正しい個体コードを含むファイル甘やかされて育ったプラットフォームのビルド Linux を動かします python:*-slim 派生 規格外の写真 サーバーレス クラウドで。 pex インストゥルメントは、
パッケージ用のホイール
はすぐに入手できます. の使用法pex
pex レコードデータを保存するための S3 と組み合わせて、Docker の写真を作成して起動するオーバーヘッドを高速方向が回避するマシンを構築しました。 .私たちのマシンは次のように動作します: コードを GitHub にコミットすると、GitHub 循環は がっしり execute または rapid execute 以前のデプロイ以降に依存関係が変更されたかどうかを期待しています。 setup で指定された以下の依存関係のビデオ表示を保持します.py
および
Rapid Deploys
necessities.txt に実行します。 deps.pex
ファイルとコードを provide.pex ファイル。 どちらも Dagster クラウドにアップロードされます。 迅速な実行のために、最も簡単に実行して provide を追加します。 pex
ファイル.deps.pex
と provide.pex はこのコード サーバーにデータを記録し、それらを実行して隔離された環境でコードをストリークします。 ユーザー間でコンテナーを分割することはなく、コンテナー上のすべての環境は同等の個人に属します。 迅速な展開のための義務的なケースと最悪のケースのタイムラインは、 の下に表示されます。 ">




ここでの結果は、急速な方向です。 – 迅速な実行と既存のコンテナーの再利用を実行した後、全体のプロセスは、以前の 3 分以上の代わりに約 40 秒かかります。この特徴を と名付けました迅速な展開
そして、すべての新しいサーバーレスシグナルアップに対してデフォルトで有効になりました.
交換と懸念事項迅速展開します
展開のテンポを大幅に強化 (4-5X) しますが、いくつかの交換オフとその他のコンポーネントが付属しており、現在は調整されています: - 一方、私たちは現在、1 つのコード サーバー上で複数の環境をストリークし、それらが分離されたコードになるようにする立場にあります。 -賢明なことに、それらは同等のRAMとCPUを静かにします。 1 つのコンテナにあまりにも多くの環境を構築し、1 つの雰囲気があまりにも多くの回想を占有すると、同じコンテナ内の他の作業環境に悪影響を与える可能性があります。
Docker は Python を実行できます目的の Linux OS と Python インタープリターは、実行プロセス全体ですぐに利用できるため、任意の OS 上の Linux 用のパッケージ。 pex は、存在するパッケージの Linux 用の pex recordsdata を最も簡単に実行できます Docker コンテナー
. フォールバックとして
と競合する実行中 ディストリビューションを提供します。 このステップは、今後、別の共有プロバイダーに移動される可能性があります。
Docker の画像を構築する際には、深いカスタマイズが考えられます。多くのデフォルト python:*-slim の 1 つを置き換える
写真。 特徴的な同等性のために、ユーザーが標準以下の Docker の画像を楽しむことを指定するためのアプローチを実装する必要がありました。
GitHubワークフローとpex
おそろしくいいですねRep Dockerは基本的に循環系 ) スマートなデザインフォーマーで約10秒を解消。 このステップを完全に取り除くにはどうすればよいでしょうか?以前、GitHub の循環コードを Docker の画像にキット化し、以前の . 別の方法として、循環コードを pex ファイルとしてキット化し、これを循環リポジトリに調べて、GitHub ランナーに直接ストリークします。 これにより、Docker 循環図のダウンロードと起動にかかる時間が不要になり、静かなためすべての依存関係をキット化できます.1 つ私たちが行ったより小さな最適化は、1 つの GitHub ワークフロー ジョブを実行するためのものでした。 GitHubで開始されたすべてのジョブは、新しいランナーをプロビジョニングするのに約10秒かかります.
展開時間を 3 分以上から 40 秒に短縮することは、深刻なテンポアップであり、非常に特に、enjoy プロバイダーを試した後は、terminate の結果にうんざりしていました。 pex を使用することで、Docker 上で再現可能で一貫した雰囲気を実行することができました。私たちは、この pex と docker の組み合わせの他の可能性を探ることに激怒しています。 いつもあなたはこの刺激的な投稿を理解している必要があります, ここにもう1つあります Docker を使用したデプロイの問題について、pex クルーから Weblog が投稿されました。 Docker 画像ビルドをテンポアップするための中間ターゲットとして、演習 pex recordsdata について説明しています。 Dagster Delivery Source ベンチャー、確実に勝つ 有名な個人のGithubレポ.

私たちはあなたの解決策を聞いて何度も大騒ぎしているので、私たちに連絡してください! ご不明な点がございましたら、Dagster コミュニティ Slack (
でお問い合わせください。 参加はこちら
!) または を開始する) Githubディスカッション。 常にバグに突っ込んでください。Githubリマーク。 そして、私たちと一緒に仕事をすることに惹かれたら、私たちの !フォローする:
🌟 Githubで有名な私たち 🐦 Twitterでフォローします
- 📺
申し込むYouTubeチャンネル
𝚆𝚊𝚝𝚌𝚑 𝙽𝙾𝚆 📺