Sansanの和田さん(chocolamint)でSIer8年やってからSansanにJoinした人です。
DBの水平・垂直分散を実施しています。
メッセージ基盤として、Pub-Sub型の分散処理基盤です。キューイングサービスを利用しています。
DBの分散
共通のデータベースでシャードマップ情報を管理している。
アプリは最初にシャードマップ情報をみたあと、メインのデータベースに接続するようにする。Sansan.Dataで、ShardingScopeみたいなメソッドでシャーディングを隠蔽化している。
メッセージングサービス
従来は統一的な非同期処理基盤はなくて、Webアプリのボタンクリックで数分かえってこない。非同期処理するには、個別にバッチ開発が必要となる。タスクスケジュラーでポーリングしていた。同時実行できない…。
バッチの効果的な対策のためにメッセージ基盤を開発!
マルチスレッド(16並列)対応なのでスケールしやすい。1プロセス内でマルチスレッドによる並列処理をしていて、キューの種類ごとに並列処理数を調整可能。
自動リトライできて、複数回のexponentialな自動リトライ。冪等性を担保している。
セマフォで並列数を制御しているので負荷が安定する。キューの対流を監視可能で、グラフでモニタリングできる。SaaSでアラームを定義できるので滞留を監視できる。