コンテナは、リソースが分離されたプロセス内で、アプリケーションおよびその依存関係を実行できる、オペレーティングシステムの仮想化の 1 つの方法です。コンテナを使用すると、アプリケーションのコード、設定、依存関係を、使いやすい構成要素に簡単にパッケージ化できるため、環境の一貫性、運用効率性、開発者の生産性、バージョンコントロールが実現できます。コンテナを使用すると、デプロイ環境に関係なく、迅速かつ確実に、また一貫してアプリケーションをデプロイできます。また、コンテナはリソースを細かくコントロールできるため、インフラストラクチャの効率性が向上します。AWS Cloud でコンテナを実行すると、伸縮自在性、可用性、セキュリティ、低コストでのスケーリングなど、AWS Cloud のメリットを活用することにより、堅牢でスケーラブルなアプリケーションおよびサービスを構築することができます。また、使用したリソース分だけの支払いで済みます。

monolith_2-VM-vs-Containers

Amazon Elastic Container Service

開始方法

EkoSystem Day: AWS コンテナサービスを使用して Modern Apps を構築する

今すぐ申し込む
Site-Merch_PAC_Fargate

AWS でのパートナーコンテナソリューション – オンラインセミナー

詳細
Containers_Benefit_EnvironmentConsistency

コンテナによって携帯性が得られ、開発、テスト、本稼働のライフサイクルを通じてアプリケーションを移動するための、組織的な手間と、技術的な労力を軽減することができます。コンテナでは、必要なすべてのアプリケーションファイルとソフトウェアの依存関係をカプセル化し、ソフトウェア、オペレーティングシステム、またはハードウェア構成に関係なく、あらゆるコンピューティングリソースにデプロイできる構成要素として機能します (つまり、Ubuntu ノート PC 上でも、Red Hat Enterprise Linux 本稼働サーバー上でも同じコンテナを実行できるということです)。コンテナとしてローカルにパッケージ化したものは何であれ、テスト中であるか、本稼働中であるかに関係なく、同じようにデプロイされ、実行されます。これは、環境に関係なくアプリケーションを確実に、さらに一貫してデプロイできるので、ユーザーとその組織に役立ちます。これにより、ユーザーはサーバーごとに手動で構成する必要がなくなり、新しい機能をより迅速にリリースすることができます。

Containers_Benefit_OperationalEfficiency

コンテナによって同一のインスタンスで複数のアプリケーションが容易に実行できるようになり、コンピューティングリソースを最大限に活用することができます。コンテナでは、インスタンス上のコンテナで使用するメモリ量、ディスクスペースおよび CPU の使用量を正確に指定できます。それぞれのコンテナは、アプリケーション、およびその依存関係を実行しているオペレーティングシステム上の単なる 1 つのプロセスであるため、すぐに起動させることができます。このように必要なリソースが低減されることにより、コンテナにカプセル化されているアプリケーションまたはタスクを素早く作成し終了することができるため、アプリケーションのスケールアップ、またはスケールダウンを迅速に行うことができます。アプリケーション全体と、アプリケーションのすべての依存関係がイメージに含まれるため、ブルー/グリーンのデプロイメントパターンを使用して、アプリケーションの新しいバージョンをロールアウトできます (Amazon Elastic Container Service を使用するなど)。また、コンテナではプロセスの分離を実現できます。プロセスの分離により、各アプリケーションとその依存関係を 1 つの独立したコンテナに含め、同一のインスタンス上でそれらを実行することができます。各コンテナは互いに分離されているため、共有されている依存関係や非互換性はありません (例えば、同一の Amazon EC2 インスタンス上で異なるバージョンのライブラリを使用する 2 つのコンテナを実行することができます)。

また、その他のイメージのベースとして機能する、コンテナのイメージを作成することもできます。運用チームは、オペレーティングシステム、設定、および必要なさまざまなユーティリティで構成されるベースイメージを作成できます。その後、開発チームがベースイメージ上にアプリケーションを構築できます。これにより、複雑なサーバーの構成を回避することができます。

Containers_Benefit_DeveloperProductivity

コンテナを使用すると、サービス間の依存関係および競合が除去され、開発者の生産性が向上します。各アプリケーションコンポーネントは、異なるマイクロサービスを実行する異なるコンテナに分割できます。また、コンテナは相互に分離されているため、サービスごとにライブラリや依存関係を同期させる必要がありません。ライブラリの競合が発生しないため、開発者は各サービスを個別にアップグレードできます。

Containers_Benefit_VersionControl

コンテナを使用すると、アプリケーションコードのバージョンおよび依存関係を追跡できます。Docker コンテナイメージでは、コンテナのバージョンを容易に管理および追跡し、バージョン間の違いを検査し、前のバージョンにロールバックできるマニフェストファイル (Dockerfile) をご利用いただけます。