はじめに

コンテナは現代のアプリケーション開発の重要な要素です。コンピューティングリソースを整理し、アプリケーションデプロイのコンテンツを管理するための標準的な方法となっています。

コンテナは、個別に再現可能なコンピューティング環境を提供します。また、パッケージ化と依存関係管理を簡素化する方法も提供します。非常に大規模なマルチクラスター環境のオーケストレーションからウェブアプリケーションのオーケストレーションまで、あるいはノートパソコンで作業のテストや概念実証を行うことまで、クラウドにデプロイするソフトウェアを構築し始めるのに最適な方法です。

この意思決定ガイドは、モダンアプリケーション開発に適した AWS コンテナサービスを開始して選択する際に役立ちます。

この 4 分間の抜粋は、AWS Summit DC 2022 で行われた AWS のプリンシパルテクニカルアカウントマネージャーである Vikram Venkataraman による 57 分間のプレゼンテーションの録音からの抜粋したものです。利用できる AWS コンテナサービスの概要を説明します。

読む時間

20 分

目的

どの AWS コンテナサービスが組織に最適かを判断するのに役立ちます。

レベル

初心者

最終更新日

2023 年 4 月 26 日

理解

コンテナは複数の環境に一貫した方法でデプロイできるため、アプリケーションコード、設定、依存関係を 1 つのアーティファクトにパッケージ化するための事実上の標準となっています。

コンテナは、どのモダンアプリケーション開発戦略でも重要な要素です。コンテナ関連の AWS サービスの背景を説明するために、右側の画像では使用できる AWS コンテナオプションをレイヤー別に示しています (こちらの動画で詳述)。

容量 

容量とは、コンテナをデプロイする基盤となるコンピューティング、中央処理装置 (CPU)、およびメモリ要件を指します。容量は、コンテナが稼働するインフラストラクチャです。AWS のコンテナの容量には 2 つの選択肢があります。

  • Amazon Elastic Compute Cloud (Amazon EC2) を使用すると、管理する仮想マシンでコンテナを実行できます。
  • AWS Fargate は、基盤となるインフラストラクチャを管理せずにコンテナを実行できるコンテナ用のサーバーレスコンピューティングエンジンです。Fargate を使用すると、基盤となる EC2 インスタンスを気にせずにコンテナを起動およびスケールできます。

オーケストレーション

組織が 1 つまたは少数ではなく、数千のコンテナを運用していることも珍しくありません。このような複雑な環境を管理することは困難になります。オーケストレーションサービスは、これらのアプリケーションのデプロイと管理を容易にします。AWS は以下の 3 つのオーケストレーションサービスを提供しています。  

  • Amazon Elastic Container Service (Amazon ECS) はフルマネージド型のコンテナオーケストレーションサービスであり、コンテナ化されたアプリケーションをシンプルかつ費用対効果の高い方法でデプロイおよび管理したい組織に最適です。
  • Amazon Elastic Kubernetes Service (Amazon EKS) は、AWS で Kubernetes クラスターを実行および管理できるようにするフルマネージド型の Kubernetes サービスです。
  • Red Hat OpenShift Service on AWS (ROSA) は、AWS で OpenShift クラスターを実行および管理できるようにするフルマネージド型の OpenShift サービスです。すでにオンプレミスで OpenShift を実行しているお客様には良いオプションです。

プロビジョニング

プロビジョニングは、サービスのオーケストレーションレイヤーへのインターフェースを提供します。各オーケストレーターにはそれぞれ独自の複雑さがあります。プロビジョニングサービスはこの複雑さを隠し、サービスをより簡単に利用できるようにします。このカテゴリの AWS のサービスは以下のとおりです。

  • AWS App Runner は、ソースコードからコンテナイメージを自動的に構築し、そのコンテナをフルマネージドインフラストラクチャにデプロイし、需要に応じてスケールするフルマネージドサービスです。
  • AWS Elastic Beanstalk は、ウェブアプリケーションのデプロイ、管理、スケーリングを容易にするフルマネージドサービスです。Elastic Beanstalk はコンテナもサポートしており、コンテナ化されたアプリケーションをデプロイおよびスケーリングするためのフルマネージドプラットフォームも提供しています。
  • Amazon Lightsail は、仮想プライベートサーバーを起動して管理するためのシンプルで費用対効果の高い方法ですが、コンテナもサポートしているため、Lightsail インスタンスを使用してコンテナ化されたアプリケーションを作成およびデプロイできます。

