スケーラビリティのためのSansanアプリケーション基盤

投稿者: | 7月 29, 2016

Sansanの和田さん(chocolamint)でSIer8年やってからSansanにJoinした人です。

DBの水平・垂直分散を実施しています。

メッセージ基盤として、Pub-Sub型の分散処理基盤です。キューイングサービスを利用しています。

DBの分散

共通のデータベースでシャードマップ情報を管理している。

アプリは最初にシャードマップ情報をみたあと、メインのデータベースに接続するようにする。Sansan.Dataで、ShardingScopeみたいなメソッドでシャーディングを隠蔽化している。

メッセージングサービス

従来は統一的な非同期処理基盤はなくて、Webアプリのボタンクリックで数分かえってこない。非同期処理するには、個別にバッチ開発が必要となる。タスクスケジュラーでポーリングしていた。同時実行できない…。

バッチの効果的な対策のためにメッセージ基盤を開発!

マルチスレッド(16並列)対応なのでスケールしやすい。1プロセス内でマルチスレッドによる並列処理をしていて、キューの種類ごとに並列処理数を調整可能。

自動リトライできて、複数回のexponentialな自動リトライ。冪等性を担保している。

セマフォで並列数を制御しているので負荷が安定する。キューの対流を監視可能で、グラフでモニタリングできる。SaaSでアラームを定義できるので滞留を監視できる。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください