CDP:クラウドコンポーネント

From AWS-CloudDesignPattern
Revision as of 09:23, 15 April 2012 by KenTamagawa (Talk | contribs)
Jump to: navigation, search

Contents

クラウドコンポーネント

AWSクラウドデザインパターンの各パターン内で使われる、基本的かつ重要なクラウドコンポーネントについて説明しておく。 AWSクラウドデザインパターンはAWSのサービスを元にパターンを構築しているが、パターンの背景を説明する際に、個別のサービス名ではなく、コンポーネントの概念的な名称で解説を行っている箇所もあるため、AWSのサービスと、本書で利用しているクラウドコンポーネント名のマッピングを、以下の表にまとめる。AWSクラウドデザインパターンを読む前に、この表を確認すると良いだろう。

AWSには、典型的なクラウドコンポーネントである「仮想サーバ」以外にも、さまざまなコンポーネントが提供されている。クラウドデザインパターンを理解する前に、まずは個々のクラウドコンポーネントについて、その特性や機能について理解しておく必要がある。

クラウドコンポーネント名 AWSサービス名 略称
仮想サーバ Amazon Elastic Compute Cloud EC2
マシンイメージ Amazon Machine Image AMI
仮想ディスク Elastic Block Store EBS
仮想ディスクスナップショット EBSスナップショット スナップショット
固定グローバルIPアドレス Elastic IP EIP
仮想ネットワークインターフェース Elastic Network Interface ENI
仮想ファイヤーウォール Security Group セキュリティグループ
仮想ネットワーク Amazon Virtual Private Cloud VPC
オートスケール AutoScaling オートスケール
インターネットストレージ Amazon Simple Storage Service S3
DNSサービス Amazon Route53 Route53
コンテンツ配信 Amazon CloudFront CloudFront
仮想ロードバランサー Elastic Load Balancing ELB
キューイング Amazon Simple Queue Service SQS
ノーティフィケーション Amazon Simple Notification Service SNS
システム監視 Amazon CloudWatch CloudWatch
RDBM Amazon Relational Database Service RDS
KVS Amazon SimpleDB SimpleDB
KVS Amazon DynamoDB DynamoDB
インメモリキャッシ Amazon ElastiCache ElastiCache
メール送信 Amazon Simple Email Service SES
分散処理クラス Amazon Elastic Map Reduce EMR
スタックデプロイメント AWS CloudFormation CloudFormation

各コンポーネントの説明

各コンポーネントについて、その概要と機能、特徴を説明する。

なお、以下のコンポーネントはすべてプログラムから操作できるAPIが提供されており、JavaやC#、PHPなどのプログラミング言語を使用して操作することができる。クラウドの利点を生かしたアーキテクチャを具現化する際に、プログラムを使用した運用の自動化や構築手順の再利用は、必要不可欠な要素である。

またこれらのクラウドのコンポーネントはサービスとして提供されており、その費用についても、初期費用がなく、データ量や利用時間など、利用量に応じた従量課金となっている。これもクラウドの利点を生かしたアーキテクチャを実現するための重要な要素となっている。

仮想サーバ - EC2 (Amazon Elastic Compute Cloud)

最も基本的なクラウドコンポーネント。必要なときにすぐに調達でき、従量課金でサーバが利用できる。サーバのスペックは選択する事が可能で、利用用途に応じて、CPUの処理能力やメモリ量を選ぶ事ができる。 OSやミドルウェア、アプリケーションは利用者が自由に選ぶ事ができる。管理者権限もあり、WindowsやLinuxで利用していたソフトウェアや技術をそのままクラウドに持ち込み利用できる。 なお、起動した個々のサーバは、「EC2インスタンス」と呼ばれる。

マシンイメージ - AMI (Amazon Machine Image)

EC2インスタンスを起動する際、その起動時のイメージとなるデータセットの事。AMIにはOSやミドルウェア、アプリケーションのデータが入っており、選択したAMIのデータをもとに、EC2インスタンスが起動する。 Amazonが提供している基本的なAMIを利用することも、自分でAMIを作る事も可能。作成したAMIをもとに、別のEC2インスタンスを起動する事ができる。

仮想ディスク - EBS (Elastic Block Store)