検討事項

アプリケーションの要件と運用上の好みに合ったコンテナサービスを選択することが重要です。以下は、コンテナサービス、およびサポートツールやサービスを選択する際に検討すべき重要な基準の一部です。

  • 組織はクラウドを選択して、運用上の負担を AWS に移すマネージドサービスで標準化することで、運用コストを削減することができます。高い抽象度のおかげで、デベロッパーと運営者は差別化されていない作業ではなく、独自の付加価値活動に集中できます。

    AWS でコンテナを使用して構築すると、抽象度の高いサービスを使用して、インフラストラクチャの維持にかかる運用上のオーバーヘッドを AWS に移します。
  • ワークロードパターンを理解することで、アーキテクチャをより簡単に選択できます。これには、ウェブアプリケーション、API ベースのマイクロサービス、イベント駆動型アプリケーション、ストリーミングとメッセージング、データパイプライン、IT オートメーションなどが含まれます。一部のワークロードは、あるコンピューティング環境では別の種類のコンピューティング環境よりもパフォーマンスが向上したり、費用対効果が高くなったりします。

  • 多くのお客様は、アプリケーションを別の環境で実行でき、簡単に移行または移動できるようにすることを望んでいます。選択の余地を残したり、オンプレミスとクラウドの両方でアプリケーションを実行したりできることが重要です。

    ソフトウェアアーキテクチャのコンピテンシーを構築し、コンピューティングサービス間で異なるビジネスロジックをより簡単に移植できるパッケージを構築することをお勧めします。

    一部のテクノロジーを使用して構築されたアプリケーションは、一部のコンピューティングサービスでは他のサービスよりも効率的に実行できる場合があります。

  • どのコンテナサービスを使用するかを決める際には、組織のスキルが大きな要因となります。採用するアプローチには、DevOps チームとサイト信頼性エンジニア (SRE) チームにある程度の投資が必要になります。アプリケーションをデプロイするための自動パイプラインを構築することは、ほとんどのモダンアプリケーション開発で一般的です。

    いくつかの選択肢は管理量を増やします。例えば、Kubernetes クラスターを管理するために強力な SRE チームに投資しているため、Kubernetes 実装を実行および管理するためのスキルとリソースを持ち合わせている組織もあります。このようなチームは頻繁にクラスターのアップグレードを行います (例えば、Kubernetes は年に 3 回のメジャーリリースを行い、古いバージョンは廃止されます)。

    組織の規模は重要な要素です。小規模なスタートアップでは複数の役割を担う人で構成される少人数の IT スタッフがいるの一方で、大企業では本番環境の何百ものワークロードを一度にサポートする可能性があるためです。 

  • さまざまな AWS コンテナサービスが、デプロイの複雑さという点で固有のニーズを満たします。各サービスをそれぞれの役割に合わせて最適化する方法は次のとおりです。

    • AWS AppRunner は最もシンプルな方法で、基盤となるインフラストラクチャを管理またはカスタマイズすることなく、アプリケーションをパブリックインターネットにデプロイできます。
    • Amazon ECS は、規模や機能を犠牲にすることなく、ネットワークとセキュリティ設定をもう少し制御する必要がある場合に適しています。
    • Amazon EKS では、Kubernetes テクノロジーが提供するアプリケーションのデプロイとオーケストレーションを柔軟に制御できます。

選択

コンテナオプションを評価する基準がわかったので、組織の要件に適した AWS コンテナサービスを選択する準備ができました。

次の表は、どのサービスがどの状況に最適化されているかをまとめたものです。この表を参考に、組織やユースケースに最適なコンテナを判断してください。

コンテナ
使用するタイミングは?
どのような用途に最適化されていますか?
関連するコンテナサービスまたはツール
閉じる

