最初の一歩を踏み出す
はじめに
コンテナは現代のアプリケーション開発の重要な要素です。コンピューティングリソースを整理し、アプリケーションデプロイのコンテンツを管理するための標準的な方法となっています。
コンテナは、個別に再現可能なコンピューティング環境を提供します。また、パッケージ化と依存関係管理を簡素化する方法も提供します。非常に大規模なマルチクラスター環境のオーケストレーションからウェブアプリケーションのオーケストレーションまで、あるいはノートパソコンで作業のテストや概念実証を行うことまで、クラウドにデプロイするソフトウェアを構築し始めるのに最適な方法です。
この意思決定ガイドは、モダンアプリケーション開発に適した 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 AppRunner は最もシンプルな方法で、基盤となるインフラストラクチャを管理またはカスタマイズすることなく、アプリケーションをパブリックインターネットにデプロイできます。
選択
コンテナオプションを評価する基準がわかったので、組織の要件に適した AWS コンテナサービスを選択する準備ができました。
次の表は、どのサービスがどの状況向けに最適化されているかを示しています。この表を参考にして、組織やユースケースに最適なコンテナサービスを判断してください。
コンテナオーケストレーション
コンテナオーケストレーションサービスは、コンテナをいつ、どこで実行するかを管理します。
Red Hat OpenShift Service on AWS (ROSA)
Red Hat OpenShift Service on AWS を利用すると、AWS での Red Hat OpenShift クラスターの作成と運用が簡単になります。OpenShift Container Platform 上のオンプレミスで既にコンテナ化されているアプリケーションの場合、ROSA は使い慣れた API サーフェスを提供し、デプロイツールチェーンをそのまま維持するため、アプリケーションスタック全体ではなく、データモデルのリファクタリングに注力できます。
Amazon Elastic Kubernetes Service
Amazon EKS は、AWS クラウドまたはオンプレミスで Kubernetes アプリケーションを開始、実行、スケールするのに役立ちます。
Amazon ECS は、コンテナ化されたアプリケーションをデプロイ、管理、スケーリングするのに役立つ、フルマネージドコンテナオーケストレーションサービスです。
プロビジョニング
サービスのプロビジョニングカテゴリは、サービスのオーケストレーションレイヤーに対するインターフェイスを提供します。各オーケストレーターには独自の複雑さが伴います。プロビジョニングサービスはこの複雑さを覆い隠し、お客様がサービスを利用しやすくします。
Elastic Beanstalk を利用すると、アプリケーションを実行しているインフラストラクチャについて学習することなく、AWS クラウドでアプリケーションを迅速にデプロイおよび管理できます。Elastic Beanstalk は、選択やコントロールを制限することなく、管理の複雑さを軽減します。
AWS App Runner を使用すると、フルマネージドサービスでコンテナ化されたアプリケーションを構築して実行できます。インフラストラクチャの知識は最小限で済みます。
Lightsail は、使いやすい仮想プライベートサーバー (VPS) インスタンス、コンテナ、ストレージ、データベースなどを費用対効果の高い月額料金で提供します。
Amazon Elastic Container Registry
Amazon ECR は、ハイパフォーマンスホスティングを提供するフルマネージドコンテナレジストリであるため、アプリケーションイメージとアーティファクトをどこにでも確実にデプロイすることができます。
Amazon Elastic Container Service (ECS) Anywhere
Amazon ECS Anywhere は、インフラストラクチャ上でコンテナワークロードを実行および管理できる Amazon ECS の機能です。
Amazon EKS Anywhere を使用すると、独自のインフラストラクチャで Kubernetes クラスターを作成して操作できます。
Amazon EKS では、AWS が構築および維持している Kubernetes ディストリビューションである Amazon EKS Distro を使用しています。Amazon EKS Distro を使用すると、高い信頼性を備えた安全なクラスターを簡単に作成できます。
使用
これで、AWS の各コンテナサービス (およびサポートする AWS のツールとサービス) と、組織とユースケースに最も適している可能性のあるサービスを明確に理解することができました。
利用可能な各 AWS コンテナサービスの利用方法や詳細を知るために、各サービスがどのように機能するかを詳しく学習するためのパスウェイをご用意しました。次のセクションには、使用を開始するための詳細なドキュメント、実践チュートリアル、およびリソースへのリンクがあります。
-
Amazon EC2
-
Amazon ECR
-
Amazon ECS
-
Amazon EKS
-
Amazon Lightsail
-
AWS App Runner
-
AWS Elastic Beanstalk
-
AWS Fargate
-
ROSA
-
Amazon EC2
-
Amazon EC2 Auto Scaling with EC2 Spot Instances
Amazon EC2 Auto Scaling を起動テンプレートとともに利用して、ステートレスでフォールトトレラントなワークロードを作成し、Amazon EC2 スポットインスタンスをリクエストする方法をご覧ください。
Amazon EC2 でウェブアプリケーションをデプロイする
AWS CDK を使用した Amazon EC2 インスタンスの作成、Amazon EC2 インスタンス上でのウェブアプリケーションのデプロイを説明します。
-
Amazon ECR
-
Create a pipeline with an Amazon ECR source and ECS-to-CodeDeploy deployment
Docker イメージをサポートするブルー/グリーンデプロイを使用してコンテナアプリケーションをデプロイするパイプラインを AWS CodePipeline で設定します。
-
Amazon ECS
-
Amazon ECS の開始方法
このガイドでは、Amazon ECS にアクセスするために使用できるツールの概要と、コンテナを実行するためのステップバイステップの基本的な手順について説明します。
What's new and what's next with Amazon ECS
Amazon ECS Anywhere のリリース以降の新着情報、AWS Fargate の新機能、予定されている Amazon ECS のエキサイティングな機能強化についてご覧ください。
Amazon Elastic Container Service (ECS) のデプロイ
このガイドでは、AWS での Amazon ECS デプロイオプションの概要と、それを使用してシンプルなコンテナ化されたアプリケーションを管理する方法を示します。
Amazon ECS Workshop
このワークショップは、AWS Fargate、Amazon ECS、さらには Docker コンテナのワークフローに精通していない可能性のあるユーザーを教育することを目的としています。
Deploy Docker Containers on Amazon ECS
ロードバランサーの背後にある Amazon ECS クラスターで Docker 対応のサンプルアプリケーションを実行して、サンプルアプリケーションをテストし、リソースを削除して料金が発生しないようにする方法をご覧ください。
-
Amazon EKS
-
Amazon EKS の使用開始
Amazon Elastic Kubernetes Service (Amazon EKS) の詳細をご覧ください。これは、独自の Kubernetes コントロールプレーンやノードをインストール、運用、メンテナンスすることなく、AWS で Kubernetes を実行するために使用できるマネージドサービスです。
Amazon Elastic Kubernetes Service (EKS) のデプロイ
AWS での Amazon EKS デプロイオプションを詳しく確認し、それを使用して一般的なコンテナ化されたアプリケーションを管理する方法を説明します。
Amazon EKS Quick Start Reference Deployment
クイックスタートリファレンスデプロイガイドを使用して、Amazon Elastic Kubernetes Service (Amazon EKS) クラスターをデプロイするためのステップバイステップの手順を説明します。
Deploy a Kubernetes Application
このチュートリアルでは、コンテナ化されたアプリケーションを、Amazon Elastic Container Service for Kubernetes (Amazon EKS) によって管理される Kubernetes クラスターにデプロイする方法を示します。Amazon EKS workshop
Amazon Elastic Kubernetes Service について学ぶための実践的な演習。
ワークショップを始める »
-
Amazon Lightsail
-
Creating, pushing, and deploying container images
with Amazon Lightsail
このチュートリアルでは、Dockerfile を使用してローカルマシンにコンテナイメージを作成する方法を示します。イメージが作成されたら、Lightsail コンテナサービスにプッシュしてデプロイできます。
Amazon Lightsail リソースセンター
Lightsail のチュートリアル、動画、およびコアコンセプトドキュメントへのリンクが記載されています。
Amazon Lightsail を使用して Linux 仮想マシンを起動する
このチュートリアルでは、Amazon Lightsail で Amazon Linux インスタンスを作成します。インスタンスが稼働を開始したら、ブラウザベースの SSH ターミナルを使用して、Lightsail コンソール内の SSH 経由でインスタンスに接続します。
-
AWS App Runner
-
Getting started with AWS App Runner
このチュートリアルでは、アプリケーションを App Runner サービスにデプロイするためのソースコードとデプロイ、サービスビルド、サービスランタイムの設定について説明します。また、コードバージョンをデプロイし、設定を変更し、ログを表示する方法も示します。
チュートリアルを使用する »
AWS App Runner: From code to a scalable, secure web application in minutes
記述言語にかかわらず、これまでにコンテナやインフラストラクチャをデプロイおよび管理したことがないチームでも、ウェブアプリケーションや API をクラウドに簡単にデプロイできるようにするために、AWS App Runner がどのように設計されているかをご覧ください。
Deploy a web app using AWS App Runner
これらのステップバイステップの手順に従って、AWS App Runner を利用してコンテナ化されたウェブアプリケーションをデプロイしましょう。ソースコードからでも、コンテナイメージからでも開始できます。App Runner がウェブアプリケーションを自動的に構築およびデプロイし、暗号化を使用してトラフィックを負荷分散します。 -
AWS Elastic Beanstalk
-
AWS Elastic Beanstalk でのデプロイオプション
このガイドでは、AWS Elastic Beanstalk を利用して、インフラストラクチャの管理に関する運用上の負担なしで、アプリケーションをデプロイ、管理、スケールできることを説明します。
中級レベルの AWS Electric Beanstalk チュートリアルとサンプル
これらのチュートリアルは中級レベルのユーザーを対象としているため、AWS へのサインアップなどの基本的なステップの説明が記載されていないことがあります。
-
AWS Fargate
-
AWS Fargate の開始方法
このガイドでは、Amazon EC2 インスタンスのサーバーやクラスターを管理することなく、コンテナを実行するために Amazon ECS で使用できるテクノロジーである AWS Fargate の基本について説明します。
AWS Fargate の Linux コンテナによるコンソールの使用開始
Amazon ECS が AWS Fargate をサポートするリージョンで、タスクに Fargate 起動タイプを使用することによって、AWS Fargate で Amazon ECS の利用を開始しましょう。
AWS CLI を使用した Fargate Linux タスクを含むクラスターの作成
AWS CLI を使用して、Amazon ECS でクラスターの設定やタスク定義の登録を行ったり、Linux タスクや他の一般的なシナリオを実行したりしましょう。 -
ROSA
-
Getting started with Red Hat OpenShift Service on AWS
このガイドは、Red Hat OpenShift Service on AWS の利用を開始するのに役立ちます。
ROSA を使用すべき理由
この動画では、標準の Kubernetes ではなく Red Hat OpenShift を使用する可能性のある場合を確認するとともに、ROSA on AWS について詳しく説明します。
詳しく見る
AWS のコンテナのリファレンスアーキテクチャ図をご覧ください。
使用を開始し、ベストプラクティスを学ぶのに役立つホワイトペーパーをお読みください。
コンテナの一般的なユースケースに関する、精査されたソリューションとアーキテクチャガイダンスを詳しくご覧ください。