レイヤーがテナントの詳細を隠す
あらゆる SaaS アーキテクチャにおける目標の 1 つとして、デベロッパーにテナントの詳細を意識させないことがあります。サーバーレス SaaS 環境では、デベロッパーの視野外でマルチテナントのポリシーを実装できる、共有コードを作り出すための方法として、Lambda レイヤーを使用できます。
図 3 は、これらのマルチテナントの概念を実現するために Lambda レイヤーをどのように使用できるのかの例を示しています。ここで、ログと指標のデータを発行する必要がある、2 つの異なるマイクロサービス (生産と注文) があります。重要な点として、両方のサービスが、テナントのコンテキストをログメッセージと指標イベントに挿入する必要があります。しかし、各サービスにこれらのポリシーをそれぞれ実装することは理想的ではありません。代わりに、このデータの発行を管理するコードを含むレイヤーを導入しました。
図 3: Lambda レイヤーがテナントの詳細を隠す
レイヤーに、JWT トークンを受け入れるログと指標のヘルパーが含まれていることがわかります。これにより、マイクロサービスがどのテナントを取り扱っているのかを心配することなく、各マイクロサービスがシンプルにこれらの機能を呼び出し、トークンを供給できるようになります。その後、レイヤー内で、コードが JWT トークンを使用してテナントのコンテキストを解決し、ログメッセージと指標イベントに挿入します。
これは、テナントのコンテキストを隠すためにレイヤーを適用する方法の一例にすぎません。テナントのコンテキストを挿入するためのポリシーとメカニズムを、デベロッパーは一切意識しなくてよいことに真の価値があります。これらはまた個別に更新、バージョン管理、デプロイされます。遅延とボトルネックの原因となる恐れがある個別のマイクロサービスを導入することなく、環境内でこれらのポリシーをさらに中央的に管理できるようになります。