巨大で無停止の決済サービスを作るアーキテクチャをぼんやり考えてみた
昭和の最後の正月まであと少しなので、巨大で無停止で超高負荷に耐えれる低コストな決済機能を作るアーキテクチャを考えてた
前提
日本の決済サービスとかじゃなく、アリペイを1から作るならって考えた(決済ルールが似てる奴・・・ACHとか・・・ならこれでいける気がする)。
アクティブなユーザが相当数いないとベースのコストが高くて大変そう
アリペイ並の低コスト決済サービスが出来るとは一言も言ってない
サーバ構成
A群:全体をコントロールする為のサーバ群、単時間ならダウンしても良い程度
B群:DB,MQ,APサーバ,LBから構成されるサーバ群、通常B群はユーザと1:Nで紐付く
C群:基本的にWebベースのサーバ群、フロントアプリから呼ばれたりする
D群:巨大ストレージサーバ
ポイント
全サーバをダウンする前提にすること
独立したB群を必要なだけM個配置すること
B群のフェイルオーバーを各レイヤでやること
B群のDBサーバを含むサーバ群をOSSで固めることで低コスト化
バージョンアップとかサーバの入れ替えはまるっと落とせる!(ダウン前提なので)
ソフトウェア的な事
C群がB群にアクセスするときA群(のキャッシュ)に問い合わせて宛先を決める
B群はフェイルオーバーに備えてフェイルオーバー先のMQにデータのコピーを送り込み続ける
A群はB群をかなりの高頻度で動作確認して問い合わせ先テーブルを更新する
C群はB群のサーバから一定時間レスポンスがなければ再処理する
B群のサーバは同じリクエストIDの情報が複数来たら必ずパスする
感想
なんか作れる気はする。
作りたいかどうかは別だし、ビジネス的な所の方が面倒だけどw