スケーラブルで高速なコンテナ管理サービス「Amazon ECS」の主な機能と使い方

Amazon ECS(Amazon Elastic Container Service)は、Amazon EC2インスタンスを用いてクラスター構成を行うことで、Dockerコンテナ(ホストOS上で設定やファイルを独立して作成できる箱のようなもの)をラッピングして実行、停止を簡単に行ってくれる、拡張性とパフォーマンスに優れた管理サービスです。今回はAmazon ECSのメリットや主要機能、料金体系について紹介します。

Amazon ECSとは何か

Amazon ECS は、AWSのAmazon EC2インスタンスを用いて仮想サーバー構築によく用いられるDockerコンテナを簡単に実行、停止、管理できる非常にスケーラブルで高速な管理サービスです。Dockerコンテナに対応しており、Amazon EC2インスタンスのマネージドクラスターでアプリケーションを簡単に実行することができます。

Amazon ECSを使用すると、自社でクラスターインフラストラクチャのインストール、運用、スケールを行う必要性から解放されます。簡単なAPI呼び出しを使用することで、コンテナ対応アプリケーションの起動と終了、クラスターの完了状態のクエリ、多くの使い慣れた機能(セキュリティグループ、Elastic Load Balancing(ELB)、Elastic Block Store (EBS)ボリューム、IAMロールなど)へのアクセスを実行することができます。

Amazon ECSの主な機能とメリット

Amazon ECSの主な機能とメリットについて解説します。

主な機能

Amazon ECSはAWSのほかのサービスと連携してさまざまな機能を実現します。

単一または複数のコンテナを「Task」で管理する機能

Amazon ECSは単一または複数のコンテナをTaskと呼ばれる形で管理しています。コンテナ・インスタンスのリソースに余裕がある場合には、同一のTaskを複数動作させることが可能です。

「Scheduler」によるTaskの自動配備/自動復旧機能(Cluster)

ClusterはSchedulerによってTaskの自動配備/自動復旧を行う機能を持っています。Amazon ECSのSchedulerはService定義に従いあらかじめ設定された数のTaskをコンテナ・インスタンスに自動配備します。
Taskが異常な状態(ELBのヘルスチェックが失敗したなど)になった場合は自動で削除し、再作成してくれます。

「Elastic Load Balancing」と連携したTaskのロードバランシング機能(AWS機能連携)

Amazon ECSは、Elastic Load Balancingと連携してTaskのロードバランシングを行うことが可能です。

「Amazon CloudWatch」でコンテナ・インスタンスの増減管理機能(AWS機能連携)

「Auto Scaling」でコンテナ・インスタンスの管理が実行されており、Amazon CloudWatchのアラートに連携してインスタンスの増減が可能です。

さまざまなセキュリティ管理機能

Amazon ECSのクラスター構成を行う場合は、自動でAmazon VPCを構築し、ネットワークACL(アクセスコントロールリスト)やセキュリティグループで管理を行うことにより、AWSのセキュリティ管理がそのまま適用できます。

「AWS CloudTrail」で操作ログ管理機能

Amazon ECSに対するAPIの実行はAWS CloudTrailにログが残るので、API証跡を取得することが可能です。

Amazon ECSでできること

Amazon ECSによって、主に以下のようなことが実現できます。

あらゆるアプリケーションを簡単にコンテナ化

長時間実行されるアプリケーションやマイクロサービスからバッチジョブや機械学習のアプリケーションなど、あらゆる種類のコンテナ化されたアプリケーションを簡単に作成することができます。

コンテナのデプロイ管理の効率化

Amazon ECSは、Docker コンテナをサポートする拡張性とパフォーマンスに優れたコンテナオーケストレーションサービスです。これにより、コンテナ化されたアプリケーションを AWS で簡単に実行およびスケールできます。Amazon ECS では、独自のコンテナオーケストレーションソフトウェアをインストールおよび操作したり、仮想マシンのクラスターを管理およびスケールしたり、それらの仮想マシン上のコンテナをスケールしたりする必要はありません。

バッチ処理(ScheduleTask)によるアプリケーションの効率化

Amazon EC2のオンデマンドインスタンス、リザーブドインスタンス、スポットインスタンスでマネージドスケジューラーまたはカスタムスケジューラーを使用してバッチワークロードを実行できますので、アプリケーションの効率的なリソース配分とコストパフォーマンスの効率化につながります。

スピーディーなサービス操作

AWSのサービスを管理するための統合ツールである、AWS Command Line Interface(CLI)を使用して、コマンドラインから複数のAWSサービスを制御し、スクリプトを使用して自動化することが可能です。AWS CLIを利用することでサービスのスピーディーな操作が可能になります。

セキュアな環境構築

個々のユーザー独自のAmazon VPCでコンテナが起動されるため、それぞれ独自のAmazon VPCセキュリティグループなどを使用できます。ほかのユーザーとリソースを共有することがないため、セキュアな環境を構築できます。

AWSとの統合によるパフォーマンスの実現

AWSは、長年にわたってスケーラビリティの高いサービスを運用してきた経験から培った技術で構築されています。Amazon ECSは、ほかのAWSサービスと密接に統合されています。そのため、コンテナ化した幅広いアプリケーションを構築および実行するための、最適かつ包括的なソリューションを実現できます。

Amazon ECSの料金体系と活用例

Amazon ECSの料金体系と活用例について解説します。

Amazon ECSの料金体系

Amazon ECSには、2つの料金モデルがあります。

Fargate起動タイプモデル

コンテナ化されたアプリケーションに必要なvCPUとメモリリソースに対する料金が発生します。vCPUとメモリリソースは、コンテナイメージを取得した時点からAmazon ECSタスクが終了するまでを対象として計算され、最も近い秒に切り上げられます。この場合1分間の料金が最低料金として適用されます。試験的な運用のように、コンテナ化されたアプリケーションを利用する時間が限定されている場合等には、こちらの料金モデルが向いています。

Amazon EC2起動タイプモデル

追加料金は発生しません。アプリケーションの保存や実行のために作成した AWSリソース(Amazon EC2インスタンス、EBSボリュームなど)に対してのみ料金が発生します。支払いは実際に使用した分だけで、最低料金や初期費用は不要です。コンテナ化されたアプリケーションを常時稼働させておく必要がある場合等には、こちらの料金モデルが適しています。

AWS ECSの活用例

Amazon ECSは、以下のように活用することができます。

最適化されたAMI(Amazon マシンイメージ)の利用

Amazon ECSコンソールで、Amazon ECS向けに最適化されたAmazon ECS-optimized AMIが利用できます。すでにAmazon ECSが設定されている環境が、サーバー構築の段階で一気に、また敏速に構築できますので、短時間でのAmazonECS環境構築が可能です。

マイクロサービスへの応用

Amazon ECSのAWSサービスへのネイティブ統合の活用例としては、マイクロサービスアプリケーションの実行が挙げられます。

マイクロサービスは、小さな独立した複数のサービスでソフトウエアを構成する、ソフトウエア開発に対するアプローチです。複雑なアプリケーションを小型で独立したサービスに分解する、ソフトウェアアーキテクチャ手法により構築されています。マイクロサービスアーキテクチャはアプリケーションのスケーリングを容易にし、開発期間を短縮するため、ユーザーにとっては、イノベーションの実現と新機能の市場投入の加速化につながります。Amazon ECSによるコンテナの導入は、このような小さな分離型サービスを実行するのに最適で、継続的インテグレーションおよび継続的デプロイ(CICD)パイプラインが可能です。

クラウドへのアプリケーション移行

コードを変更することなく、従来のエンタープライズアプリケーションをコンテナ化してAmazon ECS に簡単に移行できます。例えば、起動タイプのAmazon ECSでWordPressを動かすといったことも可能ですので、コンテナアプリケーションを一から作り直す必要がありません。

機械学習の構築

トレーニングおよび推論の両方のMLモデルを簡単にコンテナ化できますので、最小限の機械学習のシステムを簡単に構築できます。さまざまなプラットフォームに配置可能な結合度の低い分散サービスで構成されるMLモデルを作成したり、アプリケーションが分析中のデータにアクセスしたりできます。

まとめ

Amazon ECSはコンテナ化されたアプリケーションをAWSで簡単に実行およびスケールできます。AWSのほかのサービスと連携して、さまざまな機能を実現できます。コスト最適化の環境のもとでコンテナに関して幅広いスケーリングとインフラストラクチャー管理がサーバーレスで可能になります。

Amazon Web Services(AWS)、Microsoft Azureの
導入支援サービスのご相談、お問い合わせをお待ちしております。

ページ上部へ戻る