v1.0 완성, 그리고 갈아엎기로 결심한 날
358개 테스트, 30개 테이블, 6개 Controller까지 완성한 v1.0. 기획 검토 한 번에 핵심 구조가 통째로 바뀌었다. Block에서 Bundle로, 갈아엎기로 결심하기까지의 기록.
358개 테스트, 30개 테이블, 6개 Controller까지 완성한 v1.0. 기획 검토 한 번에 핵심 구조가 통째로 바뀌었다. Block에서 Bundle로, 갈아엎기로 결심하기까지의 기록.
DDD 3계층 위에 REST API Controllers를 올리는 과정. Use Case 단위로 6개 컨트롤러를 분리하고, ApplicationModule로 조립하고, 27개 단위 테스트로 검증한 실전기록.
로컬 PostgreSQL에서 잘 되던 E2E 테스트가 Cloud SQL에서 전멸한 이야기. session_replication_role 미지원, 테이블 이름 케이스 불일치, 스키마 필드 누락까지 — 4/8에서 8/8 passing으로 가는 과정을 기록한다.
NestJS + Prisma 프로젝트에서 Jest 테스트 인프라를 처음부터 세팅한 기록. 단위/통합 설정 분리, Test Data Factory 패턴, PrismaService Mock 전략, 그리고 mockResolvedValue 타입 오류까지.
NestJS에서 TypeScript interface를 DI 토큰으로 쓸 수 없는 이유와, 인터페이스 의존을 구현체 의존으로 전환한 커밋 하나의 기록. 이론적 DDD와 프레임워크 현실 사이의 실용적 타협.
교육용 SaaS 백엔드에 DDD 3계층 구조를 도입한 과정. PrismaService 직접 호출에서 Repository 패턴, Domain Service, Application Service로 분리하기까지 4개 커밋에 걸친 아키텍처 전환 실전기.
B2B SaaS 플랫폼의 RBAC 인가 체계를 설계한 과정. 4역할 계층 구조, 리소스별 권한 매트릭스, Multi-tenancy 격리 전략, NestJS Guard/Decorator 구현까지 — 권한 설계 문서 1,292줄이 코드가 되기까지의 기록.
전체 테이블 CUID String PK에서 Mixed ID Strategy(User=CUID, Master=Int, Transaction=BigInt)로 전환한 과정. BigInt JSON 직렬화 버그를 만나고, Junction Table을 다시 Int로 다운그레이드한 첫 번째 스키마 리팩토링 기록.
B2B SaaS 백엔드의 Prisma 스키마를 설계한 과정. 인증 → 조직 → 러닝 코어 → 트래킹 순서로 27개 테이블과 15개 enum을 만들면서 겪은 설계 결정과 실수들을 기록합니다.
Express vs NestJS, TypeORM vs Prisma. B2B SaaS 백엔드를 만들면서 기술 스택을 고르기까지의 과정과 첫 커밋 이야기.