EC2インスタンスにマウント可能なデータ領域を提供するクラウドコンポーネント。EC2インスタンスとは異なる領域に格納されており、EC2インスタンスの障害の影響を受けない。任意のサイズをアロケートすることができ、任意のEC2インスタンスにブロックデバイスとしてマウントできる。このため、OSからはSATAやSCSIのディスクのように取り扱うことができ、任意のファイルシステムでフォーマットする事ができる。

仮想ディスクスナップショット - EBSスナップショット

ある時点のEBSのデータを、まるごとスナップショットとして保存したもの。 作成したEBSスナップショットからは、そのデータをもとに新しいEBSを作成する事ができる。スナップショットは必要なだけ複数取得でき、履歴を持つことが可能。スナップショットは耐久性の高いインターネットストレージであるS3(後述)に保存される。また、差分保存されるため、連続的に取得してもそのサイズ量は差分のみとなる。

固定グローバルIPアドレス - EIP (Elastic IP)

固定のグローバルIPを取得できるサービス。取得したEIPはEC2インスタンスではなく、AWSアカウントにひもづくため、EC2インスタンスのライフサイクルとは関係なく保持する事ができる。従って、あるEC2インスタンスに割り当てたEIPを、別のEC2インスタンスにに割り当てる事ができる。 仮想ネットワークインターフェース - ENI (Elastic Network Interface) -

EC2インスタンスに付与できる、仮想のネットワークカード。複数のネットワークカードをEC2インスタンスに付与する事で、例えばWebからのトラフィックを受けるインターフェースと、メンテナンス用に内部から接続するインターフェースを分けるような事ができる。またEIPと同様、あるEC2インスタンスに割り当てたENIを、別のEC2インスタンスへ割り当てる事ができる。

仮想ファイヤーウォール - Security Group

EC2インスタンスに付与される、ファイヤーウォール。EC2インスタンスへの通信を制御する事ができ、例えば特定のポートしか通さない設定や、特定の接続元からの通信しか通さないような設定を行える。 Security Groupを使用する事で、AWSクラウド上で典型的な3階層(Web層、AP層、DB層)の構成なども容易に構築できる。 仮想ネットワーク - VPC (Amazon Virtual Private Cloud) -

ネットワークのIPアドレス体系を決め、サブネットやルーティング、ネットワークACLといった、オンプレミスで行っていたネットワーキングをそのままAWSクラウド上で行える。作成したVPC上には、EC2インスタンスやELBを配置する事ができる。 インターネットに出るゲートウェイに加えて、VPN接続が可能なゲートウェイを定義できできる。BGPで経路交換を行うため、オンプレミスからVPN接続を行うと、AWSクラウドをイントラネットの一部のように利用する事が可能。

オートスケール - Auto Scaling

CPU利用率や通信量、特定の時刻など、あらかじめ条件を設定しておく事で、その条件に合致した際に自動的にEC2インスタンスを起動/停止させる機能。 負荷が高い時だけEC2インスタンスを起動し、負荷が低減したときに停止する事で、EC2インスタンスを効率よく利用できる。 インターネットストレージ - S3 (Amazon Simple Storage Service) -

インターネットに接続された、ネットワークネイティブのストレージコンポーネント。PUTやGETといった簡単な操作で、データを出し入れできる。無制限の容量があり、高い可用性、耐久性がある(設計上のデータアベイラビリティは99.999999999%) インターネットからのアクセスはパーミッションで制御することができ、またS3をそのままWebサーバとして公開することも可能。

DNSサーバ - Route53 (Amazon Route53)

AWSが提供するDNSサーバコンポーネント。世界的に分散配置されており、100%稼働のSLAを持つ。 Route53はネットワーク経由で設定変更が可能であり、このコンポーネントを使用してドメインを管理しておくことで、障害発生時や災害時に、バックアップのシステムへ迅速に切り替える事が可能になる。

コンテンツデリバリ - CloudFront (Amazon CloudFront)

静的なHTMLや画像、動画をキャッシュし、ユーザーに高速に配信を行うクラウドコンポーネント。 EC2インスタンスやS3にオリジナルコンテンツを配置し、そのフロントエンドとしてCloudFrontを配置する。 エッジサーバと呼ばれるCloudFrontのサーバ群が世界中に配置されており、ユーザーのアクセス元により近いエッジサーバがコンテンツの配信を行う。

