AWSは常に成長し、変化しているため、役立つ本はあまりありません。アマゾンは優れたトレーニングを提供しています。私は、 AWSを使用したアーキテクトに関する3日間のクラスを受講しました。これは、まさにあなたが探しているもののようです。
もちろん、誰もがクラスに参加するために旅行の時間とお金を費やす余裕があるわけではありません。2012年11月のAWSre:Inventカンファレンスには、あなたが望むものに関連する多くのセッションがあり、セッションのほとんど(おそらくすべて)には、無料でオンラインで利用できるビデオがあります。インターネットスケールアプリケーションの分析(スライドとビデオが利用可能)と同様に、AWSを使用したWebスケールアプリケーションの構築(スライドとビデオが利用可能)はおそらく適切です。
これらのオプションをよりよく理解するための優れた方法は、AWS上の既存のアプリケーションをいじることです。AWSのEC2インスタンスに移動するだけで、利用可能なものをさらに活用し始めるのは簡単です。私が最初にすることは、自分のマシン上のMySqlサーバーを取り除き、RDSで提供されているサーバーを使用することです。安定したら、RDSで1つ以上のリードレプリカを作成し、ほとんどの操作でそれらから読み取るようにアプリケーションを変更します。完全に最新の結果が必要な場合にのみ、メイン(書き込み可能)データベースから読み取ります。
アプリケーションは、データベース以外のWebサーバーにデータを保持していますか?その場合は、そのデータをEC2インスタンスから移動して、すべてのローカルストレージを削除します。一部はデータベースに送信される場合があり、一部(大きなファイルなど)はS3に適している場合があります。DynamoDBは、セッションデータなどに適した場所です。
上記のすべてにより、Webサーバーの負荷がアプリケーションコードだけに軽減され、スケーラビリティが向上します。また、Webサーバーに状態を保持しないようになったため、ELBと自動スケーリングを使用して複数のWebサーバーを自動的に実行し(さらに、必要に応じてさらに自動的に起動して)、より大きな負荷を処理できます。
アプリケーションには、Webリクエストからオンデマンドで実行する、長時間実行される集中的な操作がありますか?要求されたときに操作を実行するのではなく、SQSを使用してリクエストをキューに入れ、ユーザーにアクセスするように伝えることを検討してください。これで、長時間実行されるプロセス(またはcronジョブまたはスケジュールされたタスク)でキューを定期的にチェックし、要求された操作を実行して、結果を(SESを使用して)ユーザーに電子メールで送信します。実際にスケールアップするには、これらのジョブをWebサーバーから専用マシンに移動し、必要に応じて自動スケーリングを再度使用します。
より大きなマシンが必要ですか、それとも小さなマシンと一緒に暮らすことができますか?CloudWatchメトリクスは、時間の経過とともに使用されているIO、メモリ、CPUの量を示します。プロビジョニングされたIOPSをEC2またはRDSインスタンスで使用して、必要に応じてパフォーマンスを(コストをかけて)改善し、異なるサイズのインスタンスを使用してメモリまたはCPUを増やすことができます。
このAWSのセットアップと構成はすべて、AWS Webコンソール、コマンドラインツール、または多くの言語で利用可能なSDKを使用して実行できます(Pythonのbotoライブラリは素晴らしいです)。基本を学んだ後、CloudFormationを調べて自動化を改善します(これまでにいくつかの投稿を書きました)。
これは、1つのアプローチの10,000フィートの高さのビューのビットです。AWSサービスを使用する場合は、各AWSサービスの詳細を確認する必要があります。AWSには、それらすべてに関する優れたドキュメントがあります。