容量オプション

容量とは、コンテナをデプロイする基盤となるコンピューティング、CPU、およびメモリ要件を指します。容量は、コンテナが稼働するインフラストラクチャです。

セルフマネージド型の AWS 仮想マシンや AWS マネージドコンピューティングでコンテナを実行する場合に使用します。
AWS コンピューティングでコンテナを実行するのに最適化されています。
閉じる

AWS Fargate

AWS Fargate は Amazon ECS で使用できるテクノロジーで、Amazon EC2 インスタンスのサーバーやクラスターを管理しなくてもコンテナを実行できます。Fargate を使用すると、コンテナを実行するために仮想マシンのクラスターをプロビジョニング、設定、スケールする必要がありません。

閉じる

Amazon EC2

Amazon EC2 は、Amazon のデータセンターのサーバーを使用して、サイズを変更可能なコンピューティング容量を提供するウェブサービスです。ユーザーはこれを使用してソフトウェアシステムを構築およびホストします。

閉じる

コンテナオーケストレーション

コンテナオーケストレーションサービスは、コンテナをいつ、どこで実行するかを管理します。

最大数千のコンテナをデプロイして管理する必要がある場合に使用します。
AWS でコンテナ化されたアプリケーションをデプロイ、管理、スケーリングするのに最適化されています。
閉じる

Amazon ECS

Amazon ECS は、コンテナ化されたアプリケーションをデプロイ、管理、スケーリングするのに役立つ、フルマネージドコンテナオーケストレーションサービスです。

閉じる

Amazon Elastic Kubernetes Service

Amazon EKS は、AWS クラウドまたはオンプレミスで Kubernetes アプリケーションを開始、実行、スケールするのに役立ちます。

閉じる

Red Hat OpenShift Service on AWS (ROSA)

Red Hat OpenShift Service on AWS を使用すると、AWS で Red Hat OpenShift クラスターを簡単に作成および運用できます。OpenShift Container Platform で既にオンプレミスでコンテナ化されているアプリケーションの場合、ROSA は使い慣れた API サーフェスを提供し、デプロイツールチェーンを同じに保つため、アプリケーションスタック全体を気にかけることなく、データモデルのリファクタリングに集中できます。

閉じる

プロビジョニング

サービスのプロビジョニングカテゴリは、サービスのオーケストレーションレイヤーへのインターフェースを提供します。各オーケストレーターにはそれぞれ独自の複雑さがあります。プロビジョニングサービスはこの複雑さを隠し、お客様がサービスをより簡単に利用できるようにします。

ユーザーや自身のチームがコンテナやインフラストラクチャを使用した経験があまりない場合に使用します。
使いやすさを考慮して最適化されています。
閉じる

AWS App Runner

AWS App Runner を使用すると、フルマネージドサービスでコンテナ化されたアプリケーションを構築して実行できます。インフラストラクチャの知識は最小限で済みます。

閉じる

Amazon Lightsail

Lightsail は、使いやすい仮想プライベートサーバー (VPS) インスタンス、コンテナ、ストレージ、データベースなどを費用効果の高い月額料金で提供します。

閉じる

AWS Elastic Beanstalk

Elastic Beanstalk を使用すると、アプリケーションを実行しているインフラストラクチャについて学習することなく、AWS クラウドでアプリケーションのデプロイと管理をすばやく行うことができます。Elastic Beanstalk は、選択肢や制御の幅を縮めることなく、管理の複雑さを軽減します。

閉じる

ツール

コンテナレジストリを提供するだけでなく、既存のアプリケーションをコンテナ化および移行するためのツール。

コンテナレジストリを提供するだけでなく、既存のアプリケーションをコンテナ化および移行するツールが必要な場合に使用します。
コンテナ運用のサポートに最適化されています。
閉じる

Amazon Elastic Container Registry

Amazon ECR は、ハイパフォーマンスホスティングを提供するフルマネージドコンテナレジストリであるため、アプリケーションイメージとアーティファクトをどこにでも確実にデプロイすることができます。

閉じる

