更新日:07/11/2023
[Salesforceコラム]
本質志向のアーキテクチャ視点
マルチテナントアーキテクチャの
仕組みをのぞいてみよう
この記事を書いた人
JSOL認定プロフェッショナル(ITアーキテクト)、ITストラテジスト
Salesforce認定テクニカルアーキテクト(CTA)、16x Salesforce 認定資格
飯田 博記
技術リーダーとして、Salesforce導入プロジェクト、活用・定着化支援案件に参画。システム基盤領域の経験を軸に、顧客業務から基盤までわかるアーキテクトを目指す。共著に「アプリケーションの安定稼動を実現する システム基盤の統合ノウハウ」(日経BP)
以前に紹介した記事「ガバナ制限」はなぜ起こる?制約の背景を理解し付き合う方法では、Salesforceがマルチテナントアーキテクチャを採用していること、マルチテナントを実現するためにガバナ制限と呼ばれるルールが設けられていることを紹介しました。
私、飯田は、Salesforceのアーキテクトを目指すコミュニティグループ Salesforce Architect Group の共同リーダーとして運営に参加しています。先日開催した勉強会でも、Salesforceのマルチテナントアーキテクチャとその仕組みを取り上げました。良い点・留意点、具体的な仕組みについて、こちらの記事でも紹介させていただきます。
マルチテナントアーキテクチャとはどのようなものか、について、「複数のユーザーが共通のシステムやプラットフォームを利用する仕組み」と紹介しました。ここでは具体的にイメージしやすいよう、身近なもの、例えば住居に例えてみます。「シングルテナント:一戸建て」と「マルチテナント:集合住宅」と、イメージしてみると、それぞれの良い点、留意点はどのようなところでしょうか。
※わかりやすさのために一戸建てと集合住宅とを取り上げましたが、それぞれ優れている点があります。いずれかを否定するものではありませんのでご了承ください。
◆ マルチテナント:集合住宅 の良い点
マルチテナントは準備されたひとつのリソースを共有するといえますので、マンションのような集合住宅と考えてみます。
集合住宅の場合はあらかじめ設計・施工されていて、準備されている環境があり、すぐに入居できることはよい点と言えそうです。共用の玄関やインターネットの設備なども、自分で準備せずとも利用できます。監視カメラ、管理人さんなどのセキュリティもあると安心です。設備の維持には継続的なメンテナンスが必要ですが、管理会社が維持管理してくれるので利用者は気にしないでも大丈夫そう。
◆ マルチテナント:集合住宅 の留意点
良い点が多くあるマルチテナントですが、留意すべき点はないでしょうか。同じように集合住宅に照らしてみると、このような点には気を付けたほうがよさそうです。
共用サービスの利用には費用がかかりますし、利用にあたっては定められたルールを守る必要があります。みんな共同で利用しますので、好き勝手に、とはいかないですね。部屋の間取りも決まっていますし、リフォーム(カスタマイズ)できる範囲は限定的、となりそうです。
Salesforceに置き換えてみると、「標準機能が充実している」「セキュリティ機能が提供される」「すぐに利用できる(Sandboxなどの開発環境もすぐに利用できます!)」という良い点がある一方で、「ガバナ制限を守らないといけない」「カスタマイズできる範囲や方法が決められている」という留意点があります。
私は、良い点をたくさん享受して、留意点とうまく付き合っていくには、仕組みを知っておくことが助けになると考えています。
マルチテナントを実現するためのプラットフォームの仕組みはどのようになっているのでしょうか。データベース、アプリケーションとそれぞれ工夫がなされています。ここではデータベースに着目してみます。
◆ 一般的なデータベースの場合
一般的なデータベースではデータを格納するために、テーブル、項目、主キー、インデックス(索引)、外部キー(参照整合性)、といった要素を準備します。
Salesforceの場合も、テーブルに似たものとしてオブジェクトを作りますし、オブジェクトには項目も定義します。それぞれ似ているように思いますが、どんな点が異なるのでしょうか。順に見ていきましょう。
◆ Salesforceのアーキテクチャの場合
1.オブジェクト・項目の作成
Salesforceのオブジェクトは、データベースのテーブルに似ています。
一般的なデータベースでは、テーブルを作成すると物理的な領域が確保されたのですが、Salesforceではメタデータが作成される点が異なります。
メタデータとは、メタ的なデータ、すなわちデータについてのデータを意味します。具体的には、オブジェクトの名前やAPI参照名など、「オブジェクトについてのデータ」が情報として登録されます。
項目も同様で、項目の名前、API参照名、型、大きさなど、「項目についてのデータ」が情報として登録されます。
では、Salesforceの場合は実際のデータはどこに格納されるのでしょうか。
Salesforceの場合は、データを格納するためのテーブルがあらかじめ用意されています。汎用的に設計されており、ひとつのテーブルに様々なオブジェクトが格納できるように工夫されています。例として、このような項目があらかじめ用意されています。
これをみると、込み入った仕組みとなっているように思えてしまいます。なぜこのような方法がとられているのでしょうか。私はこれが、Salesforceが画面でオブジェクトを作成したり、項目を追加・変更したりできる秘密なのだろうと思っています。
一般的なデータベースのような、物理的な領域の割り当てには一定の時間がかかりますし、変更する場合にはすでにあるものをロックする必要も出てきます。Salesforceでは物理的な領域を準備することなく、論理的な設定(メタデータ)で定義することから、柔軟な対応ができるのです。
2.インデックス(索引)の作成
では次に、検索用のインデックス(索引)を作成する場合をみてみます。
一般的なデータベースでは任意の項目にインデックスを作成することができます。Salesforceではあらかじめインデックス(索引)が作成される項目が決まっています。主要な項目は以下のとおりです。
これ以外のインデックスは自由に作ることはできません。インデックスが必要な場合は、カスタムインデックスの作成をSalesforce社に依頼することになります。
作成されるインデックスも独自の形式です。Salesforceの場合はマルチテナント、すなわち複数の組織、複数のオブジェクトのレコードが同じテーブルに登録されますので、単純にデータベースのインデックスを作成することはできません。そのため、該当の項目をコピーした、インデックス用のデータが作成されます。
このように、マルチテナントで利用できるためのさまざまな工夫がなされています。 柔軟性、信頼性、セキュリティが得られる一方で、そのための内部での処理も必要となりますので、その特性を理解して活用することをお勧めします。
今回の記事で紹介したSalesforceのプラットフォームの仕組みには、 Salesforce Architects のサイトで Platform Multitenant Architectureとして紹介されています。今回は取り上げられなかったアプリケーションレイヤについても触れられています(英語です)
また、7月に開催されるSalesforce World Tour Tokyo(2023/7/20-21) では、Trailblazer Forestのシアターで、今回紹介したマルチテナントの仕組みについても紹介します。ぜひ会場でお会いしましょう。
2023年7月20日(木)Day 1 セッション番号 1-TFT-12
ガバナ制限でつまずかないために!マルチテナントの仕組みをのぞいてみよう
JSOLはSalesforce World Tour Tokyo のブレイクアウトセッションスポンサーです。
シチズンマシナリー様とSalesforce World Tour Tokyo 2023 に登壇!
この記事に関連のあるタグ