1

仮想Windowsサーバー上のphp、mysql、apacheで実行されているWebアプリがあります。AWSでスケーラブルになるように(楽しみのために新しいことを学ぶことができるように)再設計したいと思います。

EC2をセットアップしてそこにすべてダンプする方法を見ることができますが、EC2をスケーラブルにして、AWSのすべての優れた機能を利用したいと思います。

グーグルを試しましたが、簡単なガイドが見つかりません(注-Linuxのコマンドラインの経験がありません)

誰かが私をステップを通して私を導き、私に教えることができる詳細なリソースに私を導くことができますか?または、回答に手順を要約して、あなたの発言に基づいて調査できるようにします。

ありがとう

4

2 に答える 2

1

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には、それらすべてに関する優れたドキュメントがあります。

于 2013-01-19T18:12:44.793 に答える
0

見方にもよりますが、これは答えというよりはコメントですが、コメントとして書くには長すぎました。

あなたが求めていることは、SOでは本当に答えることができません-それは巨大で複雑な質問です。あなたは基本的に、「クラウドベースのプラットフォームにデプロイできる、拡張性が高く耐久性のあるアプリケーションを設計するにはどうすればよいですか?」と質問しています。 答えは大きく異なります:

  • アプリケーションの詳細-それは何をし、どのように機能しますか?
  • 予算とバランスの取れたダウンタイムに対する許容度
  • 現在の開発と展開のワークフロー
  • アプリケーションをサポートするためにスタッフが持っているリソース/スキルセット
  • 起動時間枠はどのようになりますか。

私は、アマゾンウェブサービスアーキテクチャのコンサルティングを専門とするソフトウェアコンサルティング会社を経営しています。私たちのビジネスの約80%は、クライアントのためにこれらの質問を調査して回答しています。毎回数週間のプロジェクトです。

ただし、正しい方向を示すために、ElasticBeanstalkを確認することをお勧めします。これは、基盤となるAWSリソースを抽象化するPaaSのようなサービスであり、sysadminの経験があまりない開発者にとってAWSを使いやすくします。AWSで自動スケーリングアプリケーションを設計するための「補助輪」と考えてください。

于 2013-01-14T18:26:34.257 に答える