オンプレミス

使い慣れたコントロールプレーンを実行できるため、コンテナベースのアプリケーションがどこで実行されていても、一貫したエクスペリエンスを実現できます。

使い慣れたコントロールプレーンを実行する必要がある場合に使用すると、コンテナベースのアプリケーションがどこで実行されていても一貫したエクスペリエンスを実現できます。
コンテナベースのアプリケーションを実行する場所に柔軟性を持たせるように最適化されています。
閉じる

Amazon Elastic Container Service (ECS) Anywhere

Amazon ECS Anywhere は、インフラストラクチャ上でコンテナワークロードを実行および管理できる Amazon ECS の機能です。

閉じる

Amazon EKS Anywhere

Amazon EKS Anywhere を使用すると、独自のインフラストラクチャで Kubernetes クラスターを作成して操作できます。

閉じる

Amazon EKS Distro

Amazon EKS では、AWS が構築および維持している Kubernetes ディストリビューションである Amazon EKS Distro を使用しています。Amazon EKS Distro を使用すると、高い信頼性を備えた安全なクラスターを簡単に作成できます。

使用

これで、各 AWS Container サービス (およびそれをサポートする AWS ツールとサービス) が何をするのか、そしてどれが自分の組織に適しているのかを明確に理解できたはずです。

