はじめに

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

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

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

この 4 分間の短時間の動画は、AWS Summit DC 2022 において、AWS の Principal Technical Account Manager である 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 コンテナサービスを選択する準備ができました。

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

コンテナ
使用すべき場合
最適化の対象
関連するコンテナサービスまたはツール
セルフマネージド型の AWS 仮想マシンや AWS マネージドコンピューティングでコンテナを実行する場合に使用します。
AWS コンピューティングでコンテナを実行するのに最適化されています。
最大数千のコンテナをデプロイして管理する必要がある場合に使用します。
AWS でコンテナ化されたアプリケーションをデプロイ、管理、スケーリングするのに最適化されています。
ユーザーやそのチームで、コンテナやインフラストラクチャに関する経験があまり多くない場合に使用されます。
使いやすさを考慮して最適化されています。
コンテナレジストリを提供するだけでなく、既存のアプリケーションをコンテナ化および移行するツールが必要な場合に使用します。
コンテナ運用のサポート向けに最適化されています。
コンテナベースのアプリケーションがどこで実行されていても、一貫したエクスペリエンスを実現するために、使い慣れたコントロールプレーンを実行する必要がある場合に使用します。
コンテナベースのアプリケーションを実行する場所についての柔軟性を実現するために最適化されています。

使用

これで、AWS の各コンテナサービス (およびサポートする AWS のツールとサービス) と、組織とユースケースに最も適している可能性のあるサービスを明確に理解することができました。

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

  • Amazon EC2
  • Amazon Aurora

    Amazon EC2 の開始方法

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

    ガイドを詳しく見る »

    Amazon Aurora

    VM Import/Export ユーザーガイド

    既存の仮想化環境から Amazon EC2 に仮想マシン (VM) イメージをインポートし、再びエクスポートして戻す方法をご覧ください。

    ガイドを詳しく見る »

    Amazon Aurora

    Amazon EC2 Auto Scaling with EC2 Spot Instances

    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 in Multi-Account and Multi-Region Architectures
     

    AWS アカウントと AWS リージョンにまたがる Amazon ECR アーキテクチャ、および仮想のお客様のユースケースに関連するアーキテクチャに関する重要な考慮事項を詳しくご覧ください。

    ブログ記事を読む »

    Amazon DynamoDB

    Getting started with Amazon ECR Public
     

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

    ガイドを詳しく見る »

    Amazon DynamoDB

    Create a pipeline with an Amazon ECR source and ECS-to-CodeDeploy deployment
     

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

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

  • Amazon ECS
  • AWS Database Migration Service

    Amazon ECS の開始方法

    このガイドでは、Amazon ECS にアクセスするために使用できるツールの概要と、コンテナを実行するためのステップバイステップの基本的な手順について説明します。

    ガイドを詳しく見る »

    AWS Database Migration Service

    Amazon ECS のチュートリアル

    Amazon ECS を利用する場合に、クラスターや VPC の作成などの一般的なタスクを実行する方法に関する十数個のチュートリアル。

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

    AWS Database Migration Service

    What's new and what's next with 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 Workshop

    このワークショップは、AWS Fargate、Amazon ECS、さらには Docker コンテナのワークフローに精通していない可能性のあるユーザーを教育することを目的としています。

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

    AWS Database Migration Service

    Deploy Docker Containers on Amazon ECS

    ロードバランサーの背後にある Amazon ECS クラスターで Docker 対応のサンプルアプリケーションを実行して、サンプルアプリケーションをテストし、リソースを削除して料金が発生しないようにする方法をご覧ください。

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

  • Amazon EKS
  • AWS Database Migration Service

    Amazon EKS の使用開始
     

    Amazon Elastic Kubernetes Service (Amazon EKS) の詳細をご覧ください。これは、独自の Kubernetes コントロールプレーンやノードをインストール、運用、メンテナンスすることなく、AWS で Kubernetes を実行するために使用できるマネージドサービスです。

    ガイドを詳しく見る »

    AWS Database Migration Service

    Amazon Elastic Kubernetes Service (EKS) のデプロイ
     

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

    ガイドを詳しく見る »

    AWS Database Migration Service

    Amazon EKS Quick Start Reference Deployment

    クイックスタートリファレンスデプロイガイドを使用して、Amazon Elastic Kubernetes Service (Amazon EKS) クラスターをデプロイするためのステップバイステップの手順を説明します。


    ガイドを詳しく見る »

    AWS Database Migration Service

    Deploy a Kubernetes Application
     

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

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

    AWS Database Migration Service

    Amazon EKS workshop
     

    Amazon Elastic Kubernetes Service について学ぶための実践的な演習。


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

  • Amazon Lightsail
  • AWS Database Migration Service

    Creating, pushing, and deploying container images
    with 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

    Getting started with AWS App Runner


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

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

    AWS Database Migration Service

    AWS App Runner: From code to a scalable, secure web application in minutes

    記述言語にかかわらず、これまでにコンテナやインフラストラクチャをデプロイおよび管理したことがないチームでも、ウェブアプリケーションや API をクラウドに簡単にデプロイできるようにするために、AWS App Runner がどのように設計されているかをご覧ください。

    ブログを読む »

    AWS Database Migration Service

    Deploy a web app using 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 EC2 インスタンスのサーバーやクラスターを管理することなく、コンテナを実行するために Amazon ECS で使用できるテクノロジーである AWS Fargate の基本について説明します。

    ガイドを詳しく見る »

    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

    Getting started with 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 ソリューション

コンテナの一般的なユースケースに関する、精査されたソリューションとアーキテクチャガイダンスを詳しくご覧ください。

ソリューションを探す »

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