メニュー
AWS Elastic Beanstalk
開発者ガイド (API Version 2010-12-01)

設計上の考慮事項

Elastic Beanstalk を使用してデプロイされたアプリケーションは Amazon クラウドリソースで実行されるため、アプリケーションを設計するときは、スケーラビリティセキュリティ永続的ストレージ耐障害性コンテンツ配信ソフトウェアのアップデートとパッチの適用、および接続性について考慮する必要があります。アーキテクチャ、セキュリティ、エコノミクスなどのトピックが記載されている技術的な AWS ホワイトペーパーの包括的なリストについては、「AWS クラウドコンピューティングホワイトペーパー」を参照してください。

スケーラビリティ

クラウド環境ではなく物理ハードウェア環境で作業している場合は、2 つの方法でスケーラビリティにアプローチできます。つまり、スケールアップ(垂直スケーリング)またはスケールアウト(水平スケーリング)することができます。スケールアップアプローチの場合、ビジネス拡大の需要に対応するには、強力なハードウェアに投資する必要があります。一方、スケールアウトアプローチでは投資の分散モデルに従う必要があるので、取得対象となるハードウェアとアプリケーションがさらに絞られ、データセットが連合されるほか、サービス中心の設計が採用されます。スケールアップアプローチは非常に高くつく可能性があるにもかかわらず、需要がキャパシティーを超えてしまうというリスクは依然として存在します。スケールアウトアプローチの方が通常は効率的ですが、定期的に需要を予測し、需要を満たすためにある程度まとまった量のインフラストラクチャをデプロイする必要があります。このアプローチでは余剰キャパシティーが発生することがよくあるため、注意深くモニタリングする必要があります。

クラウドに移行すると、クラウドの弾力性を利用することで、需要に合わせてインフラストラクチャを使用できます。弾力性とは、つまりリソースを効率的に取得および解放することで、これによりインフラストラクチャを需要の増減に合わせて迅速にスケールイン/スケールアウトできるようになります。伸縮自在性を実装するには、環境内のリソースからのメトリクス(サーバーやネットワーク I/O の使用率など)に基づいてスケールアップまたはスケールダウンするように、Auto Scaling 設定を行います。Auto Scaling を使用すると、使用が増えたらコンピューティングキャパシティーを自動的に追加し、使用が減ったら削除できます。システムメトリクス(CPU、メモリ、ディスク I/O、ネットワーク I/O)を Amazon CloudWatch に発行し、Auto Scaling アクションをトリガするかまたは通知を送信するようにアラームを設定します。Auto Scaling を設定する手順の詳細については、「Elastic Beanstalk で Auto Scaling を設定する」を参照してください。

Elastic Beanstalk アプリケーションは、必要に応じてスケールアウトできる耐障害性に優れた疎結合コンポーネントを使用して、できるだけステートレスにする必要もあります。AWS のスケーラブルなアプリケーションアーキテクチャ設計の詳細については、『Architecting for the Cloud: Best Practices』ホワイトペーパーを参照してください。

セキュリティ

AWS のセキュリティは「責任分担モデル」です。AWS は、お客様の環境の物理リソースを保護し、クラウドがお客様のアプリケーションを実行するための安全な場所であることを保証します。お客様の Elastic Beanstalk 環境で送受信されるデータのセキュリティおよびお客様のアプリケーションのセキュリティに対しては、お客様に責任があります。

お客様のクライアントからの情報を保護するために SSL を設定します。VeriSign や Entrust などの外部認証機関からの証明書が必要になります。証明書に含まれるパブリックキーはブラウザに対してサーバーを認証し、両方向のデータの暗号化に使用される共有セッションキーは、このパブリックキーに基づいて作成されます。SSL 証明書の作成、アップロード、および環境への割り当ての手順については、「Elastic Beanstalk 環境用に HTTPS を設定する」を参照してください。

環境に SSL 証明書を設定する場合、クライアントとお客様の環境の Elastic Load Balancing ロードバランサーの間でデータが暗号化されます。デフォルトでは、暗号化はロードバランサーで終了し、ロードバランサーと Amazon EC2 インスタンス間のトラフィックは暗号化されません。

永続的ストレージ

