Skip to main content

모듈 분류 체계

📝 초안 (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에 포함)

관련 문서