피드로 돌아가기
I open-sourced my SaaS starter — here's the part I didn't
Dev.toDev.to
Backend

DDD 기반 Multi-tenant SaaS 구조의 표준화 및 모듈형 추상화

I open-sourced my SaaS starter — here's the part I didn't

sean brydon2026년 4월 25일2intermediate

Context

반복적인 SaaS 초기 구축 단계에서 발생하는 공통 기능 구현의 비효율성 해결 필요. 단순한 보일러플레이트를 넘어 확장 가능한 도메인 모델과 권한 체계의 표준 아키텍처 정립을 목표로 함.

Technical Solution

  • Bounded Context, Repository, UnitOfWork, EventBus를 적용한 DDD 레이어드 아키텍처 설계를 통한 도메인 복잡도 제어
  • Workspace를 Root Primitive로 설정하고 PBAC(Policy-Based Access Control) 기반의 Workspace/Team 이중 스코프 권한 검증 미들웨어 구현
  • Framework 간 최저 공통 분모 추상화를 배제하고 TanStack Start와 Next.js App Router 각각의 관용적 코드 구조를 유지하는 전략 채택
  • BillingProvider, FileStorage, Mailer 등 인터페이스 포트를 정의하여 Stripe, UploadThing, Resend 등 외부 어댑터를 유연하게 교체하는 구조 설계
  • Prisma를 기본으로 하되 Repository 인터페이스 공유를 통해 Drizzle로의 ORM 전환이 가능한 추상화 계층 구축

- SaaS 설계 시 Workspace를 최상위 엔티티로 설정하여 Multi-tenancy 격리 수준 정의 - 외부 서비스 의존성을 제거하기 위해 Port-Adapter 패턴을 적용한 인프라 계층 분리 - 프론트엔드 프레임워크 변경 가능성을 고려하여 UI 라이브러리와 비즈니스 로직의 물리적 분리 검토 - 복잡한 권한 제어를 위해 서버 미들웨어와 클라이언트 훅(useCan) 간의 권한 동기화 메커니즘 구축

원문 읽기