본문으로 건너뛰기

모듈 분류 체계

📝 초안 (Draft)

이 문서는 검토 중입니다. 내용이 변경될 수 있습니다.

Core 모듈의 분류 체계와 관리 원칙을 설명합니다.

개요​

Multi-SaaS Kit의 모듈은 필수성, 활성화 시점, 수익화 여부에 따라 세 가지 계층으로 분류됩니다.

┌─────────────────────────────────────────────────────────────┐
│ 모듈 분류 체계 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Core Base (15개) │ │
│ │ • 필수: 모든 프로젝트에 반드시 필요 │ │
│ │ • 비활성화 불가 │ │
│ │ • 수익화 대상 아님 │ │
│ └─────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Extensions (4개) │ │
│ │ • 선택적: 프로젝트별로 활성화 │ │
│ │ • 프로젝트 생성 시 결정 │ │
│ │ • 수익화 대상 아님 │ │
│ └─────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Plugins (18개) │ │
│ │ • 완전 선택: 런타임에 토글 가능 │ │
│ │ • 독립 패키지 │ │
│ │ • 수익화 대상 (유료 판매) │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘

분류 비교​

구분Core BaseExtensionsPlugins
위치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 SanctumAPI 토큰, 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 LimitingAPI 요청 제한-
Tenant Security테넌트 컨텍스트 관리Tenant 모듈
Security Monitoring권한 거부/침입 탐지 로깅-

4. Core Infrastructure (4개)​

모듈설명
SaasProduct1:N SaaS 구조 지원
Chief/Sub AdminUserPermission 기반 세밀한 권한
Menu Permissionconfig 기반 메뉴 권한 자동화
Background JobsQueue + Horizon 기반

Extensions (4개)​

Core에 포함되지만 프로젝트별로 선택적으로 활성화합니다.

Extension설명적합 프로젝트문서
Guardian보호자-피보호자 관계LMS, 교육, 의료Guardian
Impersonate사용자 전환고객지원, B2BImpersonate
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

프로젝트 유형별 권장​

프로젝트GuardianImpersonateAdmin OverrideFeature Visibility
일반 SaaS❌✅❌✅
LMS/교육✅✅❌✅
의료/헬스케어✅✅✅✅
금융/핀테크✅✅✅✅
E-Commerce❌✅❌✅

Plugins (18개)​

런타임에 토글 가능한 확장 기능으로, 유료 판매 대상입니다.

티어별 분류​

티어설명개수예시
L0 독립Core만 의존7개TwoFactorAuth, PasswordPolicy
L1 복합Core + L0/Extensions 의존4개Notification, ActivityLog
비즈니스수익화 핵심4개Subscription, Invoice
엔터프라이즈대기업 특화3개SSO, DataExport

주요 플러그인​

플러그인설명가격
TwoFactorAuthTOTP + SMS 2차 인증$9/월
PasswordPolicy계층별 비밀번호 정책무료
Subscription구독 결제 관리$19/월
Invoice청구서/세금계산서$15/월
Analytics사용량 분석 대시보드$12/월
SSOSAML/OAuth 통합 인증$29/월
DataExport대량 데이터 내보내기$9/월

폴더 구조​

packages/
├── core/ # Core 모듈
│ ├── Base/ # 필수 Core (15개)
│ │ ├── Permission/ # 권한 분류 (Level 0~6)
│ │ ├── Tenant/ # 테넌시
│ │ ├── Auth/ # 인증
│ │ ├── Audit/ # 감사 로그
│ │ ├── Security/ # 보안
│ │ └── ...
│ │
│ ├── Extensions/ # 선택 Core (4개)
│ │ ├── Guardian/ # 보호자 관계
│ │ ├── Impersonate/ # 사용자 전환
│ │ ├── AdminOverride/ # 긴급 권한
│ │ └── FeatureVisibility/ # 기능 가시성
│ │
│ ├── Contracts/ # Interface 정의
│ ├── Providers/ # ServiceProvider
│ └── config/ # core.php
│
└── plugins/ # Plugins (18개)
├── TwoFactorAuth/
├── Subscription/
├── Analytics/
└── ...

프로젝트 연결​

workspace/_template/web/app/
├── Core → ../../../../packages/core # 심볼릭 링크
└── Plugins → ../../../../packages/plugins

분류 판단 기준​

새 기능 추가 시 분류 판단:

Core Base 여부​

□ 모든 프로젝트에 반드시 필요한가?
□ 비활성화하면 시스템이 동작하지 않는가?
□ 플랫폼의 핵심 인프라인가?
→ YES: Core Base

Extensions vs Plugins​

□ Core 기능과 밀접하게 연관?
YES → Extensions 후보
NO → Plugins

□ 프로젝트 생성 시 결정해야 하는 기능?
YES → Extensions
NO → Plugins

□ 런타임에 동적 토글이 필요?
YES → Plugins
NO → Extensions

□ 유료 판매 대상?
YES → Plugins
NO → Extensions (Core에 포함)

관련 문서​