200msを実現するインフラ
インフラ、サーバ構築を考える上で、必要なのって、
【リクエストに対して、高速、確実にレスポンスを返す】
っていう考え方だと思ってます。
オペレーションとかもそうなんですけど、
バックエンド部分、パフォーマンスとかも考えるから、
多岐にわたるんですよね。
今まで自分が関わってきた、ざっくりとした構成ですけど、
こんな感じ(台数は案件によって、だいぶ変わるかな・・・)
- ロードバランサ
AWSのELBでリバースプロキシに振り分けたりする
- リバースプロキシ
静的ファイル(画像とかCSSとか・・・)をリバースプロキシで返して、
mod_proxy_balancerを使って、キャッシュサーバに振り分ける
- キャッシュ
Varnishでページキャッシュサーバとして構築する
- アプリケーション
Railsのアプリケーションの場合、NginxとUnicornで動作させることが多い。
Apacheだけの時とかもありますけど・・・
- データベース
Mysqlを使用して、2台のマスタに複数台のスレーブを構築して、
レプリケーションさせる。
Railsのアプリケーションでは、ActiveRecordのact_as_readonlyableプラグインを使用して、更新系のクエリは、マスタにアクセスして、参照系はスレーブで動作させる
こんな感じで構築してますとかあれば、
教えてください。業務に取り入れます。