Amazon Web Services ブログ

Amazon EC2 Container Service – リリースに関する要約、お客様事例、コードについて

今回は、去年 Amazon EC2 Container Service に追加したいくつかの機能に関する概要と、お客様事例やコードについてご紹介します。このサービスは EC2 インスタンスのマネージド型クラスターの範囲内で Docker コンテナをいくつでも実行しやすくします。また、同サービスはコンソールAPICloudFormationCLIPowerShell のサポートも備えています。簡単にアクセスできるように、Linux や Windows Docker イメージを EC2 Container Registry に保存できます。

リリースの要約
それでは ECS の最新機能と、その使用方法を説明したブログをいくつか見てみましょう:「アプリケーションの負荷分散 (Application Load Balancing)」- 去年は「アプリケーションロードバランサー (application load balancer)」のサポートを追加しました。この高性能なロードバランシングオプションはアプリケーションレベルで実行され、コンテンツベースのルーティングルールで定義することができます。ダイナミックポートをサポートし、複数のサービスでの共有が可能なため、コンテナ内でマイクロサービスを実行しやすくなります。詳細については「サービスロードバランシング (Service Load Balancing)」をご覧ください。

タスクで使用する IAM ロール – ECS タスクに IAM ロールを割り当てることでインフラストラクチャを安全にできます。これにより、各タスクごとに細かく設定しアクセス許可を付与できるので、各タスクが必要とするアクセス許可を割り当てることが可能です。詳しくは「タスクで使用する IAM ロール (IAM Roles for Tasks)」をご覧ください。

サービス Auto Scaling – 需要の変化に応じるため、サービス (タスク) のスケールダウンやスケールアップに関するスケーリングポリシーを定義できます。お客様は必要なタスクの最小数および最大数を選択し、1 つまたはそれ以上のスケーリングポリシーを作成するのみです。あとはサービス Auto Scaling で処理されます。この機能を活用するには「サービス Auto Scaling (Service Auto Scaling)」をご覧ください。

Blox – コンテナベース環境の Scheduling は、インスタンスにタスクを割り当てる際のプロセスです。ECS は 3 つのオプションを提供します: 自動 (すでに組み込まれている サービススケジューラー)、手動 (RunTask 関数を使用)、カスタム (ご自分で提供するスケジューラーを使用)。Blox は one-task-per-host タイプをサポートするオープンソーススケジューラーです。今後、他のタイプにも対応する可能性も充分にあります。これはクラスターの状態を監視し、モニタリングエージェントやログコレクター、その他のデーモンスタイルのタスクを実行するのに適しています。

Windows – Linux コンテナをサポートする ECS をリリースしたほか Windows Server 2016 Base with Containers の実行もサポートするようになりました。

コンテナインスタンスのドレイン – クラスターをスケールダウンしたりシステムを更新するために、実行中のクラスターからインスタンスを削除することが必要な場合も時にはあるでしょう。インスタンスの状態をより管理しやすくするため、今年始めに一連のライフサイクルフックを追加しました。ライフサイクルフックと Lambda 関数を使用して、新しい作業にスケジュールを設定することなく、インスタンスから既存の作業のドレインプロセスを自動化する方法については「Amazon ECS でコンテナインスタンスのドレインを自動化する (How to Automate Container Instance Draining in Amazon ECS)」をご覧ください。

コードを使用した CI/CD パイプライン* – コンテナはソフトウェアの導入を簡素化し、CI/CD (継続的インテグレーション / 継続的デプロイメント) パイプラインにとって理想的なターゲットです。過去に公開したブログ「AWS CodePipeline、AWS CodeBuild、Amazon ECR、AWS CloudFormation を使用し Amazon ECS で行う継続的デプロイメント (Continuous Deployment to Amazon ECS using AWS CodePipeline, AWS CodeBuild, Amazon ECR, and AWS CloudFormation)」では、複数の AWS サービスを使用して CI/CD パイプラインを構築し動作させる方法について説明しています。

CloudWatch Logs の統合 – このリリースでは、一元管理と分析に使用する CloudWatch Logs にログ情報を送信するタスクを実行するコンテナ設定が可能になりました。Amazon ECS コンテナエージェントをインストールし awslogs ログドライバーを有効にするだけです。CloudWatch Events – タスクの状態またはコンテナインスタンスが変更すると、ECS は CloudWatch Events を生成します。こうしたイベントは Lambda 関数を使用してクラスターの状態を監視できるようにします。Elasticsearch クラスターでイベントをキャプチャし保存する方法については「Amazon ECS Event Stream でクラスターの状態を監視する (Monitor Cluster State with Amazon ECS Event Stream)」をご覧ください。