利用できる各 AWS コンテナサービスの使用方法や詳細を調べるために、各サービスがどのように機能するかを詳しく見る方法をご用意しました。次のセクションには、使い始めるための詳細なドキュメント、実践的なチュートリアル、およびリソースへのリンクがあります。

  • Amazon EC2
  • Amazon Aurora

    Amazon EC2 の開始方法

    Linux インスタンスと Windows インスタンスのガイドを含む Amazon EC2 技術文書一式にアクセスできます。

    ガイドを詳しく見る »

    Amazon Aurora

    VM Import/Export ユーザーガイド

    既存の仮想化環境から Amazon EC2 に仮想マシン (VM) イメージをインポートし、再びエクスポートする方法について説明します。

    ガイドを詳しく見る »

    Amazon Aurora

    EC2 スポットインスタンスを使用した Amazon EC2 Auto Scaling

    Amazon EC2 Auto Scaling を使用してステートレスでフォールトトレラントなワークロードを作成する方法と、Amazon EC2 スポットインスタンスをリクエストする起動テンプレートについて説明します。

    チュートリアルを開始する »

    Amazon Aurora

    Amazon EC2 でウェブアプリケーションをデプロイする

    AWS CDK を使用した Amazon EC2 インスタンスの作成、Amazon EC2 インスタンス上でのウェブアプリケーションのデプロイを説明します。

    ガイドを詳しく見る »

  • Amazon ECR
  • Amazon DynamoDB

    Amazon Elastic Container Registry (ECR) とは何ですか?

     
    ECR の開始方法と使い方のガイド。
     
     
    Amazon DynamoDB

    マルチアカウントおよびマルチリージョンアーキテクチャの Amazon ECR
     

    AWS アカウントと AWS リージョンにまたがる Amazon ECR アーキテクチャ、および仮想的な顧客のユースケースに関連するアーキテクチャに関する主な検討事項について見ていきます。

    ブログ記事を読む »

    Amazon DynamoDB

    Amazon ECR Public の開始方法
     

    Amazon ECR パブリックリポジトリの使用を開始するには、最初のパブリックリポジトリを作成し、Amazon ECR コンソールでパブリックレジストリ設定を行います。

    ガイドを詳しく見る »

    Amazon DynamoDB

    Amazon ECR ソースと ECS から CodeDeploy へのデプロイを使用してパイプラインを作成する
     

    Docker イメージをサポートするブルー/グリーンデプロイを使用してコンテナアプリケーションをデプロイするパイプラインを AWS CodePipeline で設定します。

    チュートリアルを開始する »

  • Amazon ECS
  • AWS Database Migration Service

    Amazon ECS の開始方法

    このガイドでは、Amazon ECS にアクセスするために利用できるツールの概要と、コンテナを実行するための基礎的な手順を段階的に説明します。

    ガイドを詳しく見る »

    AWS Database Migration Service

    Amazon ECS のチュートリアル

    Amazon ECS を使用するときによく使うタスク (クラスターや VPC の作成など) を実行する方法に関するチュートリアルが 12 以上あります。

    チュートリアルを開始する »

    AWS Database Migration Service

    Amazon ECS の新機能と今後の予定について

    Amazon ECS Anywhere の発売以降の新機能、AWS Fargate の新機能、Amazon ECS の今後の素晴らしい機能強化についてご紹介します。

    この動画で詳細をご覧ください »

    AWS Database Migration Service

    Amazon Elastic Container Service (ECS) デプロイ

    このガイドでは、AWS での Amazon ECS デプロイオプションの概要と、それを使用して簡単なコンテナ化されたアプリケーションを管理する方法を示します。


    ガイドを詳しく見る »

    AWS Database Migration Service

    Amazon ECS ワークショップ

    このワークショップは、AWS Fargate、Amazon ECS、場合によっては Docker コンテナワークフローに精通していない人を対象としています。

    ワークショップを詳しく見る »

    AWS Database Migration Service

    Amazon ECS に Docker コンテナをデプロイする

    ロードバランサーの背後にある Amazon ECS クラスターで Docker 対応のサンプルアプリケーションを実行し、サンプルアプリケーションをテストし、リソースを削除して料金を回避する方法を学びます。

    チュートリアルを使用する »

  • Amazon EKS
  • AWS Database Migration Service

    Amazon EKS の開始方法
     

    AWS で Kubernetes を実行するために使用できるマネージド型のサービスである Amazon Elastic Kubernetes Service (Amazon EKS) の詳細をご覧ください。Amazon EKS では、お客様独自の Kubernetes コントロールプレーンやノードをインストール、運用、保守管理する必要はありません。

    ガイドを詳しく見る »

    AWS Database Migration Service

    Amazon Elastic Kubernetes Service (EKS) デプロイ
     

    AWS での Amazon EKS のデプロイオプションを詳しく見て、それを使って一般的なコンテナ化されたアプリケーションを管理する方法を学びましょう。

    ガイドを詳しく見る »

    AWS Database Migration Service

    Amazon EKS クイックスタートリファレンスデプロイ

    クイックスタートリファレンスデプロイガイドを使用して、Amazon Elastic Kubernetes Service (Amazon EKS) クラスターをデプロイする手順を段階的に説明しています。


    ガイドを詳しく見る »

    AWS Database Migration Service

    Kubernetes アプリケーションをデプロイする
     

    このチュートリアルでは、コンテナ化されたアプリケーションを、Amazon Elastic Container Service for Kubernetes (Amazon EKS) で管理される Kubernetes クラスターにデプロイする方法について学習します。

    チュートリアルを使用する »

    AWS Database Migration Service

    Amazon EKS ワークショップ
     

    Amazon Elastic Kubernetes サービスについて学ぶための実践的な演習


    ワークショップを始める »

  • Amazon Lightsail
  • AWS Database Migration Service

    Amazon Lightsail を使用して
    コンテナイメージを作成、プッシュ、デプロイする

    このチュートリアルでは、Dockerfile を使用してローカルマシンにコンテナイメージを作成する方法を示します。イメージが作成されたら、Lightsail コンテナサービスにプッシュしてデプロイできます。

    チュートリアルを開始する »

    AWS Database Migration Service

    Amazon Lightsail リソースセンター


    Lightsail のチュートリアル、動画、コアコンセプトドキュメントへのリンクをご覧ください。



    リソースセンターにアクセス »

    AWS Database Migration Service

    Amazon Lightsail を使用して Linux 仮想マシンを起動する

    このチュートリアルでは、Amazon Lightsail で Amazon Linux インスタンスを作成します。インスタンスが稼働を開始したら、ブラウザベースの SSH ターミナルを使用して、Lightsail コンソール内の SSH 経由でインスタンスに接続します。

    チュートリアルを開始する »

  • AWS App Runner
  • AWS Database Migration Service

    AWS App Runner の開始方法


    このチュートリアルでは、アプリケーションを App Runner サービスにデプロイするためのソースコードとデプロイ、サービスビルド、サービスランタイムの設定について説明します。また、コードバージョンをデプロイする方法、設定を変更する方法、およびログを表示する方法についても説明します。

    チュートリアルを使用する »

    AWS Database Migration Service

    AWS App Runner: 数分でコードからスケーラブルで安全なウェブアプリケーションへ

    AWS App Runner が、コンテナやインフラストラクチャのデプロイや管理の経験がないチームでも、記述されている言語に関係なく、ウェブアプリや API をクラウドに簡単にデプロイできるようにどのように設計されているかをご覧ください。

    ブログを読む »

    AWS Database Migration Service

    AWS App Runner を使用してウェブアプリケーションをデプロイする


    以下のステップバイステップの手順に従って、AWS App Runner を使用してコンテナ化されたウェブアプリケーションをデプロイします。ソースコードからでも、コンテナイメージからでも始められます。App Runner がウェブアプリケーションを自動的にビルドおよびデプロイし、暗号化しつつトラフィックのロードバランスを実行します。

    ウェブアプリケーションをデプロイする »

  • AWS Elastic Beanstalk
  • AWS Database Migration Service

    Elastic Beanstalk の使用開始


    このガイドでは、Elastic Beanstalk アプリケーションの作成、探求、更新、削除について説明します。

    ガイドを詳しく見る »

    AWS Database Migration Service

    AWS Elastic Beanstalk でのデプロイオプション


    このガイドでは、AWS Elastic Beanstalk を使用して、インフラストラクチャの管理という運用上の負担をかけずにアプリケーションをデプロイ、管理、スケールできる方法について説明します。

    ガイドを詳しく見る »

    AWS Database Migration Service

    中級の AWS Electric Beanstalk チュートリアルとサンプル

    チュートリアルは中級ユーザーを対象としており、AWS へのサインアップなどの基本的な手順の説明は含まれていません。

    チュートリアルを開始する »

  • AWS Fargate
  • Amazon Aurora

    AWS Fargate の開始方法

    このガイドでは、Amazon ECS で使用できるテクノロジーである AWS Fargate の基本について説明します。これにより、Amazon EC2 インスタンスのサーバーやクラスターを管理しなくてもコンテナを実行できます。

    ガイドを詳しく見る »

    Amazon Aurora

    AWS Fargate で Linux コンテナを使用してコンソールを使い始める

    Amazon ECS が AWS Fargate をサポートしているリージョンのタスクに Fargate 起動タイプを使用して、AWS Fargate で Amazon ECS を使い始めましょう。

    ガイドを詳しく見る »

    Amazon Aurora

    AWS CLI を使用して Fargate Linux タスクでクラスターを作成する

    AWS CLI を使用して、Amazon ECS でクラスターをセットアップし、タスク定義を登録し、Linux タスクを実行し、その他の一般的なシナリオを実行します。 

    ガイドを詳しく見る »

  • ROSA
  • AWS Database Migration Service

    Red Hat OpenShift Service on AWS の開始方法

    このガイドは、Red Hat OpenShift Service on AWS を使い始めるのに役立ちます。

    ガイドを詳しく見る »

    AWS Database Migration Service

    ROSA を使用する理由

    この動画では、標準の Kubernetes ではなく Red Hat OpenShift を使用する場合について取り上げ、ROSA on AWS について詳しく説明します。

    動画を見る »

詳しく見る

アーキテクチャ図

AWS のコンテナのリファレンスアーキテクチャ図をご覧ください。


アーキテクチャ図を詳しく見る »

 

ホワイトペーパー

ホワイトペーパーを読んで、開始したり、ベストプラクティスを学んだり、データベースを移行したりするのに役立ててください。

ホワイトペーパーを読む »

 

AWS ソリューション

コンテナの一般的なユースケースについて、検証済みのソリューションとアーキテクチャガイダンスをご覧ください。

ソリューションを探す »

 

その他のリソース

このページはお役に立ちましたか?