キャッシュ@マイクロサービスアーキテクチャ¶
はじめに¶
本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。
フロントエンド¶
CDN パターン¶
CDN パターンは、クラウドアーキテクチャで採用できるパターンです。
CDN パターンでは、物理的に世界の様々な場所にあるエッジサーバーがキャッシュサーバーとして機能します。
CDN パターンはマイクロサービスアーキテクチャとは直接的な関連性が低いです。
ただ、マイクロサービスアーキテクチャでこれを採用すると仕組みが複雑になるため、概説します。
flowchart LR
クラウドデザインパターン --- CDN
▼ キャッシュ返却処理のシーケンス¶
CDN の仕組みでは、オリジン (フロントエンドアプリ) のダウンストリームに、CDN DNS サーバーとエッジサーバーを配置します。
エッジサーバーのデータセンターは様々な場所にあります。
ブラウザ (PC、スマホ) の送信元からもっとも近いデータセンターにあるエッジサーバーが、静的ファイルのキャッシュを作成し、レスポンスします。
以下のシーケンス図では、マイクロサービスアーキテクチャでの CDN の仕組みを解説しています。
---
title: マイクロサービスアーキテクチャでのCDNの仕組み
---
sequenceDiagram
autonumber
actor ブラウザ (PC、スマホ)
participant ブラウザ (PC、スマホ)
participant ドメインレジストリ (Route53)
participant CDN DNSサーバー
participant エッジサーバー
participant オリジン (フロントエンドアプリ)
participant API Gatewayなど
ブラウザ (PC、スマホ) ->> ドメインレジストリ (Route53): 正引き
ドメインレジストリ (Route53) ->> CDN DNSサーバー: 正引き
CDN DNSサーバー -->> ドメインレジストリ (Route53): IPアドレス
ドメインレジストリ (Route53) -->> ブラウザ (PC、スマホ): IPアドレス
ブラウザ (PC、スマホ) ->> ドメインレジストリ (Route53): リクエスト
ドメインレジストリ (Route53) ->> エッジサーバー: リクエスト
エッジサーバー ->> エッジサーバー: キャッシュ検索
alt キャッシュがあれば
エッジサーバー -->> ブラウザ (PC、スマホ): レスポンス<br>(静的ファイル)
else キャッシュがなければ
エッジサーバー ->> オリジン (フロントエンドアプリ) : リクエスト
end
オリジン (フロントエンドアプリ) ->> API Gatewayなど : リクエスト
API Gatewayなど -->> オリジン (フロントエンドアプリ) : レスポンス<br>(静的ファイル)
オリジン (フロントエンドアプリ) -->> エッジサーバー : レスポンス<br>(静的ファイル)
エッジサーバー ->> エッジサーバー : キャッシュ作成
エッジサーバー -->> ブラウザ (PC、スマホ): レスポンス<br>(静的ファイル)
How CloudFront delivers content - Amazon CloudFront
バックエンド¶
Cache-Aside¶
▼ Cache-Asideとは¶
一度、Read処理したデータをDBとは別のキャッシュストレージに保存しておく。
▼ AWSの場合¶
- Redisを読む
- ミスしたらAuroraのトランザクションで読む
- Amazon AuroraのトランザクションをCOMMIT
- 読み取った結果をRedisへ保存
- 呼び出し元へ返す
Read-Through¶
キャッシュストレージの裏側にDBをおいておく。
まずはキャッシュストレージからデータを取得し、もしキャッシュがなければキャッシュストレージがDBからデータを取得する。