現在、AWS から大規模な Rails アプリを実行しており、非常に満足しています。以前は、常に問題を引き起こしていた多くの専用ボックスがありました.遅かれ早かれそのうちの1つが何らかの理由でクラッシュし、Raidの失敗、データベースの問題など.
AWS では、データベースに RDS、キャッシングにエラスティック キャッシュを使用しています。ステージング サーバーとして機能するファット インスタンスにすべてのコードを保持し、可変数の予約済みインスタンスを取得して、NFS 経由でコードをロードします。
自動スケーリングも使用しています。多数の予約済みインスタンスを前払いしており、自動スケーリングは、CPU 使用率が 60% を超えたときにノードを起動し、25% を下回ったときにノードを削除するのに役立ちます。自動スケーリング ルールは、インスタンスの特定のグループ、memcache サーバーなどを監視するように設定できる cloudwatch アラートに基づいています。たとえば、100 を超えるインスタンスの場合など、特定のスケーリング アクティビティが発生したときに、SNS 経由で電子メールや SMS 通知を受け取ることさえできます。 1 時間以内にスパムされます (大量のトラフィック スパイク)。ちなみに、インスタンスはロードバランサーにも追加されます。非常に便利なスティッキーセッション機能を使用できるため、セッションストアをいじる必要はありません。
最近、スポット インスタンスを含む 2 番目の起動グループも使用し始めました。これは、クラウドウォッチ ルールの点で少し複雑ですが、スポット価格がはるかに低いため、毎月多くの費用を節約できます。入札したスポット価格 (最低額) が十分でない場合、私が持っているセットアップはリザーブド インスタンスに戻ります。
さらに最近では、アプリのページアセットを非常に高速にロードする CloudFront の使用も開始しました (約 2 メガバイトの CSS、JS、いくつかのアイコンスプライト)。以前は、ロード バランサーを介してインスタンスから直接サービスを提供していました。
パフォーマンスと可用性を最大化するための展開、テスト、調整に約 20 時間かかりました。
私が AWS で抱えている問題の 1 つは、料金を支払う準備ができていない限り、サポートがないことです。彼らは、一部のサポートはサブスクリプションなしで提供されると主張していますが、サポート領域の唯一のオプションは請求です. ハ。幸いなことに、すべてが十分に安定しており、私がそれを支払わなければならない状況に陥ることはありません.
全体として、Rails は AWS と非常にうまく調和しています。以前は 30 時間以上費やしていたメンテナンスに費やす時間は、月に 2 時間未満です。私にとって最も重要なことは、何も問題を引き起こさないことを知って X か月間休暇中に GTFO を実行できることを知っていることです。監視アラートは 1 年以上発生していません。
後の編集: アプリはホワイト ラベル機能を備えたスポーツ サイトであり、多くのユーザー、バックエンドでコンテンツに取り組んでいる多くの管理者、数秒ごとに更新される市場価格データを表示するためのデータベース集約型です。データベース、memcache、ストレージ、負荷分散、Web アプリなど、ほぼ同じことを行っていた専用サーバーで、ページあたりの平均読み込み時間は約 3 秒でした。今、私の平均は1秒未満です。毎月の請求額は現在、約 8 分の 1 です。