makotan _at_ gmail dot com

巨大で無停止の決済サービスを作るアーキテクチャをぼんやり考えてみた

昭和の最後の正月まであと少しなので、巨大で無停止で超高負荷に耐えれる低コストな決済機能を作るアーキテクチャを考えてた

前提

日本の決済サービスとかじゃなく、アリペイを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