« AWS Elastic Beanstalkの基本用語 | メイン | AWS Elastic Beanstalkに対するAWS Management Consoleサポート »

AWS Elastic Beanstalkのプログラミングモデル

この記事では、AWS Elastic Beanstalk内でアプリケーションを開発する方法について説明したいと思います。

AWS Elastic Beanstalkは、皆様のアプリケーションを走らせ、必要に応じて拡張(スケーリング)させるために必要な、詳細部分を隠ぺいしています。皆様は、アプリケーション自体、そしてアプリケーションの先に存在するエンドユーザーであるお客様にフォーカスすることができ、インフラストクラチャレベルの詳細に捉われなくて済みます。

開発ツールと開発環境はご自由にお選び頂けます。既存のビルドシステムをお使い頂くことも可能ですし、Elastic Beanstalk command-line tools(コマンドラインツール)を用いて、コンパイル/デプロイ/テストのサイクルを自動化することも可能です。

また、AWS Toolkit for Eclipseを使うこともできます。Eclipseの中で、アプリケーションのコードを書き、それをAWS Elastic Beanstalkにデプロイし、さらに、Eclipseから離れることなくテストすることも可能です。

各アプリケーションは、特定のコンテナタイプの上で稼働することになります。デフォルトのAWS Elastic Beanstalk コンテナにおいては、JavaのアプリケーションをTomcatで稼働させます。皆様のアプリケーションを、 ServletsJSP(JavaServer pages)、もしくはその両方を用いて開発できます。また、Java EEのクラスやAPIも使用できます。

高い拡張性、高い可用性をもつアプリケーションを構築する際には、皆様ご存じのように、データの永続性について考慮する必要があります。AWS Elastic Beanstalk アプリケーションは、必要に応じて、複数のEC2インスタンスにスケールさせるので、長い寿命をもつデータをインスタンスのファイルシステムに置くことは得策ではありません。各インスタンスは、Auto Scalingやハードウェア故障の結果として自動で落ちたり起動したりするからです。したがって、ある一定期間永続させたいデータについては、EC2インスタンスではなくデータベース上に保存するべきです。Amazon S3、SimpleDB、Relational Database Service(RDS)がそういった利用に最適です。

コード書く際には、AWS SDK for Javaが便利です。このSDKにより、アプリケーションを作る際に便利な下記のリソースに、より簡単にアクセスできます。

  • Amazon Simple Storage Service (S3)を、どのようなサイズのオブジェクトも(1オブジェクトあたり、1バイトから5TBまで)保存できる、パブリック/プライベートのインターネットストレージとして利用できます
  • Amazon SimpleDBを、高い可用性とスケーラビリティをもったノン・リレーショナルなデータのストレージとして利用できます
  • Amazon Simple Queue Serviceを、アプリケーション内のコンポーネント間のキューイングサービスとして利用できます
  • Amazon Simple Notification Serviceを、スケーラブルなメッセージングサービスとして利用できます
  • Amazon Relational Database Serviceを、スケーラブルなリレーショナルデータベースとして非常に簡単に便利にお使い頂けます
  • Amazon Elastic MapReduceにより、クラウド上でホストされたHadoopフレームワークを用いて大量のデータを処理可能です

各サービスが高い拡張性、高い信頼性、可用性を持っており、皆様の必要に応じて、いつでも、素早く、必要なだけお使い頂くことができます。

もちろん、このSDKを用いて、EC2、CloudWatch、AutoScalingのAPIにアクセスすることも可能です。しかし、AWS Elastic Beanstalkが、ホスティングやスケーリングについては面倒を見てくれるので、大抵のケースではこちらを利用することはないかもしれません。しかしながら、そのレイヤまでの透明性、コントロール性が存在していることは非常に重要です。また、個人的には、誰かがこのレイヤまでフル活用した非常に面白いAmacon Elastic Beanstalkの使い方を見つけるに違いないと確信しています。

ちなみに、上記のS3やSQSなど様々なサービスは非常に便利なので、皆様にも気に入ってもらえると嬉しいのですが、AWS Elastic Beanstalkにおけるモデルが皆様にそういったサービスの利用を強制するものではない、ということを強調しておきたいと思います。もし、すでにあるミドルウェアを使っている既存コードがある場合は、それをそのままお使い頂ければ良いと思います。もし、EC2インスタンスの上で走る他のサービスがあれば、それをElastic Beanstalkと組み合わせて使って頂けます。また、AWSの外で動いているサービスを使う場合も、同様です。是非それらと、Elastic Beanstalkとを組み合わせてお使いください!選択の自由度の高さ、こそが、AWSが大切している考え方であり、何度強調しても強調しすぎることはありません。

最後に、Amzon Elastic Beanstalkそれ自体がAPIを完備していることにも触れておきたいと思います。AWS Elastic Beanstalk APIを用いることで、アプリケーションや環境の作成、管理、編集、削除を行えます。これらのAPIについては他のブログ記事で紹介します。

玉川憲
Twitter: @KenTamagawa

コメント

トラックバック

この記事のトラックバックURL:
http://www.typepad.com/services/trackback/6a00d8341c534853ef0147e09f30bf970b

AWS Elastic Beanstalkのプログラミングモデルを参照しているブログ:

Featured Event

2016年3 月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31