この記事は、intra-mart Advent Calendar 2013 第19日の記事です。
AdventCalendarの新機軸!?=我がチーム担当機能の宣伝の一環「認可機構(im-authz)の紹介シリーズ」は、ここぞとばかり まだまだ続きますよー。(聞こえてますかー、北陸の貴方〜)
今回は、パフォーマンス向上に欠かせないキャッシュについて。
どこでどのような情報がキャッシュされているのかをご紹介いたします。
intra-mart Accel Platformでは、新たに搭載された認可機構(im-authz)によりきめ細かなアクセス制御が可能になりました。
im-authz は、画面やデータ、各サービスにおける権限チェックを統括して行うため、あらゆる機能から使用される機能です。
しかし、認可の判断結果が確定するまでには多くの処理があり、各処理においてファイルやデータベースへのアクセスが発生します。
例えば、intra-mart Accel Platform にログインした後に表示されるグローバルナビや、各機能へのリンクを表示するサイトマップでは、アクセス権限のあるリンクのみを表示しているため、各リンクごとに認可の判断処理が行われます。
ここでは、メニューを例として、認可が行われるまでの処理の流れを紹介します。
intra-mart Accel Platformでは、アクセス制御の判断を高速化するために、大きく以下の4つについてキャッシュしています。
-
ルーティング設定のキャッシュ
- メニューアイテムに登録されている「URL+引数」を「リソースURI」「アクション」に変換するマッピングをキャッシュします。
-
リソースグループ設定のキャッシュ
- 「リソースURI」を「認可リソースグループ」に変換するマッピングをキャッシュします。
-
リソース閉塞状態のキャッシュ
- 「認可リソースグループ」1件あたりの閉塞状態をキャッシュします。
-
ポリシー設定のキャッシュ
- 「認可リソースグループ」「認可サブジェクトグループ」「アクション」から取得した「ポリシー」の状態をキャッシュします。
このようにして、intra-mart Accel Platformでは、各処理のうちデータの更新頻度が低く、参照頻度が高いものについて、キャッシュを利用して高速化しています。
認可に関するキャッシュの詳細は、認可仕様書 の 認可のキャッシュ設定 をご参照ください。
なお、上述の2, 4 は、intra-mart Accel Platform をインストールした直後の状態では、画面・処理 (service) のリソースタイプのみキャッシュが行われます。他のリソースタイプでキャッシュを行う場合は、別途設定が必要です。
リソースタイプごとのキャッシュ設定については、「設定ファイルリファレンス」の「 リソースタイプ拡張設定 」および「 認可ポリシーキャッシュ対象設定 」を参照してください。
その他、 intra-mart Accel Platform上でのキャッシュに関する情報は以下をご参照ください。
これら資料には、キャッシュするオブジェクトの単位 や キャッシュサイズを見積もるための計算式も記載しております。
実際に運用されるシステムのデータ容量やアクセス頻度・傾向を元に、適切なサイジングを行っていただければと思います。