모듈 분류 체계
📝 초안 (Draft)
이 문서는 검토 중입니다. 내용이 변경될 수 있습니다.
Core 모듈의 분류 체계와 관리 원칙을 설명합니다.
개요
Multi-SaaS Kit의 모듈은 필수성, 활성화 시점, 수익화 여부에 따라 세 가지 계층으로 분류됩니다.
┌─────────────────────────────────────────────────────────────┐
│ 모듈 분류 체계 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Core Base (15개) │ │
│ │ • 필수: 모든 프로젝트에 반드시 필요 │ │
│ │ • 비활성화 불가 │ │
│ │ • 수익화 대상 아님 │ │
│ └─────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Extensions (4개) │ │
│ │ • 선택적: 프로젝트별로 활성화 │ │
│ │ • 프로젝트 생성 시 결정 │ │
│ │ • 수익화 대상 아님 │ │
│ └─────────────────────────────────── ──────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Plugins (18개) │ │
│ │ • 완전 선택: 런타임에 토글 가능 │ │
│ │ • 독립 패키지 │ │
│ │ • 수익화 대상 (유료 판매) │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
분류 비교
| 구분 | Core Base | Extensions | Plugins |
|---|---|---|---|
| 위치 | packages/core/Base/ | packages/core/Extensions/ | packages/plugins/ |
| 필수 여부 | 필수 | 선택적 | 완전 선택 |
| 활성화 시점 | 항상 | 프로젝트 생성 시 | 런타임 |
| 비활성화 | 불가 | 가능 (설정) | 가능 (토글) |
| 수익화 | 불가 | 불가 | 가능 |
| 개수 | 15개 | 4개 | 18개 |
Core Base (15개)
모든 프로젝트에 필수적인 시스템 기반 기능입니다.
1. Native Core (3개)
자체 개발한 독자 기술로, 특허 출원 가능한 핵심 기술입니다.
| 모듈 | 설명 | 특징 |
|---|---|---|
| 권한 시스템 (Level 0~6, ADR-058) | Level 0-6 계층 구조 | 플랫폼~멤버까지 7단계 |
| PostgreSQL RLS 통합 | DB 레벨 자동 테넌트 격리 | SQL Injection에도 안전 |
| Dual Redis 전략 | Auth(AOF) + Cache(LRU) 분리 | 인증 데이터 보존, 캐시 효율 |
// 권한 분류 (Level 0~6)
Level 0: Platform Admin // 플랫폼 전체 관리
Level 1: SaaS Admin // SaaS 제품 관리
Level 2: Tenant Admin // 테넌트 관리
Level 3: Organization Admin
Level 4: Workspace Admin
Level 5: Group Leader
Level 6: Member
// PostgreSQL RLS
CREATE POLICY tenant_isolation ON orders
USING (tenant_id = current_setting('app.tenant_id')::uuid);
2. Integrated Core (3개)
Laravel 생태계의 검증된 패키지를 통합합니다.
| 모듈 | 패키지 | 용도 |
|---|---|---|
| 인증 | Laravel Sanctum | API 토큰, SPA 인증 |
| 테넌시 | Stancl/Tenancy v4 | 멀티테넌트 기반 |
| 어드민 | Filament v4 | 관리자 UI |
Spatie Permission 미사용
spatie/laravel-permission은 사용하지 않습니다. Level 0~6 계층 시스템과 RLS 통합에 부적합하며, UserPermission 모델로 대체합니다.
3. Core Base 기능 (5개)
| 모듈 | 설명 | 관련 문서 |
|---|---|---|
| Audit | 모든 변경 감사 로그 | Audit 모듈 |
| Security | 보안 헤더, XSS 방지 | - |
| Rate Limiting | API 요청 제한 | - |
| Tenant Security | 테넌트 컨텍스트 관리 | Tenant 모듈 |
| Security Monitoring | 권한 거부/침입 탐지 로깅 | - |
4. Core Infrastructure (4개)
| 모듈 | 설명 |
|---|---|
| SaasProduct | 1:N SaaS 구조 지원 |
| Chief/Sub Admin | UserPermission 기반 세밀한 권한 |
| Menu Permission | config 기반 메뉴 권한 자동화 |
| Background Jobs | Queue + Horizon 기반 |
Extensions (4개)
Core에 포함되지만 프로젝트별로 선택적으로 활성화합니다.
| Extension | 설명 | 적합 프로젝트 | 문서 |
|---|---|---|---|
| Guardian | 보호자-피보호자 관계 | LMS, 교육, 의료 | Guardian |
| Impersonate | 사용자 전환 | 고객지원, B2B | Impersonate |
| Admin Override | 긴급 권한 우회 | 금융, 규정준수 | - |
| Feature Visibility | 기능 가시성 제어 | A/B 테스트, 롤아웃 | - |
활성화 설정
// config/core.php
'extensions' => [
'guardian' => env('CORE_GUARDIAN_ENABLED', false),
'impersonate' => env('CORE_IMPERSONATE_ENABLED', true),
'admin_override' => env('CORE_ADMIN_OVERRIDE_ENABLED', false),
'feature_visibility' => env('CORE_FEATURE_VISIBILITY_ENABLED', true),
],
# .env
CORE_GUARDIAN_ENABLED=true # 교육/의료 프로젝트
CORE_IMPERSONATE_ENABLED=true # 대부분 활성화
CORE_ADMIN_OVERRIDE_ENABLED=false
CORE_FEATURE_VISIBILITY_ENABLED=true