Elastic Beanstalk アプリケーションは、永続的ローカルストレージがない Amazon EC2 インスタンスで実行されます。Amazon EC2 インスタンスが終了した場合、ローカルファイルシステムは保存されず、新しい Amazon EC2 インスタンスがデフォルトのファイルシステムで開始されます。そこで、永続的データソースにデータを保存するようアプリケーションを設計する必要があります。アマゾン ウェブ サービスには、アプリケーションに利用できる複数の永続的ストレージオプションが用意されています。例えば、次のようなオプションがあります。

耐障害性

簡単に言うと、クラウドでのアーキテクチャ設計は、悪いことを想定しながら行うことをお勧めします。つまり、必ず故障から自動回復できるように設計、実装、およびデプロイしてください。Amazon EC2 インスタンスおよび Amazon RDS については、複数のアベイラビリティーゾーンを使用します。アベイラビリティーゾーンは概念的には論理データセンターと似ています。Amazon CloudWatch は、Elastic Beanstalk アプリケーションの状態を詳しく確認するときに使用してください。これにより、ハードウェア障害やパフォーマンス低下が発生した場合に適切な措置を講じることができます。問題のある Amazon EC2 インスタンスを新しいインスタンスに置き換えられるように、一連の Amazon EC2 インスタンスのサイズを一定に保ちながら維持するには、Auto Scaling を設定します。Amazon RDS を使用してバックアップの保存期間を設定すると、Amazon RDS によって自動バックアップを実行できます。

コンテンツ配信

ユーザーがウェブサイトに接続している場合、そのユーザーのリクエストは複数の個別のネットワークを介してルーティングされる可能性があります。その結果、レイテンシーが増え、パフォーマンスが低下することがあります。Amazon CloudFront は、世界各地に設置されたエッジロケーションのネットワークを介してウェブコンテンツ(画像、動画など)を配信することで、こうしたレイテンシーの問題を改善します。エンドユーザーがルーティングされるのは最寄りのエッジロケーションです。したがって、コンテンツは可能な限り最良のパフォーマンスで配信されます。CloudFront は、ファイルの元の最終バージョンをしっかりと保存する、Amazon S3 とシームレスに連携します。Amazon CloudFront の詳細については、http://aws.amazon.com/cloudfront を参照してください。

ソフトウェアの更新プログラムと修正プログラム

Elastic Beanstalk では、新しいソフトウェアとパッチを使用してプラットフォーム設定が定期的に更新されます。Elastic Beanstalk では、実行中の環境を新しいバージョンの設定に自動的にアップグレードすることはありませんが、お客様がプラットフォームのアップグレードを開始して、実行中の環境をインプレース更新できます。プラットフォームのアップグレードでは、ローリング更新が使用され、変更をバッチで適用することにより、お客様のアプリケーションは利用可能な状態のままです。

接続

Elastic Beanstalk では、デプロイを完了するために、お客様の環境内のインスタンスに接続できる必要があります。Elastic Beanstalk アプリケーションを Amazon VPC 内にデプロイする場合、接続を有効にするために必要な設定は、作成する Amazon VPC 環境のタイプによって異なります。

  • 単一インスタンス環境の場合、Elastic Beanstalk によって各 Amazon EC2 インスタンスにパブリック Elastic IP アドレスが割り当てられ、これによりインスタンスは直接インターネットと通信できるため、追加の設定は必要ありません。

  • Amazon VPC 内の負荷分散型オートスケーリング環境で、パブリックサブネットとプライベートサブネットの両方がある場合は、以下を実行する必要があります。

    • インターネットから Amazon EC2 インスタンスへのインバウンドトラフィックをルーティングするロードバランサーをパブリックサブネットに作成します。

    • Amazon EC2 インスタンスからインターネットへのアウトバウンドトラフィックをルーティングするネットワークアドレス変換(NAT)デバイスを作成します。

    • プライベートサブネット内の Amazon EC2 インスタンスのインバウンドおよびアウトバウンドルーティングルールを作成します。

    • NAT インスタンスを使用している場合は、NAT インスタンスのセキュリティグループと Amazon EC2 を設定して、インターネット通信を有効にします。

  • Amazon VPC 内の負荷分散型オートスケーリング環境で、パブリックサブネットが 1 つある場合は、Amazon EC2 インスタンスにパブリック IP アドレスが設定され、インスタンスはインターネットと通信できるため、追加の設定は必要ありません。

Amazon VPC で Elastic Beanstalk を使用する方法については、「Amazon VPC で Elastic Beanstalk を使用する」を参照してください。