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 コンテナ サーバレス
W S A z u r e G o o g l e 手動デプロイ 手動でプログラムファイルを配置する ・メリット:初期構築時の工数が不要 ・デメリット:デプロイ作業のたびに手間が かかる バージョン管理システム ローカルからGitにプログラムをアップロー ド 本番サーバーでGitからプログラムをダウン ロード ・メリット:コードのバージョン管理が容易 ・デメリット:デプロイの自動化には作業が 必要 構成管理ツール ローカルから構成管理ツールにアップロード 構成管理ツールが各サーバーにプログラムを 配布 ・メリット:デプロイをコード化して管理 ・デメリット:ツールの学習コストが必要
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で変更を検知して、自動的にビルド/デプロイ
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 〇 〇 〇 〇 〇 〇 〇 〇 〇 〇 〇 〇 〇 〇 〇 〇 〇
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