Azure Container Apps 紹介 概要編 では、Azure Container Appsの概要についてご紹介いたしました。
今回は他のAzureコンテナサービスの特徴と、Azure Container Appsとの違いについてご紹介いたします。
Azureコンテナサービスとは
コンテナは、アプリケーションとその設定やライブラリなどの依存関係をパッケージ化し、OSに依存することなく実行環境を構築できる技術です。プロセスを分離してデプロイできるため、可搬性、軽量性、柔軟性に優れています。
MicrosoftがAzureのクラウドサービスとして提供する中でも、クラウドネイティブにアプリケーションをコンテナ化してデプロイするPaaSサービスはいくつも存在します。
Azure Container AppsもAzureでコンテナを扱えるPaaSサービスの一つであり、インフラストラクチャを極力意識することなくコンテナをデプロイすることができます。
各サービスによって機能や特徴は違っており、同じPaaSサービスでもユースケースによりどのサービスを使うかには判断が必要です。
Azureでコンテナを扱える主なPaaSサービスは以下の通りです。
- Azure Container Apps
- Azure App Service
- Azure Container Instances
- Azure Kubernetes Service
- Azure Functions
Azure Container Appsとどのような違いがあるのか、他のAzureコンテナサービスの特徴と比較情報をあげながら、確認したいと思います。
Azureコンテナサービス比較
Azure App Service
Webサイト、Web APIなどWebアプリケーションをフルマネージドに構築できるサービスです。
継続的にWebアプリケーションを構築したい場合に適しています。
- Windows/Linuxベース、カスタムDockerイメージでのデプロイ
- ランタイムは.NET、.NET Core、Java、Ruby、Node.js、PHP、Pythonが使用可能
- VNet統合による仮想ネットワークへのデプロイ
- カスタムドメイン、TLS/SSL証明書、静的IPアクセス制限、認証と認可によるセキュリティ
- Azure DevOps、GitHub、BitBucket、Docker Hub、Azure Container Registryと連携してのCI/CD
- ZIPデプロイ、Gitデプロイ
- メトリクスベースのオートスケール機能(2024年3月時点プレビュー)
Azure Container Instances
Azure上でHyper-V分離コンテナーの単一Podを提供するサービスです。
単一で稼動するシンプルなバッチ処理などのアプリケーションに適しています。
- Windows/Linuxベースでのデプロイが可能
- VNet統合による仮想ネットワークへのデプロイ
- GitHub Actionsを使用したデプロイ
- オートスケール機能、負荷分散、TLS/SSL証明書機能はなし
- FQDNによるパブリックアクセス(静的IPの固定化はApplicarion Gatewayとの連携が必要)
Azure Kubernetes Service
Azure上でフルマネージドのKuberenetesクラスター環境を構築できるサービスです。
Kuberenetes APIに直接アクセスし、クラスターの構成や運用まで管理したい場合に適しています。
- Windows/Linuxベースでの構築が可能
- kubenet/Azure CNIネットワークでの構築
- OSセキュリティ更新プログラム、Kuberenetesリリースの自動アップグレード機能
- 豊富なCI/CD連携
- GPUインスタンスの構築
- クラスターレベル、アプリレベルでのオートスケール機能
- 定期的なクラスターのKuberenetesアップグレードなど運用工数が高い
Azure Functions
サーバーレスにサービスとして関数プログラミングモデルを実行するソリューション(FaaS)を構築できるサービスです。
幅広い言語によるイベント駆動型アプリケーションに適しています。
- C#、Java、JavaScript、PowerShell、Pythonのネイティブサポート
- カスタムハンドラーによるRust や Go などより多くの言語のサポート
- ツールベース(Visual Studion Code、Visual Studio、CoreTools)、App Service マネージド、外部パイプライン(Azure Pipelines、GitHub Actions)によるデプロイ
- HTTP、イベントベースでのオートスケール機能
Azure Container Apps
Kuberenetes APIに直接アクセスすることなく、Kubernetes基盤のアプリやマイクロサービスを構築できるサービスです。
バックグラウンドで稼動しながら柔軟なスケーリングやコンテナ間の連携を行うイベント駆動型アプリケーションや、大規模なマイクロサービスアプリケーションに適しています。
- VNet統合による仮想ネットワークへのデプロイ
- Ingressアドオンによるアプリレイヤーでのパスベースの負荷分散
- ツールベース(Visual Studion Code、Visual Studio)、外部パイプライン(Azure Pipeline、GitHub Actions)によるデプロイ
- アドオンによるサービスへの接続(Kafka、MariaDB、Milvus、PostgreSQL、Qdrant、Redis、Weaviate)
- カスタムドメイン、TLS/SSL証明書、認証と認可によるセキュリティ
- Azure MonitorやAzure Log Analyticsを利用しての監視
- KEDAによるオートスケール機能
最後に
以上がAzureでコンテナを扱える主なPaaSサービスと比較したそれぞれのユースケースです。
まだ紹介しきれていない機能は多くありますが、それぞれ利点や役割が異なっており、効果的に使用するためには要件や目的から吟味する必要があります。
その中でもAzure Container Appsは、Azure Container InstanceやAzure Fanctionsよりも柔軟に、Azure Kubernetes Serviceほど運用を労せずにイベント駆動型アプリケーションやマイクロサービスを実行できるサービスであると言えます。
オートスケール機能も柔軟で、ゼロスケーリング時には課金を止めることができたりと、運用方法次第ではコストをかなり抑えることも可能です。
効果的にコンテナサービスを活用するソリューションとして、痒いところに手が届く選択肢の一つになり得るのではないでしょうか。
杉瀬 駿太郎(日本ビジネスシステムズ株式会社)
クラウドソリューション本部所属。 Azure製品全般のインフラ構築~運用までを中心とした案件に携わっています。 好きなサカナクションのアルバムはGO TO THE FUTUREです
担当記事一覧