Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DTD_Python実行環境_データ分析を支えるVM_コンテナ_サーバーレス比較.pdf

 DTD_Python実行環境_データ分析を支えるVM_コンテナ_サーバーレス比較.pdf

Avatar for BrainPad

BrainPad

June 29, 2025
Tweet

More Decks by BrainPad

Other Decks in Technology

Transcript

  1. 3 ©BrainPad Inc. Strictly Confidential 自己紹介 氏名 所属 入社年 吉田

    裕史(よしだ ひろし) 株式会社ブレインパッド データエンジニアリングユニット プラットフォーム開発 2021年中途入社 趣味 甘いもの(アイスなど)、散歩(街中)、 恐竜(プシッタコサウルス) 、サブスク動画(Netflixなど)
  2. 4 ©BrainPad Inc. Strictly Confidential BI データ ストレージ 普段仕事でやっていること 下図のようなデータ基盤の開発・保守を行っています。

    本日は Python に関するところについてお話します。 オンプレ環境 クラウド環境(AWS/Azure/Google Cloud) 利用ユーザ データソース データウェアハウス データマート BA Python ETL 凡例 データの 移動 データの 参照 取込パイプラ イン 加工パイプライ ン 本日お話すると ころ
  3. 7 ©BrainPad Inc. Strictly Confidential Geminiに相談 PythonをAWSで動かしたいんだけど? AWS Lambda: イベントに応じてコードを実行するサーバーレスコ

    ンピューティングサービスです。Pythonもサポート しています。 Amazon EC2: Linux、Windows Serverなど様々なOSを選択できる 仮想サーバーサービスです。インスタンスタイプ (CPU、メモリ、ストレージ構成)を柔軟に選択で きます。 AWS Elastic Beanstalk: Pythonを含む様々な言語のWebアプリケーションを 簡単にデプロイ・管理できるサービスです。インフ ラの管理を抽象化します。 Amazon EKS (Elastic Kubernetes Service): Kubernetesを利用してコンテナ化されたアプリケー ションを実行・管理できるマネージドサービスです。 Amazon ECS (Elastic Container Service): Dockerコンテナを簡単に実行・管理できるフルマネ ージドコンテナオーケストレーションサービスです。 AWS App Runner: コンテナ化されたWebアプリケーションやAPIを簡 単にデプロイ・実行できるフルマネージドサービス です。 Amazon Athena: S3に保存されたデータをSQLで分析できるサーバー レスクエリサービスです。Pythonのライブラリ (例 えば PyAthena) を使ってクエリを実行したり、結果 を操作したりできます。 AWS Glue: ETL (抽出、変換、ロード) サービスで、Python (PySpark) を使ってデータのクリーニング、変換、 統合が可能です。データパイプラインの構築に役立 ちます。 Amazon EMR: HadoopやSparkなどのビッグデータ処理フレームワ ークを実行できるマネージドサービスです。 PySparkを使って大規模なデータ処理をPythonで行 えます。 AWS DataBrew: コーディング不要でデータの前処理や変換を行える サービスですが、カスタム変換にPythonのコードを 組み込むことも可能です。 Amazon SageMaker: 機械学習モデルの構築、トレーニング、デプロイを エンドツーエンドでサポートするサービスです。 Python SDKが充実しており、TensorFlowや PyTorchなどのフレームワークも快適に利用できま す。 ・・・
  4. 8 ©BrainPad Inc. Strictly Confidential Geminiに相談 PythonをAzureで動かしたいんだけど? Azure Functions: イベントに応じてコードを実行するサーバーレスコ

    ンピューティングサービスです。Pythonもサポート しています。 Azure Virtual Machines: Linux、Windows Serverなど様々なOSを選択できる 仮想サーバーサービスです。VMサイズ(CPU、メ モリ、ストレージ構成)を柔軟に選択できます。 Azure App Service: Pythonを含む様々な言語のWebアプリケーション、 API、バックエンドサービスなどをホストできるフ ルマネージドプラットフォームです。 Azure Kubernetes Service (AKS): Kubernetesを利用してコンテナ化されたアプリケー ションを実行・管理できるマネージドサービスです。 Azure Container Instances (ACI): サーバーレスなDockerコンテナの実行環境です。 Azure Container Apps: マイクロサービスやコンテナ化されたアプリケーシ ョンをサーバーレスで実行できるサービスです。 Azure Machine Learning: 機械学習モデルの構築、トレーニング、デプロイ、 管理までを包括的にサポートするサービスです。 Python SDKが充実しており、様々な機械学習フレ ームワーク を利用できます。AutoMLの機能も Python SDKから利用可能です。 Azure Databricks: Apache Sparkをベースとした高速なビッグデータ分 析サービスです。もちろんPySparkを利用して Pythonで大規模なデータ処理や分析が行えます。機 械学習のワークロードにも適しています。 Azure Synapse Analytics: エンタープライズ向けのデータウェアハウスとビッ グデータ分析サービスが統合されたものです。 Sparkプールを利用してPySparkでのデータ処理も 可能ですし、SQLを用いたデータ分析も行えます。 Azure Automation: クラウドまたはオンプレミスのリソースを自動化す るためのサービスです。Python Runbookを作成し て、様々な管理タスクを自動化できます。 Azure Logic Apps: ワークフロー自動化サービスで、様々なAzureサー ビスや外部サービスと連携した処理をGUIベースで 構築できます。カスタム処理をPythonのコードで記 述したAzure Functionsとして呼び出すことも可能で す。 ・・・
  5. 9 ©BrainPad Inc. Strictly Confidential Geminiに相談 PythonをGoogle Cloudで動かしたいんだけど? Google Cloud

    Functions: イベントに応じてコードを実行するサーバーレスコンピ ューティングサービスです。Pythonもサポートしていま す。 Compute Engine: Linux、Windows Serverなど様々なOSを選択できる仮想 マシンサービスです。マシンタイプ(CPU、メモリ構 成)やディスクサイズを柔軟に選択できます。 Google Cloud App Engine: スケーラブルなWebアプリケーションやモバイルバック エンドを構築・実行できるフルマネージドプラットフォ ームです。(スタンダード環境、フレキシブル環境があ り、フレキシブル環境ではより自由な構成が可能です) Google Kubernetes Engine (GKE): Kubernetesを利用してコンテナ化されたアプリケーショ ンを実行・管理できるマネージドサービスです。 Cloud Run: フルマネージドなサーバーレスコンテナ実行環境です。 HTTPリクエストやイベントに応じてコンテナを自動的に スケーリングします。 Cloud Tasks: 分散タスクキューサービスです。Pythonクライアントラ イブラリを使って、バックグラウンド処理や遅延処理を 非同期的に実行できます。 Dataproc: Apache HadoopおよびSparkのマネージドサービスです。 PySparkを利用してPythonでビッグデータ処理を行うこ とができます。クラスタのプロビジョニングやスケーリ ングが容易です。 BigQuery: サーバーレスでスケーラブルなデータウェアハウスです。 SQLに加えて、Pythonのクライアントライブラリを使っ てクエリの実行や結果の操作が可能です。大規模なデー タ分析に威力を発揮します。 Vertex AI: 機械学習ワークフロー全体をカバーする統合プラットフ ォームです。モデルの構築、トレーニング、評価、デプ ロイ、モニタリングをPython SDKを通じて行うことがで きます。AutoML機能もPython SDKから利用可能です。 Cloud Composer: Apache Airflowをベースとしたフルマネージドなワークフ ローオーケストレーションサービスです。PythonでDAG (有向非巡回グラフ) を記述して、複雑なデータパイプラ インやジョブの実行を自動化できます。 Dataflow: Apache Beamをベースとしたフルマネージドなデータ処 理サービスです。Python SDKを使ってバッチ処理やスト リーミング処理のパイプラインを構築できます。 ・・・
  6. 10 ©BrainPad Inc. Strictly Confidential Geminiに相談 pythonをその他サードベンダー等のサービスで動かしたいん だけど? Salesforce: Salesforce

    Functionsというサーバーレスプラットフォー ムを利用してPythonのバックエンド処理を構築し、その 結果をSalesforceのデータとして利用することも考えられ ます。 Tableau: TabPy (Tableau Python Server): TableauとPythonを連携 させるためのサーバー。Tableauの計算フィールド内で Pythonスクリプトを実行し、高度な分析や予測を行うこ とができます。 Snowflake: Snowpark for Python: Snowflake内でPythonコードを実行 できる機能です。Snowflakeに格納されたデータに対して、 Pandas DataFrame APIに似たインターフェースでデータ 処理や分析を行うことができます。機械学習ライブラリ やUDFも利用可能。
  7. 12 ©BrainPad Inc. Strictly Confidential 仮想マシン サーバレス Functions as a

    Service サーバレス アプリ実行環境 フルマネージド コンテナ実行環境 サーバレス コンテナ実行環境 本日話したいこと Pythonを動かす環境として、どのような選択肢があり、どのように使い分けするかについてお話します Amazon EC2 Amazon EKS AWS Elastic Beanstalk AWS Lambda コード/Lib ミドルウェ ア ランタイム コンテナ OS 仮想環境 ハードウェ ア コード/Lib ミドルウェ ア ランタイム コンテナ OS 仮想環境 ハードウェ ア コード/Lib ミドルウェ ア ランタイム コンテナ OS 仮想環境 ハードウェ ア コード/Lib ミドルウェ ア ランタイム コンテナ OS 仮想環境 ハードウェ ア コード/Lib ミドルウェ ア ランタイム コンテナ OS 仮想環境 ハードウェ ア 責 任 範 囲 責 任 範 囲 責 任 範 囲 責任 範囲 Azure Virtual Machines Compute_Engine Azure App Service (Web Apps) Azure App Service (Functions) Google Cloud App Engine Google Cloud Functions Amazon ECS Azure Kubernetes Service Azure Container Instances Google Kubernetes Engine Cloud Run AWS App Runner Azure Container Apps 責任 範囲 A W S A z u r e G o o g l e 責 任 範 囲 VM コンテナ サーバレス
  8. 13 ©BrainPad Inc. Strictly Confidential 話す内容/話さない内容 Pythonの環境(インフラ観点)について 〇 話すこと ×

    話さないこと Pythonの実装(プログラミング)について VM/コンテナ/サーバレスについて その他実行環境について AWS/Azure/Google Cloudについて オンプレ/その他クラウド環境について 大まかな観点やポイントについて 具体的なコマンド例や設定値について 初学者向け 上級者向け
  9. 17 ©BrainPad Inc. Strictly Confidential 1. Pythonの特徴について Pythonの主な特徴とそれによるメリットと課題を以下のように整理しました 特徴 メリット

    課題 インタプリタ言語でコンパイル不要 コーディング直後にプログラムをすぐ実行で きる コンパイラ言語に比べて実行速度が遅くなる 実行環境へCPUやメモリの負荷がかかる 各クラウドで実行環境が多数用意されている ユースケースに合わせて最適な環境を選択で きる 実行環境の選択肢が多く、選択に迷う エコシステムが活発でライブラリが充実 定期的な機能改善のバージョンアップ 特にデータサイエンスや機械学習の機能が充 実 バージョン間で互換性の問題が起こる (ライブラリインストール時/IDE開発時/実行時) 本日お話する目 的
  10. 19 ©BrainPad Inc. Strictly Confidential 2. Pythonを動かすために必要な構成要素 Pythonを動かすために必要な構成要素と準備の流れを以下のように整理しました OS(Windows/Linux/Mac) Python実行環境(インタプリンタ)

    ライブラリ ミドルウェア プログラムコード OSの準備 Python実行環境(インタプリンタ)のインストー ル ミドルウェア のインストー ル Pythonプログラムの実行 環境準備の流れ Pythonを動かすために必要な構成要素 機械語 ライブラリの インストール プログラム コードの実装
  11. 20 ©BrainPad Inc. Strictly Confidential 2. Pythonを動かすために必要な構成要素 Pythonを動かすために必要な構成要素と事前の確認ポイントを以下のように整理しました 構成要素 事前の確認ポイント

    OS Python実行環境(インタプリンタ) ライブラリ ミドルウェア ✔ OS(Windows/Linux/Mac)と スペック(CPU/メモリ/ディスク容量) ✔ 開発環境と本番環境でのOSの違い ✔ インストール方法(インターネット/オフライン/コンテナイメージ/その他) ✔ 管理方法(pip、conda、Poetryの利用、仮想環境の利用など) ✔ インストール方法(インターネット/オフライン/コンテナイメージ/その他) ✔ 起動方法 と アクセス方法 ✔ サードパーティ製品の利用 プログラムコード ✔ OSの種類、Pythonやライブラリのバージョンを意識したコード ✔ 統合開発環境(IDE) と 開発者ツール の利用
  12. 21 ©BrainPad Inc. Strictly Confidential 2. Pythonを動かすために必要な構成要素 Pythonを動かすために必要な構成要素とVM/コンテナ/サーバレスでの開発者の作業範囲を以下のように整理 しました ※あくまで全体的な傾向になりますので、実際の利用時はサービスごとに確認が必要なものになります

    構成要素 VM OS Python実行環境(インタプリンタ) ライブラリ ミドルウェア 開発者が選択 ※VM作成時に管理画面等で選択 開発者がインストール コンテナ サーバレス 開発者が選択 ※Dockerfileでベースイメージを指定 開発者が指定 ※requirment.txt等で指定したものを Dockerfile内でインストール設定 開発者が指定(限定的) ※コンテナデプロイの場合はコンテナに近い プログラムコード 開発者が実装 開発者が指定 ※Dockerfile内でインストール設定 開発者が選択(限定的) ※サービス作成時に管理画面等で選択 ※コンテナデプロイの場合はコンテナに近 い 開発者が指定 ※requirment.txtで指定 ※コンテナデプロイの場合はコンテナに近 い
  13. 23 ©BrainPad Inc. Strictly Confidential 3. Python実行環境ごとの構築範囲とデプロイ手順の違い VM環境でPythonを実行する場合 開発 活用

    データ基盤 ローカル開発環境 開発者 Python実行環境 ライブラリ プログラム コード 本番実行用VM Python実行環境 エンドユーザ ー 1 開発/テスト 2 持ち込み ※複数選択肢あり 1 VM作成 3 プログラムコ ード配置 3 ライブラリ インストール 2 Python インストール データウェアハウ ス/データマート 4 リバース プロキシ設定 Lib Lib 凡例 構築 デプロイ 参照
  14. 24 ©BrainPad Inc. Strictly Confidential 3. Python実行環境ごとの構築範囲とデプロイ手順の違い 補足 VM環境でPythonを実行する場合に可能なデプロイ方法 A

    W S A z u r e G o o g l e 手動デプロイ 手動でプログラムファイルを配置する ・メリット:初期構築時の工数が不要 ・デメリット:デプロイ作業のたびに手間が かかる バージョン管理システム ローカルからGitにプログラムをアップロー ド 本番サーバーでGitからプログラムをダウン ロード ・メリット:コードのバージョン管理が容易 ・デメリット:デプロイの自動化には作業が 必要 構成管理ツール ローカルから構成管理ツールにアップロード 構成管理ツールが各サーバーにプログラムを 配布 ・メリット:デプロイをコード化して管理 ・デメリット:ツールの学習コストが必要
  15. 25 ©BrainPad Inc. Strictly Confidential 3. Python実行環境ごとの構築範囲とデプロイ手順の違い コンテナ環境でPythonを実行する場合 開発 活用

    データ基盤 データウェアハウ ス/データマート ローカル開発環境 開発者 Python実行環境 ライブラリ プログラム コード 本番コンテナ実行用環境 コンテナ実行環境 1 開発 2 コンテナ 実行環境作成 5 コンテナ イメージ配置 コンテナ実行環 境 コンテナ イメージ 2 コンテナ ビルド 3 テスト コンテナレジ ストリ 1 コンテナ レジストリ作成 エンドユーザ ー 4 持ち込み ※複数選択肢あり Lib 凡例 構築 デプロイ 参照
  16. 26 ©BrainPad Inc. Strictly Confidential 3. Python実行環境ごとの構築範囲とデプロイ手順の違い 補足 コンテナ環境でPythonを実行する場合に可能なデプロイ方法 A

    W S A z u r e G o o g l e 手動デプロイ DockerイメージをAmazon ECRにプッシュ コンテナ実行環境で上記イメージを指定してデプ ロイ CI/CD コードをGitHubやCodeCommitにプッシュ CodePipelineで変更を検知して、自動でビルド/デプロイ DockerイメージをACRにプッシュ コンテナ実行環境で上記イメージを指定してデプ ロイ コードをGitHubやAzure Reposにプッシュ DevOpsで変更を検知して、自動でビルド/デプロイ DockerイメージをGCRにプッシュ コンテナ実行環境で上記イメージを指定してデプ ロイ コードをGitHubやCloud Source Repositoriesにプッシュ Cloud Buildで変更を検知して、自動的にビルド/デプロイ
  17. 27 ©BrainPad Inc. Strictly Confidential 3. Python実行環境ごとの構築範囲とデプロイ手順の違い サーバレス環境でPythonを実行する場合 開発 活用

    データ基盤 ローカル開発環境 開発者 Python実行環境 ライブラリ プログラム コード 本番サーバレス実行用環境 サーバレス実行環境 1 開発 4 プログラムコ ード配置 5 ライブラリ インストール データウェアハウ ス/データマート 1 サーバレス 実行環境作成 エンドユーザ ー 2 テスト 開発者ツー ル 3 持ち込み ※複数選択肢あり Lib Lib 凡例 構築 デプロイ 参照
  18. 28 ©BrainPad Inc. Strictly Confidential 3. Python実行環境ごとの構築範囲とデプロイ手順の違い サーバレス環境でPython実行する場合のデプロイ方法 A W

    S A z u r e G o o g l e 〇 AWS Elastic Beanstalk AWS Lambda Azure App Service (Web Apps) Azure App Service (Functions) Google Cloud App Engine Google Cloud Functions 管理画面 CLI/SDK Git、CI/CD 開発者ツール AWS SAM Azure Functions Core Tools Functions Framework 〇 〇 〇 〇 〇 〇 〇 〇 〇 〇 〇 〇 〇 〇 〇 〇 〇
  19. 30 ©BrainPad Inc. Strictly Confidential 4. Python実行環境ごとの特徴 VM環境でPythonを実行する場合 デメリット •

    インフラ管理の負担 • コスト効率で劣る、スケーリングの手間 特徴 • 自由に環境構築し、リソースを自由に調整 • オンプレからの移行が容易 注意点 • 責任範囲(セキュリティ、バックアップ、 ログ監視) • 適切な VM サイズの選択 メリット • 高い柔軟性 • 既存オンプレ環境の仕組みをそのまま活か せる
  20. 31 ©BrainPad Inc. Strictly Confidential 4. Python実行環境ごとの特徴 コンテナ環境でPythonを実行する場合 デメリット •

    コンテナおよびオーケストレーションへの 理解が必要 特徴 • 軽量性と高速な起動 • インフラ設定をコード管理 • オーケストレーション 注意点 • 初期学習コスト メリット • 効率的なリソース利用 • 持ち運びやすさ • スケーラビリティ
  21. 32 ©BrainPad Inc. Strictly Confidential 4. Python実行環境ごとの特徴 サーバレス環境でPython実行する場合 デメリット •

    構成やリソースの制限 • コールドスタート 特徴 • インフラストラクチャの抽象化 • 従量課金、イベント駆動型 • 自動スケーリング 注意点 • サーバレスによる制約、環境への依存 • サーバレス特性を考慮した設計 メリット • 開発効率の向上と運用負荷の低減 • コスト効率 • 高いスケーラビリティ
  22. 33 ©BrainPad Inc. Strictly Confidential 4. Python実行環境ごとの観点ごとの比較 機能観点の比較 観点 VM

    コンテナ サーバレス 補足 Python実行するOSを自由に選択する 〇 △ × コンテナは一部のサービスで制限がありそうなため△(サービスによっては〇) Pythonのバージョンを自由に選択する 〇 △ × コンテナは一部のサービスで制限がありそうなため△(サービスによっては〇) ミドルウェアを利用する 〇 △ × コンテナはDockerfileで指定可能な範囲で可能なため△ コンテナオーケストレーションを利用する △ 〇 × VMでのKubernetes利用は追加の実装がそれなりに必要なため△ Dockerfileで管理する △ 〇 〇 VMでのDocker利用は追加の実装がそれなりに必要なため△ Git管理とCI/CDを利用する △ 〇 〇 VMでのCI/CDは追加の実装がそれなりに必要なため△ 負荷分散を利用する △ 〇 〇 VMは追加の実装がそれなりに必要なため△ オートスケールを利用する △ 〇 〇 VMは追加の実装がそれなりに必要なため△ ステートフルな処理への対応 〇 △ × 長時間の処理への対応 〇 〇 △ サーバレスは一部サービスで制限があるため△ クラウドのイベントをトリガーに起動する △ △ 〇 VM、コンテナは追加実装が必要なため△
  23. 34 ©BrainPad Inc. Strictly Confidential 4. Python実行環境ごとの観点ごとの比較 品質特性観点での比較 観点 VM

    コンテナ サーバレス 備考 性能効率がよいこと △ 〇 〇 VMはランニングコストとのトレードオフなため△ 可用性があること △ 〇 〇 VMは追加の実装がそれなりに必要なため△ 拡張性があること △ 〇 〇 VMは追加の実装がそれなりに必要なため△ セキュリティが担保されること △ 〇 〇 VMは開発者側の責任範囲が広いため△ オンプレサーバからの移行がしやすい 〇 △ × 別環境への持ち運びがしやすい △ 〇 × VMはコンテナに比べると持ち運びやすさに関して劣るため△
  24. 35 ©BrainPad Inc. Strictly Confidential 4. Python実行環境ごとの観点ごとの比較 コスト観点での比較 観点 VM

    コンテナ サーバレス 備考 開発コストが抑えられること × △ 〇 VMは仮想マシンの構築が必要なため× コンテナはコンテナ環境の構築が必要なため△ 運用コストが抑えられること × △ 〇 VMは仮想マシンの構築が必要なため× コンテナはコンテナ環境の構築が必要なため△ 学習コストが抑えられること 〇 × △ コンテナはDockerおよびオーケストレーションに関するスキルが必要なため× サーバレスは利用するサーバレスサービスに関するスキルが必要なため△ ランニングコストが抑えられること ? ? ? 起動時間、アクセス数、処理の複雑さ等により可変
  25. 38 ©BrainPad Inc. Strictly Confidential 仮想マシン サーバレス Functions as a

    Service サーバレス アプリ実行環境 フルマネージド コンテナ実行環境 サーバレス コンテナ実行環境 5. Python実行環境ごとの使い分け Pythonの実行環境ごとの使い分けについて以下のとおり整理しました Amazon EC2 Amazon EKS AWS Elastic Beanstalk AWS Lambda Azure Virtual Machines Compute_Engine Azure App Service (Web Apps) Azure App Service (Functions) Google Cloud App Engine Google Cloud Functions Amazon ECS Azure Kubernetes Service Azure Container Instances Google Kubernetes Engine Cloud Run AWS App Runner Azure Container Apps A W S A z u r e G o o g l e 開 発 都 合 VM コンテナ サーバレス オンプレからの移植 サーバーの知見 機 能 要 求 特別なOSスペック利用 特別なミドルウェア利用 コンテナで管理したい 複雑な設定 迅速な開発 インフラ管理/コンテナ管理したくない 性能などを求められるWeb画面、API、バックエンド処 理 サーバレス非対応のライブラリやミドルウェアで動かし たい 軽量なWeb画面 軽量なバックエンド 処理 軽量なAPI
  26. 39 ©BrainPad Inc. Strictly Confidential 5. Python実行環境ごとの使い分け Pythonの実行環境ごとの使い分けのポイント ✔ サービスごとに用意されているプラン

    と プランごとに使える機能使えない機能の比較 ✔ サービスごとの課金体系と利用方法(起動時間やアクセス数)ごとのコストの比較 ✔ サービスごとの性能(レスポンス時間、バッチ処理時間)の比較