Mastodonの構成の話。
ちいさなサーバは、VPSを一つ借りて、必要なプロセスを一つずつ起動して実行しています。
nginx、puma、sidekiq、node、postgresql、redisってとこかな。
nginxが外からのAPIアクセスや連合のリクエストを受け付けて、背後で実行しているMastodonのアプリケーションサーバであるpuma(mastodon-web)に処理を依頼します。
pumaは受け付けた内容を、その場で応答するものと、バックグラウンド処理にまわすものにわけます。
バックグラウンド処理は、小さなジョブに分割し、種類毎に順番待ちの列に突っ込んで、sidekiqプロセス(mastodon-sidekiq)が処理を行います。
pumaやsidekiqは、ユーザーにリアルタイムに知らせるべき内容をredisにpublish(発行)しておきます。
それをnode(mastodon-streaming)のプロセスが、現在subscription(購読)しているユーザーに対し、サーバ側からクライアント側に次々と流していきます。タイムラインがリアルタイム更新されていく仕組みです。