のえる on Nostr: ...
さて、ある程度の大きさのサーバになったら、これらのプロセスを複数用意して、よりたくさんの処理を捌けるように構成する必要があります。
nginxは、pumaが複数あるときには、処理を分散して引き渡す役割を果たします。応答してこないpumaがあったら他に割り振ることで、全体が一度にダウンしないようにする安全を担保する役割も果たしています。
sidekiqは、元々小さなジョブに分割された処理を実行するエンジンなので、たくさんあれば、それだけ同時にたくさんの処理ができます。
ジョブは種類でわけられているので、種類別のsidekiqを立てて、役割を分割することができます。
一番大事なローカルユーザーに応答する処理と、リモートサーバに配送する処理、リモートサーバから受けたリクエストに対応する処理など、別々にわけることで、負荷が高くなったときに、どの処理を優先し、どの処理に処理能力を配分するか、調整することもできます。
nodeは、redisの発行と購読の仕組みのおかげで、プロセスをたくさん起動しても、分散して対応することができます。
redisは、役割に応じて3つまで分割できます。最近は、redisの冗長化機能も使えるようになったようです。
nginxは、pumaが複数あるときには、処理を分散して引き渡す役割を果たします。応答してこないpumaがあったら他に割り振ることで、全体が一度にダウンしないようにする安全を担保する役割も果たしています。
sidekiqは、元々小さなジョブに分割された処理を実行するエンジンなので、たくさんあれば、それだけ同時にたくさんの処理ができます。
ジョブは種類でわけられているので、種類別のsidekiqを立てて、役割を分割することができます。
一番大事なローカルユーザーに応答する処理と、リモートサーバに配送する処理、リモートサーバから受けたリクエストに対応する処理など、別々にわけることで、負荷が高くなったときに、どの処理を優先し、どの処理に処理能力を配分するか、調整することもできます。
nodeは、redisの発行と購読の仕組みのおかげで、プロセスをたくさん起動しても、分散して対応することができます。
redisは、役割に応じて3つまで分割できます。最近は、redisの冗長化機能も使えるようになったようです。