본문으로 건너뛰기

Multi-SaaS Module System

MSK는 하나의 Laravel 플랫폼에서 여러 SaaS를 운영하거나, 각 SaaS를 독립 프로젝트로 분리할 수 있는 표준 구조를 제공합니다.

2-레이어 분리

레이어위치생성 방법의미
파일시스템app/Sites/{StudlyName}/saas:makeroutes, controllers, views, models, migrations 등 코드
DB 레코드saas_productssaas:installPlatform Admin에서 관리되는 비즈니스 엔티티

폴더만 있고 DB 레코드가 없으면 Platform 관리페이지에 SaaS가 표시되지 않습니다. 신규 SaaS 추가 시 saas:makesaas:install을 실행합니다.

미러사이트와 독립사이트

MSK는 도메인별 사이트 운영 방식을 다음 용어로 구분합니다.

용어설정구현 범위사용 기준
미러사이트settings.custom_theme같은 route/controller 유지, Blade/브랜딩만 오버레이로고, 푸터, 색상, 일부 화면만 다른 경우
독립사이트settings.site + app/Sites/{StudlyName}routes/controllers/views/필요 시 모델까지 분리사이트 구조, 기능, 운영 경계가 다른 경우

독립사이트는 이 SaaS 모듈 구조를 사용합니다. 미러사이트는 Core ViewThemeResolverresources/views/saas/{theme}resources/views/tenants/{theme}를 우선 탐색하는 방식입니다.

표준 폴더 구조

app/Sites/{StudlyName}/
├── site.json
├── routes.php
├── Controllers/
├── Models/
├── Services/
├── Filament/Resources/
├── Providers/{Name}ServiceProvider.php
├── database/migrations/
├── database/seeders/
├── resources/views/
├── resources/lang/
└── config.php

운영 모드

모드구조적합한 경우
Integrated한 프로젝트의 app/Sites/에 여러 SaaS 폴더 배치개발 실험, 통합 운영, 리소스 공유
Isolated프로젝트마다 하나의 SaaS 폴더 운영독립 배포, 별도 SLA, 규모/규정 경계 필요

saas:extractsaas:import로 통합 모드와 분리 모드 사이를 전환할 수 있습니다.

Platform 관리 표면

메뉴역할
SaaS ProductsSaaS Product DB 레코드와 기본 설정 관리
Tenant Domains & SitesTenant별 도메인, 미러사이트, 독립사이트 설정 현황 확인 및 수정
Help Pages관리페이지별 상단 설명과 ? 도움말 모달 편집

Tenant Domains & Sites의 도움말은 Help Pages에서 panel=platform, page_key=tenant-domains.index로 관리합니다.

관련 문서