LINE CRM マルチテナント設計

cherimi × Ledian Spa の管理画面統合 / 2026-04-15
cherimi(アパレル)
Ledian Spa(脱毛)

そもそもの3つの選択肢

A
完全別建て採用
サーバー(Worker)もDB(D1)も別物のまま、ログインUIだけ統合
[統合ログイン] ├─ cherimi選択 Worker① → DB① └─ Spa選択 Worker② → DB②
👉 今すでにこの状態。フロントだけ統合工事で済む。事故りにくい。
B
全部1つにまとめる絶対NG
サーバーもDBも1つ。テーブルに tenant_id 列を追加して見分ける
[統合ログイン] 1つのWorker 1つのDB SELECT * FROM users WHERE tenant_id='cherimi'
WHERE句を1回でも書き忘れたら全員に誤配信。取り消し不能。
C
サーバー1つ・DBは別物不要
1Workerに2つのDBバインド、URLで切替
👉 Bよりマシだが、もう分かれてるAをわざわざ統合する理由がない
RECOMMEND

A を採用 + フロント側だけ統合

既存の物理分離を維持したまま、ログインUIだけ1つにする。一番事故らない。

誤配信を絶対起こさない 6層防御

1
物理分離(最重要)
D1・Worker・LINEチャネルトークン・配信ドメインを完全別建てで維持。Workers Secrets は各Worker内に閉じ込め、共有禁止。
2
ドメイン分離(強く推奨)
3
UIガードレール
4
配信フロー
5
サーバー側API
6
認証

見落としがちな事故源

次のアクション

1
ドメイン設計確定(auth / cherimi-crm / spa-crm のサブドメイン取得)
2
Next.js管理画面を auth用ログイン + テナント別ビルドに分割
3
Worker側に「hostnameチェック+session照合」ミドルウェア追加
4
dry-run / Queues猶予 / タイプ確認モーダルを配信フローに組込み
5
テスト用LINEチャネルでSpa側を素通し配信、防御が想定通り効くか検証
cherimi LINE CRM Design Doc / generated 2026-04-15