分散ロードバランサ - ELB (Elastic Load Balancing)

ネットワーク経由のトラフィックを負荷分散し、複数のEC2インスタンスにトラフィクを振り分けるためのロードバランシングコンポーネント。AWSでは複数データセンターにまたがってEC2インスタンスを配置する事ができるため、ELBも複数データセンターにまたがって負荷分散を行うことができる。またロードバランサ自体も負荷分散するよう設計されており、トラフィックに応じて柔軟に処理能力を向上させる。

キューイング - SQS (Amazon Simple Queue Service)

高い信頼性を持つ、メッセージキューイング機能を持ったコンポーネント。キューに入ったメッセージは複数のストレージに安全に格納される。SQSはアクセスのためのインターフェースが公開されており、ネットワーク経由で利用する事が可能。

ノティフィケーション - SNS (Amazon Simple Notification Service)

あるイベント発生を起点に、登録してある宛先に対して一斉に通知を送信するコンポーネント。単体のコンポーネントとしてではなく、通常は他のコンポーネントと連携して動作する。例えば管理者のメールアドレスを登録しておき、エラーが発生した時に管理者に一斉に通知する、というように利用できる。 またSNSがイベントを受け取り、通知を送った後にその通知を受けた他のコンポーネントを動作させる、というような連携も可能なため、クラウド上で粗結合のアーキクチャを構築する際に重要となるコンポーネントである。

システム監視 - CloudWatch (Amazon CloudWatch)

CloudWatchは、クラウドコンポーネントの稼働状況やエラー情報を可視化し、統計データを保持するコンポーネントである。例えばEC2インスタンスのCPU利用率やネットワーク負荷、ディスク利用率等、ELBの通信エラー数などを集約する。 従来の監視システムは、システムが異常をきたした時に管理者に通知するのが主な役割であったが、クラウドではシステム監視と連動してサーバを起動・停止したり、ディスクを動的に増やしたりと、よりアクティブなシステム構築をする目的で利用することができるため、CloudWatch自体も、1つのクラウドコンポーネントとして定義する。

RDBMS - RDS (Amazon Relational Database Service)

サービスとして提供されるRDBMSコンポーネント。EC2インスタンスにRDBをインストールした場合は、DBのインストールやバックアップ作業は今まで通り自前で行う必要があるが、RDSを使用すると、構築済みのRDBをすぐに利用する事ができ、またパッチ当てやバックアップ、リカバリもAWSが行うため、利用者はRDBをサービスとして利用する事ができる。

KVS - SimpleDB (Amazon SimpleDB)

キー項目と値で構成される、スキーマレスのデータストアコンポーネント。リレーショナルデータベースとは異なり、基本的にキー項目と、それに付随する値で構成される。RDBのようにテーブルを構築したり、テーブル間のリレーションを持たせる事はできないが、その代わりにスキーマ定義が不要で、高いスケーラビリティとスループットを誇る。またデータは分散ストレージに格納され、高い信頼性を持つ。

インメモリキャッシュ - ElastiCach (Amazon ElastiCache)

インメモリでキャッシュ情報を保持するコンポーネント。データはすべてメモリ上に置かれるため、信頼性は高くないが、高速なデータの格納と取得ができる。 RDBの検索結果や、頻繁にアクセスされる情報を格納することが多い。 メール送信 - SES (Amazon Simple Email Service) -

メールの送信処理を提供するコンポーネント。送信システムが冗長化されており、高い信頼性を誇る。自前でメール送信サーバを構築する場合と比べて、すでに信頼のあるメール送信システムを利用できるため、メールの到達率(Derivability)が高い。またISPや各スパムリストと連携して、メールのリジェクト数やバウンス数を取得できるため、特に大量のメールを送信する際に、より品質の高いメールを送る際の参考情報とすることができる。

分散処理クラスタ - EMR (Amazon Elastic Map Reduce)

ログ解析や画像処理など、大量のデータに対して、並列で処理を行うためのクラスタコンポーネント。構築済みのApache Hadoopを利用することができる。

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox