아키텍처 개요
📝 초안 (Draft)
이 문서는 검토 중입니다. 내용이 변경될 수 있습니다.
Multi-SaaS Kit의 전체 아키텍처를 설명합니다.
핵심 개념
멀티 레벨 구조
Platform (플랫폼)
└── SaaS (서비스)
└── Tenant (테넌트/고객사)
└── Organization (조직)
└── Workspace (워크스페이스)
└── Team (팀)
└── Member (사용자)
권한 시스템 (Level 0~6, ADR-058)
| Level | 명칭 | 역할 |
|---|---|---|
| 0 | Platform Admin | 플랫폼 전체 관리 |
| 1 | SaaS Admin | 특정 서비스 관리 |
| 2 | Tenant Admin | 테넌트/고객사 관리 |
| 3 | Org Admin | 조직 관리 |
| 4 | Workspace Admin | 워크스페이스 관리 |
| 5 | Team Leader | 팀 관리 |
| 6 | Member | 일반 사용자 |
기술 스택
┌─────────────────────────────────────────┐
│ Filament Admin Panel │
├─────────────────────────────────────────┤
│ Laravel 12 │
├─────────────────────────────────────────┤
│ PostgreSQL + RLS │
├─────────────────────────────────────────┤
│ Docker │
└─────────────────────────────────────────┘
| 계층 | 기술 |
|---|---|
| Frontend | Filament 4, Livewire 3 |
| Backend | Laravel 12, PHP 8.3 |
| Database | PostgreSQL 17 + RLS |
| Cache/Queue | Redis |
| Container | Docker Compose |
데이터 격리
Row-Level Security (RLS)
PostgreSQL RLS로 테넌트 데이터 완벽 격리:
-- 자동 필터링
SELECT * FROM orders;
-- → WHERE tenant_id = current_tenant_id 자동 적용
격리 수준
| 수준 | 방식 |
|---|---|
| 논리적 | RLS (Row-Level Security) |
| 물리적 | 별도 DB 스키마 (옵션) |
프로젝트 독립성
각 프로젝트는 완전 독립:
workspace/project-a/ # 독립 소스
workspace/project-b/ # 독립 소스
data/projects/project-a/ # 독립 데이터
data/projects/project-b/ # 독립 데이터
- 별도 Docker 컨테이너
- 별도 PostgreSQL 인스턴스
- 별도 Redis 인스턴스
- 별도 포트 매핑
배포 아키텍처
workspace/ # 개발 소스
↓
releases/ # 릴리즈 스냅샷
↓
live/ # 프로덕션 심볼릭 링크
↓
nginx # 웹 서버
심볼릭 링크 전환으로 무중단 배포 및 즉시 롤백 지원.