タスク配置のポリシー – このリリースでは、クラスター内のコンテナインスタンスでタスク配置における細かな管理設定を提供しました。クラスター制約、カスタム制約 (場所、インスタンスタイプ、AMI、属性)、配置戦略 (スプレッドまたはビンパック) を含むポリシーを作成し、コードを作成することなく使用できるようにします。詳細については「Amazon ECS タスク配置のポリシー (Introducing Amazon ECS Task Placement Policies)」をご覧ください。

EC2 Container Service の実行
金融サービス、ホスピタリティ企業、家電メーカーなど様々な分野における大規模なエンタープライズから急成長中のスタートアップ企業まで、AWS をご利用のお客様は Amazon ECS を使用して独自のマイクロサービスアプリケーションを本稼働環境で使用しています。Capital One、Expedia、Okta、Riot Games、Viacom といった企業は Amazon ECS に依存しています。

Mapbox は、カスタムマップを設計し公開するプラットフォームです。同企業は ECS を使用してバッチ処理のアーキテクチャをサポートし、マップのサポートに使用する 1 億マイルのセンサーデータを毎日収集し処理しています。スポットインスタンスを使用して ECS でバッチ処理アーキテクチャの最適化も行います。Mapbox のプラットフォームは 5,000 件以上のアプリをサポートし、毎月 2 億人以上のユーザーをターゲットにしています。そのバックエンドは ECS で実行され、毎日 13 億件のリクエストに対応しています。同社が最近行った ECS への移行に関する詳細は「Amazon ECS に切り替えるメリット (We Switched to Amazon ECS, and You Won’t Believe What Happened Next)」をご覧ください。

旅行会社の Expedia は、マイクロサービスアーキテクチャで同社のバックエンドを設計しました。Docker の普及に伴い、スピードのあるデプロイメントや環境の可搬性に Docker を取り入れることにしました。ALB から IAM ロール、VPC の統合まで、優れた統合性を備えているため、すべてのコンテナ調整に ECS を使用することにしました。これにより、既存の AWS インフラストラクチャで ECS がとても使いやすくなりました。ECS により、デプロイやコンテナ化されたアプリケーションの負担を軽減できるようになりました。Expedia はすべてのアプリケーションのうち 75% を ECS の AWS で実行し、毎時間 40 億件のリクエストを処理できるようにしています。詳しくは Kuldeep Chowhan のブログ「Amazon ECS を使用して本稼働環境で Expedia が何百件ものアプリケーションを実行している方法 (How Expedia Runs Hundreds of Applications in Production Using Amazon ECS)」をご覧ください。

Realtor.com は住宅の購入販売において現在売りに出されている不動産物件の包括的なデータベースを提供しています。同社が AWS に移行してから ECS を使用することでサポートビジネスが成長し、現在では毎月の閲覧者数が 5,000 万人を超え、ピーク時には毎秒 250,000 件のリクエストが記録されています。ECS は同社がクラウドインフラストラクチャの使用率を高めながら、よりすばやくコードをデプロイすることをサポートしています。同社が ECS、Kinesis、その他の AWS サービスをどのように活用しているかは「Realtor.com の導入事例 (Realtor.com Case Study)」をご覧ください。Instacart は、食品同日配送サービスのサポートに ECS をどのように利用しているのか説明しています:

Capital One は、ECS を使用してオペレーションやインフラストラクチャの管理を自動化しているのか説明しています:

Code Clever の開発者は ECS を独自の作業ベースに使用しています。例: Rack はオープンソースの PaaS (Platform as a Service) です。これは分離されている VPC で実行するインフラストラクチャの自動化に集中し、セキュリティにはシングルテナントで構築されたサービスを使用します。

Empire もオープンソース PaaS です。Heroku のようなワークフローを提供し、マイクロサービスに重点を置いた小規模および中規模のスタートアップ企業をターゲットにしています。Cloud Container Cluster Visualizer (c3vis) は、ECS クラスター内でリソースの使用率を可視化します:

今後もお楽しみに!
この他にも ECS の新機能を構築中です、乞うご期待ください!

Jeff;