9. 大半は口座の一貫性での問題
◦ ステートレス処理系でありたい vs. メモリキャッシュ実装
◦ e.g. 入金処理 → 口座状態変化 → 口座単位キャッシュどう破棄する?
◦ 〃 マスタに情報追加→マスタキャッシュどう更新する?
◦ バッチ中の日付参照、マスタ参照をどこでこなすか
• オンライン分離しバッチ処理プロセス内部で持たせるテクニックも
◦ KVSでpub/subなど類似の通知機能? 整合性観点で銀の弾丸ではない
CC BY-SA 4.0
9
Web Tier
AP Tier
Ext. Cache Tier
In Proc.
Ext Proc. file
In Proc.
Ext Proc.
OutputCache.
DB/KVS
当然だけど(接続プール前提として)
RDBMS参照前提で動くモノ作って
負荷を見ながら調整したほうが楽。
その際、モノシリックに書かず
役割・機能で多層化しておく。
SQL Server だと
クエリ通知とかあるが…
Pub/Subで通知する?
変更時外部キャッシュを
消してしまう?
口座情報だと結構しんどい話になる
14. プログラムを部分的に動的に差し替えたい
◦ その設計、無停止・瞬断レベルでの切替は可能?
◦ クラウド時代はブルーグリーンデプロイは視野に
• とはいえ、コンテナ型ならともかく、単なる IaaS では厳しい現実
◦ 部分デプロイを可能にするミドルウェア?基盤設計で担保?
• Windows での DLL 環境や .NET 環境なら、やりようは結構ある
CC BY-SA 4.0
14
Front サイド
Front サイド
Front サイド
Front サイド
Front サイド
Front サイド
Load Balancer外部
Load Balancer
内部LB
Front サイド
Front サイド
Front サイド
Front サイド
Front サイド
AP サイド
ここは ^^^ 比較的楽な事が多い
Ngix/ HAProxy でも Big IP でも機能あるし
クラウドLBでも対応可能だったりする
(というか InProc セッションは使わない前提)
ここは ^^^ 設計が難しい
A/A構成が理想だけどキャッシュ・ステート管理次第
AP正副構成を設計するけど状態異常が起こりやすい
(死んでると誤認して双方に投げてキャッシュ状態異常)
22. 情報系処理の概要
◦ 期待する処理能力にあわせてひたすらばらす
◦ TCP同期的でもソケットバッファで調整は可能
◦ 外部ストレージIOがある非同期だとキツい
◦ 非同期メッセージング使っても滞留してたら負け、同期的処理で勝て
るように作る
CC BY-SA 4.0
22
Data
Store
(永続的)
配信
管理
受信
G/W
外部
処理系
受信
G/W
配信
管理
Data Writer
Data Writer
Data
Store
(メモリ)
Data Writer
Data Writer
エレメントをフィルタリングしたり配信先を変えたり
ストリーミング的な処理も担う ↓ ケースもある
多段実装ケースが
大半