チュートリアルをすすめるにあたり様々なクラウドサービスを利用していきますが、ベースとなるアプリケーションがあると理解が進みやすいと思います。 そこでサンプルアプリケーションとして簡易的な Twitter を作ります。
AWS チュートリアルについて
このページは AWS基礎入門チュートリアル の一部です。 AWS チュートリアル全体は AWS基礎入門チュートリアルを参照してください。
簡易的な Twitter 実装
サンプルアプリケーションとして簡易的な Twitter を作ります。 まずは低機能な下記を実装します。
- 直近ツイート (メッセージ) 5件を表示する。
- 新規ツイートを行うことができる。
- ツイートはファイルに保存する。
- ユーザ・アカウントの概念は (まだ) ない。
ざっと殴り書いた PHP ソースは下記です。 MVC もオブジェクト指向も無縁のソースですが、 短く書くためにあえてそういうふうに書いてます。 いつもはもうちょっとマシなソース書きます。ほんとです。
上記ソースを /var/www/html/ に保存してください。 そして root にて、tweets.txt というファイルを作成し、 Web サーバから更新可能なようパーミッションを設定してください。
% sudo su -
# cd /var/www/html/
# touch tweets.txt
# chmod 666 tweets.txt
実行サンプル
下記 URL にアクセスしてください。
- http://[EC2のパブリックIPアドレス]/minitwitter.php
初期表示は下記のようになります。
いくつかメッセージを投稿した状態が下記です。
tweets.txt がない、またはパーミッションがおかしい場合、 エラーを表示するという親切設計です。
このアプリケーションをリリースして、世の中の何百万人・何千万人に使ってもらいたいとなった場合、 1つの EC2 インスタンスでさばききれないことはあきらかです。 多くのリクエストをさばくには、複数台構成にする必要があります。
では EC2 を 2台構成にすればよいかというと、 現在のアプリケーションではファイルに保存しているため、 複数台の EC2 よりツイート情報を取得することが難しい状態です。
というわけで、負荷分散を見据えて、ファイル管理をやめてデータベースで管理するようにしましょう。 ここでは RDS というサービスを使ってみます。
また、念のため本プログラムのよくない点を書いておきますが、サンプルプログラムなのでご容赦を。
- エラー情報をブラウザに表示するのは、攻撃者へのヒントを提供していることになりますので、本来はよろしくありません。
- データファイル (tweets.txt) をブラウザから参照可能な領域に置くのは、本来はよろしくありません。
- パーミッションを 666 にするのはよろしくありません。
- 排他処理をしていないため、新規メッセージ登録を連続して行うと、ファイルが壊れると思います。
次に RDS インスタンス作成 を行います。