とあるIT屋の独白

ITや経営について主に書きます

マルチテナントとは何か

自社でサービスなど開発するときに、マルチテナントでの構成を検討するケースも珍しくなくなってきてるのかなと、個人的に感じています。今回はこのマルチテナントについて、取り上げてみます。
まずマルチテナントとは何か。システムのサービスを提供する上で、例えばAmazonのサイトのようにユーザが同一サイトを使用する前提なら、単一のサーバを用意すれば事足りますが、Salesforceのように顧客ごとにデータを保有する形が異なる場合、どうしようかとなるわけです。ユーザ毎にサーバを用意してもよいのですが、それだとインフラコストがばかにならないので、なんとかユーザでインフラを共有して使えないかということで、マルチテナントという構成が案として挙げられるわけです。

【マルチテナント 【multi-tenancy】】
http://sp.e-words.jp/w/%E3%83%9E%E3%83%AB%E3%83%81%E3%83%86%E3%83%8A%E3%83%B3%E3%83%88.html

では、実際にマルチテナントでどのような構成案が考えられるかというのが、以下のマイクロソフトの記事にまとまっています。アプリケーションを共通化してDBだけテナント毎に分けるのか、はたまたDBも共通化してしまうのか、といった観点で検討していく感じになるのかなと思います。

【マルチテナント SaaS データベース テナント パターン】
https://docs.microsoft.com/ja-jp/azure/sql-database/saas-tenancy-app-design-patterns

以下がワークフローのサービスを提供しているエイトレッド社の例。この例ではDBをシャーディングして、テナント識別子を付与してデータを分離してます。特に負荷の分散について気を使っていて、マルチテナントになると、あるユーザにリソースが集中したりするので、いかに他のユーザに影響を与えないかという点を考慮されていますね。

【マルチテナントアーキテクチャを選択する場合の設計の勘所とは?【デブサミ2019夏】】
https://codezine.jp/article/detail/11647