運用
作成日時:2025-07-22
更新日時:2025-07-26
カスケード障害
システムの一部で発生した障害が連鎖的に波及し、システム全体に影響を及ぼす現象を指す。
2021年のみずほ銀行みたいなやつ。
サーキットブレーカー
障害発生時にタイムアウトまで待たせず、即遮断する。
キャッシュスタンピード/ドッグパイル
キャッシュが切れた時、オリジンへ大量のアクセスが発生すること。
対策
- 事前に再生成
- 取得のシングルトン。ロック掛けて順番に再生成。
ZOZOTOWNリニューアルで実施したCache Stampede対策 - ZOZO TECH BLOG
タイムアウト
タイムアウトしても処理は続く。
クライアントに返しただけで、バックは継続。
検索結果が多すぎて応答が遅い場合
下記の方法がある。
- 一般的なページング。ページリンクを押したら、オフセット使用して取得する。
- 検索結果を既定の件数で打ち切り、それ以降の情報が欲しければ、検索条件を指定するように促す。
- 規定件数 + 1でLIMITして、件数 = 規定件数 + 1ならば、超えているという判定。
- 検索条件を必須にする。
- chunkById
ストラングラーパターン
システム移行戦略「レガシーミミックパターン」&「ストラングラーフィグパターン」とは? - Qiita
ファサードを建てて、ルーティングを切り替える。
ストラングラーフィグパターンとフィーチャーフラグによる段階的かつ安全な移行方法について - Mirai Translate TECH BLOG
フィーチャーフラグはコード上だけでなく、インフラ上での切り替えもできる。
リバプロ、サイドカーにおけるプロキシ、ファサードにおいてどこかからフラグを取得して切り替えるのもあり。
インフラ
基本的に機能はどこのサーバーに置いてもいい。
- SSL終端
- プロキシ
- WAF
- LB
SSL終端をLBにやらせたりサーバーにやらせたり。
WAFに金がかかるならWEBサーバーに入れれば?ModSecurityとか
ProxyによるIPの隠蔽
高負荷回避
DB
別のDBなどに保存して、後で反映。
- Redis:速い
- NoSQL:高負荷得意
- Queue
AP
制限設けて429を返すとか。
ログ抑止
Apache
ErrorLog nul
CustomLog “/dev/null” common
ログ出力
当然ながら大量に書き込むとパフォーマンスは低下する。
しかもそれが並列プロセスから書き込みされるならば、1時間単位で処理が遅くなったりする。
書き込み待ちとかで。
ログ
- 冗長なログはディスクを圧迫
- 構造化ログ→JSON, key-value
- 追跡可能性のあるログ