はじめに
システム開発第一事業部の安彦です。少人数の案件でPM兼エンジニアとしてWebアプリ開発をしています。
今回は、社内で実施した「マルチテナントSaaSアーキテクチャの構築」輪読会の内容を紹介します。
1月に発売された書籍だったので、最新の構成を知れると思い飛びつきましたが、内容が深く、半年近くかけてじっくりと議論を重ね、ようやく読み終えることができました!
本輪読会のきっかけと形式
本輪読会のきっかけは、マルチテナント 1 SaaSを経験したり、興味を持つエンジニアが増えていると感じたことでした。輪読会という形式なら、ハードルの高いオライリー社の本書にチャレンジできると思い、メンバーを募ることにしました。
募集を始めると、たまたま本書を持っているメンバーや、業務で課題を抱えているメンバーなど、興味を持ってくれた人が集まり、多いときには7人ほどが参加してくれました。
輪読会は、毎週各章を読み、事前に感想を議事録に記載し、当日はその内容をもとにディスカッションする形式で進めました。業務の都合で事前に読めない場合もあったため、Gemini Canvas を活用して各章の要点をまとめて冒頭でおさらいする工夫も好評でした。

本編
それでは、各章ごとに輪読会の内容を紹介します。
第1章:SaaSマインドセット
この章では、マルチテナントSaaSの根本的な思想を学びました。
SaaSはビジネスモデルそのものであり、オンボーディングから運用までを一元管理するサービスです。
輪読会での感想を紹介します。
- SaaSという形態をとる以上、ビジネス的な観点が重要なのだと理解できた
- 売り切り型のソフトとは異なり、ビジネス的な観点が強く求められる
- 開発者という立場でSaaSによって組織の目標を解決するには、組織のビジョンを理解しておく必要があると思った
- SaaSの目的である俊敏性や運用効率は、AWSでも常に強調されている点なので親しみを感じた
第2章:マルチテナントアーキテクチャの基礎
この章では、マルチテナントSaaSがコントロールプレーンとアプリケーションプレーンの2要素で構成されることを学びました。
コントロールプレーンはオンボーディングや請求といった共通機能を、アプリケーションプレーンはテナントが利用する本機能を提供します。
輪読会での感想を紹介します。
- ファイアウォールはどちらの要素に配置されるのかなど、セキュリティはどんな構成になるのか気になる
- メトリクスや請求などコントロールプレーンの要素の一部に外部サービスを使うことはあるのだろうか?
- データ分離の概念は分かったので、はやく「9章 テナント分離」が読みたい
- テナント毎のシステム利用料の請求について、計算方法や徴収方法を知りたい
第3章:マルチテナントのデプロイモデル
この章では、デプロイモデルにサイロ型とプール型があることを学びました。
サイロ型はテナント毎に専用のリソースを持つ形、プール型は複数のテナントが同じリソースを共有する形です。
輪読会での感想を紹介します。
- RDBでテナント毎にスキーマ作るサイロ型の経験があるが、デプロイ時間など運用コストが高い印象でした
- コンピューティング/ストレージそれぞれのリソースごとに構成を変えたりとハイブリット型も現実的な選択肢だと知れた
- サイロ型の語源は農場のサイロであり、農作物を種類ごとに分けて保存することが由来らしい
第4章:オンボーディングとアイデンティティ
この章では、マルチテナントSaaSの構築は、オンボーディング、アイデンティティから着手すべきだと学びました。
オンボーディングとは、新規テナントをシステムに登録するプロセスです。
アイデンティティとは、ユーザーとテナントを識別するための仕組みです。
輪読会での感想を紹介します。
- 後から重要な要素を追加しようとすると、大幅なコスト増加になるという主張が理解できた
- オンボーディングでは、請求プロバイダーとの連携を非同期化することでボトルネックを回避できることが分かった
- テナント情報もJWTトークンに含めることで、システム最上位のアイデンティティ構造を実現できるという点が印象的
第5章:テナント管理
この章では、テナントのデータやライフサイクルをどう管理するかについて学びました。
特にテナントライフサイクルの概念は新たな知見が多く、テナントの作成から廃止や無効化の際に考慮すべき点が多いです。
輪読会での感想を紹介します。
- テナントライフサイクルという概念が新鮮だった
- テナントの無効化/廃止時にプロビジョニング解除ができていないと、無駄なコストにつながることはハッとさせられた
- テナントデータは頻繁にアクセスされ、柔軟なスキーマ設計やスケーラビリティが求められるため、NoSQLデータベースが向いているという点が興味深かった
第6章:テナントの認証とルーティング
この章ではテナントをどう認証し、どのようにルーティングするかについて学びました。
認証では、JWTトークンにテナント情報を含めることでテナントを識別し、外部IDプロバイダーとの連携にも触れていました。
ルーティングでは、サブドメインやバニティドメイン、共通ドメインの使い方が紹介されていました。
輪読会での感想を紹介します。
- サーバレスやk8sでのルーティング構成では、API GatewayとLambdaをどう組立てるか具体的でイメージしやすかった
- バニティドメインを使う場合、オンボーディング時のドメイン取得も自動化できるのか気になった
- フェデレーション認証の構成も具体的で、これも実務で参照できそうだと感じた
第7章:マルチテナントサービスの構築
この章では、アプリケーションプレーンの構成の種類や、気を付けたいポイントについて学びました。
内容は多岐にわたり、マイクロサービスやデプロイモデルとの関係、ノイジーネイバー問題、ログにテナント情報をどう含めるかなどを扱っていました。
輪読会での感想を紹介します。
- ノイジーネイバー問題への対応として、処理が集中するリソースを切り出して分割する対策があるというのは、確かにと思った
- プール型では各テナントの負荷分析のため、メトリクス収集が不可欠だと感じた
- 実務で触れている部分も多く、実際に使っている技術への理解が深まった
第8章:データパーティショニング
この章では、ストレージリソースにテナントデータをどう配置するか学びました。
NoSQLから始めて、ビジネスの状況に合わせてRDBに移行するという筆者の推奨構成や、ワークロード、SLA、顧客体験を元にストレージ戦略を決定する重要性が説明されました。
輪読会での感想を紹介します。
- RDBでデプロイモデルがハイブリット型でも、テーブル構造は統一するべきという主張が印象的
- ストレージがサイロ型でもテナント分離の要件を満たせるかは別問題である点は、テナント分離の章で詳しく知りたい
- DB をテナントのまとまりごとにシャーディングする手もあり、理想とは乖離するが合理的
第9章:テナント分離
この章では、テナントの境界を越えてサービスにアクセスすることを防ぐためのテナント分離の方法について学びました。
分離の手法は大きく分けて、フルスタック、リソースレベル、アイテムレベルの3つがあり、それぞれのメリット・デメリットが説明されていました。
輪読会での感想を紹介します。
- 3つの分離レベルはそれぞれ、ドメイン、コンピューティングリソース、ストレージリソースで実装するものと解釈できた
- どのレベルで分離するかは案件によって選択が異なることが分かった
- 前章と合わせて、実装時にできるだけテナント分離を意識せずに開発できると、きれいに分離できていそうだと思った
第10章:EKS SaaS
この章では、Kubernetesを使ったマルチテナントSaaSの構築方法について学びました。
EKSとマルチテナントは親和性が高いこと、また、Helm/Argo/Fluxを組み合わせたCI/CD構築の方法が説明されました。
輪読会での感想を紹介します。
- スケーリングやデプロイの自動化に強みがあることが分かった
- 実務では一定規模のサービスでないと採用しづらいため、ぜひ触ってみたいと思った
- デプロイモデルごとの構成方法も具体的で、触れたことが無い技術だったがイメージしやすかった
第11章:サーバーレスSaaS
この章では、Lambdaなどのサーバーレスサービスを使ったマルチテナントSaaSの構築方法について学びました。
10章と目的が一致していること、API Gatewayを使ったサイロ型/プール型モデルでの構成方法が説明されていました。
輪読会での感想を紹介します。
- EKSでもLambdaでも、テナントアクティビティに合わせてインフラコストや使用量を柔軟にスケールさせたいという目的が共通していることが分かった
- 特徴的なデメリットであるコールドスタートへの対策として、定期的にAPIを叩くのはスマートじゃないと感じる
- コールドスタートがあることで、プール型のレイテンシがサイロ型に勝る場合もありそうなので、ティアリングと合わせて考慮が必要そうだった
第12章:テナントを意識した運用
この章では、マルチテナントSaaSの運用におけるメトリクス収集とビジネス判断の重要性について学びました。
運用では、製品からサービスへとマインドを変えることが重要で、データドリブンなビジネス判断が必要であると説明されていました。
輪読会での感想を紹介します。
- プール型でテナントごとの使用量を把握するのは難しく、ログを適切に分析する必要がありそう
- ティアごとの収益構造を見ると、プレミアムティアの重要性が可視化できる点も印象的だった
- 測定と分析の重要性は、パフォーマンス改善での「推測するな、計測せよ」という言葉を思い出した
第13章:SaaS移行戦略
この章では、既存システムをSaaSへ移行することは、ビジネス上の大きな判断になるため、慎重に戦略を練る必要があると学びました。
SaaSへの移行はオンボーディング/プロビジョニングから始めて、以降はレイヤーごとやマイクロサービスごとに移行していく流れが説明されていました。
輪読会での感想を紹介します。
- いつまでに、どこまでを移行するかによって、工数と収益や顧客からのフィードバック機会が変わるため、ビジネスと技術の両面での判断が必要だと感じた
- 移行を機会に、技術理解を深めることで、ベンダーロックイン回避できる側面もあると感じた
- オンボーディングを後回しにした場合、インフラ構築も手動でやることになるので、SaaSのメリットである俊敏性を失うことが分かった
第14章:ティアリング戦略
この章では、さまざまな価格帯ごとに異なるレベルのサービスを提供するティアリングについて学びました。
ティアリングの設計には、収支を重視したもの、顧客が体験する価値を重視したもの、デプロイモデルをベースにしたものの3つあることが説明されていました。
輪読会での感想を紹介します。
- フリーティアを設ける場合は、ベーシックティアとのノイジーネイバー対策をどう実現するのか気になった
- プロダクトの成長が組織戦略となるProduct-Led Growthの考え方は、まさに技術とビジネスの交差点だと感じる
- 開発者として、ティアリング戦略への理解があると、要件定義や改善提案の精度が上がりそうだと感じた
第15章:SaaS Anywhere
この章では、データやアプリケーションの一部を顧客のリモート環境に配置するSaaS Anywhereについて学びました。
SaaSのメリットを裏返すもので例外的なケースだが、現実的に発生しうることや、具体的な構成について説明されていました。
輪読会での感想を紹介します。
- 金融系や官公庁向けなど、データ保存場所に厳しい要件がある場合によく用いられる印象がある
- 技術者としては頭が痛いことだが、発生しうるケースなので事前に知識を持っておくことが重要だと感じた
- 顧客ごとにバージョン管理が必要になる場合、コーディングレベルでも影響が大きいと思った
第16章:生成AIとマルチテナント
この章では、機能として生成AIを利用したサービスでのマルチテナント構成について学びました。
OpenSearchなどを使ったテナント分離の仕組みや、トークン量によるコスト算出、RAGやファインチューニング、機械学習をどう構成するかについて説明されていました。
輪読会での感想を紹介します。
- 具体的な構成を知ることで、LLMもRDBやAPIサーバと同じように単なるコンポーネントだと理解でき、それぞれに責務があるのだと思った
- サービスごとにデータを持つのではなく、ユーザ自身がベクトルデータを所有しておけばリソースの無駄が減るのではと思った
- AIを直接機能とするサービスは想像しやすいが、内部でAIを利用するサービスにはどんなユースケースがあるのか気になる
第17章:指針となる原則
この章では、これまでの内容を総括し、ビジネスとしてマルチテナントSaaSにどう向き合うかの原則について学びました。
SaaSは単なる技術的な解決策ではなく、組織のビジョン、戦略と密接に結びついたビジネスモデルそのものであることが強調されました。
輪読会での感想を紹介します。
- 本書の思想がうまくまとめられている章になっていて、これだけでも読む価値が大きいと感じた
- ビジネス、市場、顧客をもとに技術選定せよ、という主張はビジネス×技術そのものだと思う
- 運用によって得られる洞察がSaaSを成長させる鍵になることも、これまでの内容で想像できた
読み終えての感想
輪読会に参加したメンバーからの感想をいくつか紹介します。
- 今回の輪読会は、自分の業務を技術的な視点から俯瞰する良いきっかけになった
- 本書の後半はビジネスと強く結びついていて、エンジニアとしてどう向き合うか難しいと感じた
- AIが進化する中で、エンジニアはより抽象的な思考、ビジネス知識、コミュニケーション能力、発想力を磨く必要がある
おわりに
最後までお読みいただき、ありがとうございます。
テコテックの社内輪読会の雰囲気が伝われば幸いです。
ビジネス的な内容も多かったので、本書の主張を体現し、輪読会に技術者だけでなく企画職の方も巻き込んでみたいと思いました。
テコテックの輪読会については以下の記事でも紹介しています。
また、最近は以下の書籍の輪読会も実施しています。私も参加しているので、今後のブログ記事で紹介できればと思います。
テコテックの採用活動について
テコテックでは新卒採用、中途採用共に積極的に募集をしています。
採用サイトにて会社の雰囲気や福利厚生、募集内容をご確認いただけます。
ご興味を持っていただけましたら是非ご覧ください。
tecotec.co.jp
- 本書によると、「複数のユーザーが同一のリソースを共有するモデルや、それらを統一された体験を通じて管理する仕組みを指します」↩