AWSコンテナサービスとBeanstalkの違い
AWSで「Docker」を使い倒す、最適な方法とは?
「Docker」を「Amazon EC2 Container Service」で使用すると、クラウドのポータビリティ強化とコスト削減を実現できる。この2つのサービスを利用するに当たり必要な情報を提供する。
クラウドコンピューティングに携わっている開発者が構成の問題に苦労することは少なくない。例えば、クラウドサービスは、ラボ環境で機能しても、運用環境では期待した通りに動作しないといった問題だ。米Amazon Web Services(Amazon)の「Amazon EC2 Container Service」(Amazon ECS)では、「Amazon Elastic Compute Cloud」(Amazon EC2)で米Dockerの「Docker」コンテナを実行できる完全にプログラム可能なホスト型のマネージドAPIを提供している。開発者がDockerでサーバのサイズと数を選択すると、コンテナがEC2のインスタンスに配置される。
Amazon EC2を使用すると、ユーザーはプログラムまたは自動で仮想マシン(VM)をスピンアップできる。プログラムを使用するか、自動化するかは構成次第だ。Amazon EC2ユーザーは、VMを配置するインスタンスのタイプ、リージョン、アベイラビリティゾーン(AZ)を定義する。Amazon EC2のインスタンスはスケールアップ可能だが、Amazon EC2の真価はスケールアウトの機能を追加したときに発揮される。スケールアウトの機能は、異なるAZとリージョンにある複数のサーバにサービスを分散する。
Amazon EC2の価格は、より少ない数の大きなインスタンスを実行すると抑えることができる。一部のサーバを完全に隔離して、他のサーバに影響しないようにしたいと考える企業はDockerを採用している。
Dockerは、マイクロサービスとクラウドのポータビリティに重点を置いたサービスだ。マイクロサービスは、あるサービスの問題が他のサービスに影響することを回避するのに役立つ。例えば、PDFをアーカイブするプロセスで問題が発生し、CPUが枯渇したとしよう。このような場合に検索インデックス作成システムが無効になるのは望ましくないだろう。各サービスをそれぞれ専用のAmazon EC2インスタンスでスピンアップするのが、標準的な修復方法である。だが、m3.largeのインスタンスを2つ運用すると、m3.xlargeインスタンスを1つ運用するよりもコストが掛かる。Amazonは、多数のインスタンスを使用するより、大きなインスタンスを使用するユーザーを優遇している。
ただし、Dockerは、AWSやクラウドに限定されるものではない。ITチームは、パブリッククラウドからベアメタルに至るまで、さまざまな場所でDockerを実行できる。Dockerは、VM上に抽象化レイヤーとして配置される。仮想化レイヤーのオーバーヘッドはそのままだ。つまり、企業はコードを書き直す必要なく、他のパブリッククラウドプロバイダーのサービスを試すことができる。主な機能が、時間を掛けて構築してきた「Amazon Machine Instances」(AMI)にある場合、問題は2つある。1つは、新しいセキュリティパッチに対応するためにAMIを更新するスクリプトを維持しなければならないことだ。もう1つは、米Googleの「Google Compute Engine」など、新しいクラウドプロバイダー用にシステムを再構築しなければならないことだ。
以降、Amazon ECSをセットアップして運用するための手順を紹介する。
Amazon ECSを使い始める
Amazon ECSには、DockerとAWSを使い始めるのに必要なものがそろったコンソールが用意されている。最初に実行すべき手順は、クラスタを作成して、インスタンスをDockerのプールに追加することだ。これらのインスタンスは「Auto Scalingグループ」(ASG)に追加できる。ASGにインスタンスを追加すると、正常なインスタンスがいつでも利用可能になり、Dockerシステムにはコンテナの実行状態を維持するための余力が生じる。
まず、Amazon ECSのコンソールにアクセスし、クラスタを作成されたい。これがDockerインスタンスの最上位レベルのグループになる。同じAWSのアカウントで、複数の個別のクラスタを使用してテスト/開発用の環境を分離することができる。
クラスタを作成したら、次の手順はクラスタでインスタンスを起動することだ。個人的には、ASGの使用をお勧めする。これは、クラスタで一定数のインスタンスを実行する場合にも当てはまる。ASGを設定すると、サーバが停止したときに、自動的に別のサーバに差し替えられるため予防対策にもなる。
コンソールで新しい起動構成を作成したら、AWS Marketplaceから最新のAmazon ECS最適化インスタンスを選択されたい。
[Continue]をクリックし、起動するインスタンスのタイプを選択する。C4またはM3のインスタンスタイプでlarge以上の使用をお勧めする。T2またはT1は選択しないようにされたい。これらのインスタンスは、バーストキャパシティー用に設計されている。そのため、長期間に渡って実行されるプロセスの実行状態を維持することについて問題が発生する恐れがある。
その他の項目についても必要な情報を設定したら、今度はASGのセットアップだ。ASGは画面に表示されるメッセージに従ってセットアップできる。ASGは「仮想プライベートクラウド」(Amazon VPC)で実行するように構成可能だ。だが、少なくとも2つの異なるアベイラビリティゾーンに存在する2つのサブネットで実行するようにセットアップされたい。
ASGがクラスタでAmazon EC2をスピンアップしたら、Amazon ECSコンソールにインスタンスが表示されるようになる(図1)。
タスクの定義を作成する
タスクとは、1つのサービスまたはマイクロサービスのために実行されている1つ以上のDockerコンテナだ。タスクは、シンプルなワークロードまたは複雑なワークロードに使用できる。前者の例はRedisサーバだ。また、後者の例には、データベース、Memcached、Webサーバのリンクされたコンテナを含むWordPressスタック全体などがある。これはコンテナをリンクして、連係させるのに役立つ。
タスクの定義でコンテナを構成するときには、コンテナ名、イメージ、CPU、メモリ、マップするオプションのポート、オプションの環境変数、オプションのオーバーライドコマンド、リンクを定義されたい。また、各コンテナ用に予約するメモリ(Mバイト単位)とCPUのユニット数を指定する必要がある(1基の2.8GHzプロセッサには、全部でCPUユニットが1024個ある)。この設定により、サーバが過剰な数のコンテナでオーバーロードすることを回避できる。つまり、1つのコンテナが過剰にリソースを消費して、他のコンテナの処理速度が低下する事態を回避することができる。クラスタのWebサイトには、利用可能なCPUユニットとRAMが表示される。このいずれかが不足したら、新しいコンテナを起動する前にクラスタで追加のサーバを起動されたい。
サービスを作成する
タスクの定義を作成したら、今度はサービスの作成だ。サービスは、簡略化されたASGのECS版である。サービスにより、一定数のタスクインスタンスが実行されるようにし、開発者は実行中のインスタンスをロードバランサーに結び付けられるようになる。サービスのロールをアサインすると、コンパートメント化に役立つ。個々のDockerコンテナには、専用のIDとアクセス管理のロールが付与される。これにより、個々のDockerコンテナはAmazon EC2に匹敵するパワーを手に入れることができる。
Private Docker Registryから始めることをお勧めする。Private Docker Registryでは、Dockerのイメージのプライベートリポジトリを作成して、システムにプルすることができる。Dockerのプライベートリポジトリは、「Amazon Simple Storage Service」(Amazon S3)のリポジトリへの保存がサポートされている構成可能なDockerコンテナのように見える。
図2は筆者がDockerレジストリをホストするために使用したタスク定義のサンプルである。
図3は関連サービスだ。
筆者のDockerHubの内部ロードバランサーはポート80からポート5000にプロキシしている。VPC内でしか利用できないので、カスタム認証やSSLのサポートは不要だ。このDockerリポジトリからプルするようにイメージをセットアップすることができる。また、イメージを作成して、このリポジトリにプッシュするのに使用できる特別なDockerのインスタンスがある。
Blue-Greenアップデートを実行する
「AWS Elastic Beanstalk」と同様に、Amazon ECSはアップデートに対応している。その手法は追加タスクのスピンアップ、ロードバランサーの切り替え、新しいコンテナの準備ができたら古いコンテナを終了するというものだ。通常、このプロセスによってダウンタイムが削減される。そのため、ITチームは顧客に影響を及ぼすことなく営業時間内にアップデートをプッシュできる。
Blue-Greenの導入を行うには、新しいバージョンのタスクを作成し、その新しいバージョンのタスクを使用するようサービスを更新されたい。この新しいタスクは、新しいバージョンのイメージをポイントしているだろう。Amazon ECSでは、全てのタスクの変更内容が保存される。そのため、導入で何か問題が起こった場合は、簡単に古いバージョンに戻すことができる。
Amazon ECSとElastic BeanstalkのどちらがDockerコンテナに適しているのか
AWSのインスタンスでDockerを運用するのは新しい概念ではない。定期的に新しい導入を使用するWebベースのアプリケーションが必要な場合は、DockerとElastic Beanstalkの組み合わせを使用するのが最善の策だろう。だが、アプリケーションの裏側で複数のマイクロサービスを実行する場合、この組み合わせは必ずしも理想的な環境とはいえない。Webアプリケーションが他のバックエンドシステムを動かしている場合、Amazon ECSとElastic Beanstalkの両方をDockerと使用しなければならないかもしれない。バックエンドシステムには、動画のトランスクリプトの抽出、イメージの自動顔認識、ゲームの分析などがある。
SQSキューから読み取るようAmazon ECSのマイクロサービスに指示をしてから、サービスを拡張して、環境で複数のサービスのコピーを実行するのが最適な場合もあるだろう。例えば、m3.xlargeインスタンスが4つあるとしよう。このインスタンスでは、10個のPDF抽出ツール、2台のフルテキストインデックス作成システム、4台の配信システム、幾つかの雑多なタスクを実行している。雑多なタスクには、英Geckoboardのダッシュボードを更新したり、米Tableau Softwareの「Tableau」で分析するためにデータをRDSと同期する処理などがある。
上述のサービスにアクセスして、実行するタスクの数を増やして、さらにPDF抽出プロセスを追加することができる。追加の領域が必要な場合は、サーバのサイズを増やすか、プールのサイズを大きくすることで対応可能だ。この作業をElastic Beanstalkで行うとしたら、10個のPDF抽出ツールを実行するために少なくとも10個の個別のインスタンスが必要になる。一方、Amazon ECSでは、小さなインスタンスを複数実行するよりも大きなインスタンスを安価に実行できるというメリットを活用することができる。
AWSでDockerを使用している場合は、Amazon ECSが最適な選択肢となるだろう。AWSが作業の大半を行っているので、コンテナで一定数のインスタンスを実行した状態を維持して、「Amazon Elastic Load Balancing」(Amazon ELB)やAuto Scalingといったなじみのある要素を使用しながら、簡単にインスタンスを管理できる。
Copyright © ITmedia, Inc. All Rights Reserved.
この記事の著者
関連記事
新着ホワイトペーパー PR
-
製品資料
[株式会社MatrixFlow] 「物流リソース最適化」ガイド:人員・配車・傭車を出庫依頼の確定前に決めきる -
製品資料
[株式会社キーエンス] なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは -
製品資料
[株式会社セールスフォース・ジャパン] 「CRMは設計と無関係」は本当か? PLMとの融合で実現する高速開発 -
事例
[日本ヒューレット・パッカード合同会社] AIエージェントの時代にどう備える? 「新たな働き手」を支える3要素とは -
製品資料
[日本ヒューレット・パッカード合同会社] “横並びの自動化”から脱却、AI活用で生産性と競争力を高める秘訣
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
なぜ「全社配布Copilot」は使われないのか? 失敗に学ぶAI定着
-
2
法務と開発者で「言葉が通じない」問題 トヨタやソニーが語るOSS管理の真実
-
3
なぜ「Gemini 4 Argon」は出遅れたのか? Googleが狙う“逆転のシナリオ”
-
4
損保ジャパンはなぜ「COBOL」を捨てなかったのか? 脱メインフレームの真相
-
5
情シスの約8割が転職や退職を意識 調査で分かった“辞めたくなる最大の理由”
-
6
ChatGPTは“検索しまくり”でGeminiは“淡泊”? データが明かすAIの裏側
-
7
情報漏えいはなぜ繰り返されるのか 今すぐ見直すべき「境界」
-
8
「Wi-Fi 7」経由でWindowsが乗っ取られる? 最高権限奪取の恐怖
-
9
「結局使わなくなる」Microsoft 365 Copilotを半年で定着 キリンの3施策
-
10
「中堅・中小企業のネットワーク・セキュリティ運用実態」に関するアンケート
ホワイトペーパーランキング PR
-
1
不審メールの経路や見せ方に変化? 2026年夏の3事例から見えた動向と対処方法
-
2
家庭用Wi-Fiルーターの業務利用は危険? 避けるべき理由と具体的な対策
-
3
Microsoft 365を安全に運用 うっかりミスやサイバー攻撃に備えるデータ保護術
-
4
財務部門がAIを最大限に活用する方法 無駄のない戦略的リーダーシップへの道
-
5
LLMが兵器化? 元FBI高官が鳴らす警鐘とセキュリティツール統合のポイント
-
6
「オンプレミス回帰」せざるを得ない“合理的な理由”
-
7
なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは
-
8
生成AIを開発に導入しても効果が見えない? 実証実験で分かった成果と課題
-
9
経産省DX指針から読み解く、受発注業務デジタル化ロードマップ
-
10
HDDを使わない「SSDオンリー」が無謀なのはなぜ?
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー