---
title: サイボウズのマルチテナント指向のデータベースプラットフォーム
tags:  #saas #マルチテナント  
author: [サイボウズ開発本部](https://docswell.com/user/cybozu-tech)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/V7PKGGNNJ8.jpg?width=480
description: 2026-09-30 マルチテナントSaaSのインフラアーキテクチャ設計 https://saas-harbor.connpass.com/event/405903/ で発表した、飯塚 翔の資料です。
published: September 30, 26
canonical: https://docswell.com/s/cybozu-tech/ZX2N2P-2026-09-30_multi-tenant-saas
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/V7PKGGNNJ8.jpg)

サイボウズのマルチテナント指向の
データベースプラットフォーム
2026.09.30
1


# Page. 2

![Page Image](https://bcdn.docswell.com/page/2JVV66KYJQ.jpg)

発表者について
クラウド基盤本部 Datastore 部 DBRE チーム
飯塚 翔
データを持っているミドルウェアを担当する部署で、
データベースを見ているチームに所属しています
2


# Page. 3

![Page Image](https://bcdn.docswell.com/page/5EGLNNQWJL.jpg)

サイボウズが提供する SaaS (cybozu.com)
について
「チームワークあふれる社会を創る」という企業理念のもと、チームワークを支援するための
製品を提供しています
契約社数（≒ テナント数） 71,000 社
3


# Page. 4

![Page Image](https://bcdn.docswell.com/page/4JQYQQKQ7P.jpg)

DBRE チームの役割
この規模のマルチテナント SaaS のためのデータベースプラットフォームを
提供しています
MySQL をオンプレミスのプライベートクラウドの Kubernetes 上で運用
運用自動化のためのコントローラー MOCO を開発し、OSS で公開
https://github.com/cybozu -go/moco
データベースをセットアップするだけで終わらず、
マルチテナント SaaS のための付加機能をつけて提供しています
4


# Page. 5

![Page Image](https://bcdn.docswell.com/page/K74WNNPYE1.jpg)

1
cybozu.com のデータパーティショニングモデル
2
テナントプロビジョニングのリアーキテクト
3
B2B SaaS としてのインシデントコミュニケーション
5


# Page. 6

![Page Image](https://bcdn.docswell.com/page/LJ1Y559NEG.jpg)

1. cybozu.com の
データパーティショニングモデル
6


# Page. 7

![Page Image](https://bcdn.docswell.com/page/GJWG55NM72.jpg)

データベースのパーティショニングモデルの分類
database
tenant_id col1 col2 …
tenant_1
tenant_2
database (tenant_1)
tenant_1
database (tenant_2)
tenant_1
1. アイテムレベルの分離
2. スキーマレベルの分離
3. インスタンスレベルの分離
7


# Page. 8

![Page Image](https://bcdn.docswell.com/page/4EZLNN3M73.jpg)

cybozu.com ではスキーマレベルの分離を採用
サイボウズはもともとパッケージ製品の会社
1
• お客様が社内のオンプレサーバーのインストールして利用
• マルチテナント前提で作られていない製品に、あとから tenant_id を
追加して SQL を全て修正するのは困難が伴う
サイボウズの事業のターゲットを考慮
2
• SMB のお客様を中心にして事業が成長してきた
• インスタンスレベルの分離はインフラコストが高価で、
テナントあたりの単価を高めに設定しないといけなくなってしまう
8


# Page. 9

![Page Image](https://bcdn.docswell.com/page/Y76W88X57V.jpg)

さらにシャーディングモデルを採用
テナント1
テナント2
テナント3
テナント4
テナント5
テナント6
テナント7
テナント8
テナント9
• ひとつのインスタンスに全テナントを収容するのは不可能
• データ量、CPU 、…
• 数百インスタンス に分散して収容するための MySQL のリソースプールを運用
9


# Page. 10

![Page Image](https://bcdn.docswell.com/page/G75M99XG74.jpg)

SaaS のビジネスモデルとシャーディングモデルの相性
テナントごとに
お支払いいただける料金
テナント数
SaaS の事業成長はテナント数とテナントあたりの単価の2つの軸がある。
テナント数の増加に対してはシャーディングモデルはリニアにスケールアウトできる。
10


# Page. 11

![Page Image](https://bcdn.docswell.com/page/9J2922XDER.jpg)

NewSQL などスケーラブルな技術を使う？
数百インスタンスの運用は大変なので、正直うらやましい部分はある
ただし、スケールアウトを実現するために払っている追加のコストとして…
• 性能あたりのインフラコスト
• 分散して整合性をとるのに生じるレイテンシ
などのネガティブ要素もある。
シャーディングモデルはインスタンスレベルのスケールアウトに制限がある代わりに、
インフラコストやレイテンシはリーズナブル
11


# Page. 12

![Page Image](https://bcdn.docswell.com/page/DEY4YY8MJM.jpg)

シャーディングモデルに対する苦言
“これは理想的なモデルとはほど遠く、SaaS 環境に複雑さと余計な手間を加える
ことになります。ただし、ワークロードやビジネス要件によっては、これを合理的
なトレードオフとみなすことができるため、ここで紹介しました。”
マルチテナントSaaS アーキテクチャの構築 (2025) p.205
確かに、
• 新しいテナントをどのシャードに配置するのか？
• あるテナントはどのシャードに収容されているのか？
といった複雑さが持ち込まれている
次のチャプターへ
12


# Page. 13

![Page Image](https://bcdn.docswell.com/page/VJNYPPQ378.jpg)

2. テナントプロビジョニングの
リアーキテクト
13


# Page. 14

![Page Image](https://bcdn.docswell.com/page/YE9P33DPJ3.jpg)

SaaS 固有のコンポーネント
書籍「マルチテナントSaaS アーキテクチャの構築」 (2025) による指摘
• アプリケーションプレーン： 顧客が使う SaaS アプリケーションそのもの
• コントロールプレーン： SaaS プロバイダーの管理アプリケーション
• テナントのライフサイクル管理（作成、削除）
• 請求
テナントの作成処理（プロビジョニング）では以下のような処理が必要
• データベースのスキーマを作成する、ユーザーを作成して権限を付与する、CREATE TABLE 、……
• ほかのミドルウェアやマイクロサービスにも同様の初期化が必要なことも
14


# Page. 15

![Page Image](https://bcdn.docswell.com/page/GE8DMM3XED.jpg)

プロビジョニングの旧実装
あるチームが全製品のプロビジョニング処理をすべて担当するスクリプトを書いていた
データベース
オブジェクトストレージ
init-app
依存マイクロサービス①
依存マイクロサービス②
長年このやり方で頑張ってきたが、事業拡大についていけないということでリアーキテクト
15


# Page. 16

![Page Image](https://bcdn.docswell.com/page/LELM33VN7R.jpg)

各プロダクトのプロビジョニングをサポートするコンポーネントの開発
• プロダクトごとのプロビジョニングの詳細は各プロダクトチームに委譲する
• DBRE チームからは、データベースの初期化処理をサポートするコンポーネント
(mysql - tenant - service ) を開発して提供
CreateTenant
数百インスタンスある MySQL のリソースプールから空いているインスタンスを
探してきてスキーマ作成、ユーザー作成、権限付与
Resolve
あるテナントがどのインスタンスに収容されているのか返す
ListTenants
あるインスタンスに収容されているテナントの一覧を返す
リソースプランニングへの影響
新しいテナントにどのインスタンスに収容するのか振り分けるバランシングのロジックは、
リソースプランニングの重要な要素。 DBRE チームに集約してコスト最適化を図りたい
16


# Page. 17

![Page Image](https://bcdn.docswell.com/page/4JMYDDGQJW.jpg)

3. B2B SaaS としての
インシデント・コミュニケーション
17


# Page. 18

![Page Image](https://bcdn.docswell.com/page/PJR944ZK79.jpg)

シャーディングモデルでの障害の起こり方
シャーディングモデルでは、障害はインスタンス単位で発生することが多い
テナント1
テナント3
テナント2
テナント4
テナント5
テナント6
テナント7
テナント8
テナント9
• 爆発半径 (Blast Radius) が小さいのはメリット
• 誰が影響を受けているのか分かりにくいのが課題
18


# Page. 19

![Page Image](https://bcdn.docswell.com/page/PEXQ2295JX.jpg)

cybozu.com 稼働状況サイトの提供
cybozu.com が使えなかったらこのページをご覧いただき、
ご自身のテナントで障害が発生していないかご確認いただく使い方を想定
19


# Page. 20

![Page Image](https://bcdn.docswell.com/page/3EK9MMPRED.jpg)

DBRE チームの監視と稼働状況サイトの連携
VictoriaMetrics
GET /metrics
monitor
read/write
Alertmanager
オンコール担当
20


# Page. 21

![Page Image](https://bcdn.docswell.com/page/L73WYYXG75.jpg)

DBRE チームの監視と稼働状況サイトの連携
VictoriaMetrics
GET /metrics
monitor
read/write
Alertmanager
Webhook
オンコール担当
稼働状況サイト
ListTenants
mysql-tenant-service
21


# Page. 22

![Page Image](https://bcdn.docswell.com/page/87DK552NJG.jpg)

まとめ
1. cybozu.com のデータパーティショニングモデル
• スキーマ分離を採用
• シャーディングモデルは現状の事業にとっては合理的な選択と考えている
2. テナントプロビジョニングのリアーキテクト
• mysql -tenant -service の提供によってシャーディングモデルがもたらす複雑さを吸収
3. B2B SaaS としてのインシデントコミュニケーション
• 監視を DBRE チームだけに閉じず、顧客向けの稼働情報サイト向けとも連携
22


