技術記事

マルチテナント分離:二つの有効な答え

Omnitech CRMにおけるフェイルクローズ方式のモデル層分離と、IMFlow360における行単位のテナンシー——同じ問いに対する、二つの有効な答え。

マルチテナント分離:二つの有効な答え イラスト
技術記事

あらゆるマルチテナントSaaSプラットフォームは、同じ問い——単一の共有コードベース上で、あるテナントのデータを他のテナントからどのように分離しておくか——に答えなければなりませんが、正しい答えはプラットフォームのリスクプロファイルによって異なります。Omnitech CRMとIMFlow360という二つのプラットフォームは、この問いにそれぞれ異なる形で答えており、どちらの答えも、それぞれのプラットフォームが必要とするものに対しては正しい答えです。

01

実績の読み方

大まかに見た二つの分離戦略

マルチテナントプラットフォームは一般に、テナントごとに別々のデータベースを用意する、テナントごとに別々のスキーマを用意する、あるいはアプリケーション層でテナント識別子によってスコープされた共有テーブルを用いる、といったいくつかの層のいずれかでテナントを分離します。それぞれコストも障害モードも異なり、これらの戦略間のトレードオフについてはAWSのSaaSテナント分離に関するガイダンスが有用な公開参考資料となります(後述の出典を参照)。Omnitech CRMとIMFlow360はいずれも共有テーブル・アプリケーション層強制型の分離を採用していますが、その強制の仕方は異なります。

02

実績の読み方

Omnitech CRM:モデル層およびクエリ層におけるフェイルクローズ

Omnitech CRMは、キューイングされたバックグラウンド処理を含め、モデル層およびクエリ層においてフェイルクローズ方式でテナント分離を強制しています。クエリにテナントスコープが欠落している場合、テナント間漏えいのリスクを冒すのではなく、リクエストそのものを失敗させます。22のビジネスモジュールにまたがる126の権限からなる中央権限レジストリは、この分離層とは意図的に切り離されており、テナントを分離する役割を担うコードパスには一切触れることなく、ロールごとの権限を広げたり狭めたりできます。

03

実績の読み方

IMFlow360:業種によって差別化された行単位のテナンシー

IMFlow360は、関連はするものの異なるアプローチを採っています。行単位のマルチテナンシーによってすべてのレコードがビジネスと支店単位でスコープされる一方、コードベースを分岐させるのではなくbusiness_typeフィールドによって、小売、飲食、美容/サロン/スパ、予約制ビジネスのカタログ、注文、ワークフローの挙動を差別化しています。これら4つの業種はすべて、約146テーブルからなる一つの共有スキーマ上で稼働します。分離の境界線自体はOmnitech CRMと同じ共有テーブル方式ですが、違いは、IMFlow360がテナントデータを分離するためだけでなく、ビジネスの挙動を差別化するためにも同じスコープ機構を利用している点にあります。

04

実績の読み方

本当の教訓

アイソレーション戦略は、プラットフォームのリスクプロファイルに応じて早期に一度だけ下される基盤的な決定であり、その上に重ねられる権限システムとは別の決定です。どちらのプラットフォームも、共有テーブルに対してアプリケーション層でアイソレーションを強制しています。テナント境界のみに厳密に限定したフェイルクローズ型の強制と、テナントごとの挙動の違いも担う行単位のスコーピングとの違いは、各プラットフォームがそのスコーピング機構にアイソレーションそのものを超えて何を求めていたかによって決まります。

出典

リファレンス

根拠

この記事の背景にあるケーススタディ

オムニテック CRM プロジェクトのイラスト

オムニテック CRM

フェイルクローズ方式のテナント分離、スコープ設定可能な権限、構成可能なパイプライン、リードのコンバージョン、レガシーデータ移行を備えたマルチテナントCRM兼収益管理プラットフォーム。

IMFlow360 プロジェクトのイラスト

IMFlow360

Laravelクラウドとオフラインファーストで動作するFlutter製POS、そして連動する顧客向けディスプレイを組み合わせたマルチテナントSaaS型POSプラットフォームで、小売、レストラン、サロン/スパ、予約制ビジネスを1つの連携システムから提供します。

関連サービス

マルチテナントSaaSアーキテクチャ →

Let's build what's next

Have a complex system that needs to be built right?

Whether you are starting from an idea, replacing an existing platform, or scaling a system, let's talk.

Better Technology.
Brighter Possibilities.