multi-tenant SaaS の三層キャッシュ:CDN、Redis、バージョンによる invalidation
Redis を追加するのは話の一部にすぎません。読み取り負荷はエッジで止めるべきであり、single-flight はキャッシュ切れのときに database へクエリが殺到するのを防ぎます。そして Cache-Control を一行置き間違えるだけで、プライベートなデータが漏れることがあります。
ドキュメントをまとめ直しただけの記事ではありません。Z-SOFT が自社開発する multi-tenant(複数の企業が一つのシステムを共有し、 データは完全に分離される)SaaS プロダクト、Z-Cloud Workspace・Z-Auto・Z-EDU の開発と運用のなかで下したアーキテクチャの判断、 実際に踏んだ失敗とその対処を、そのまま書き残しています。
Redis を追加するのは話の一部にすぎません。読み取り負荷はエッジで止めるべきであり、single-flight はキャッシュ切れのときに database へクエリが殺到するのを防ぎます。そして Cache-Control を一行置き間違えるだけで、プライベートなデータが漏れることがあります。
動画プレーヤーは受講者ごとに 15 秒おきに進捗 ping を送ります。受講者が増えるにつれ、この小さな書き込みがデータベースに大きな圧力をかけることがあります。本稿では、Redis を使って書き込みをまとめた方法と、集約のルールがアプリケーションコードではなく SQL の中になければならない理由を述べます。
記事を読む : write-behind:20回の ping を 2回のデータベーストランザクションにデータ漏洩は、複雑な攻撃から始まるとは限りません。tenant の条件が欠けたクエリ、誤って cache された route、あるいはブラウザにしかない権限チェックから起こり得ます。この記事では、権限、署名付き URL によるアップロード、サーバーの時計、そして fail-open の判断を順に見ていきます。
記事を読む : multi-tenant SaaS のセキュリティ:データはどこから漏れるのかauto scaling は最適化されていない設計を勝手に直してはくれません。instance を増やす前に、不要な仕事をリクエスト経路から外し、付随的な仕事を queue に移し、CPU だけを見るのではなく滞留した仕事量でアラートを鳴らす必要があります。
記事を読む : 高負荷対策と auto scaling:instance を増やす前に直すことDDoS はボタン一つでは止められません。本記事では Z-SOFT が使っている防御層を見ていきます。OpenResty での IP 制限と Slowloris 対策の timeout、エッジのキャッシュ、JWT 認証より先に走る rate limit、そして多くのカウンターが fail-open を選ぶ理由。
記事を読む : 多層 DDoS 対策:インフラからアプリケーションまでrequest が失われるのは、サーバーが足りないからではなく、新しい instance が準備できていないのに traffic を受け取ったり、古い instance が仕事を抱えたまま止められたりするからです。saturation、p99、readiness probe から graceful shutdown と rolling update までを解説します。
記事を読む : 負荷の監視と無停止 scale:何を測り、何をするか?Z-SOFT は、業務要件のヒアリングとアーキテクチャ設計から、セキュリティレビュー、長期的な運用まで、 高負荷に耐える企業向けシステムの設計・開発・運用を一貫して手がけています。
開発チームに相談する