2026.04 - 재직중
멀티테넌트 예약 SaaS
하나의 코드베이스로 N개 시설의 예약 사이트를 서브도메인별로 제공하는 멀티테넌트 SaaS. 프론트엔드 아키텍처·보안 설계부터 단독 구축.
- 역할
- 프론트엔드 아키텍처·보안 설계 (단독 구축)
- Next.js
- React
- TypeScript
- Tailwind CSS
- BFF
문제
시설마다 브랜딩·약관·문구가 달라 코드로 분기하면 시설이 늘어날 때마다 코드가 증식하고, 브랜딩 전환 시점에 FOUC가 발생한다. 또한 예약 식별정보를 URL에 그대로 노출하면 개인정보 유출 리스크가 생긴다.
해결
- 시설 간 차이를 설정 JSON으로 분리하고 3단 deep-merge로 병합
- 요청 Host 헤더를 서버에서 해석해 CSS 변수를 SSR 단계에서 인라인 주입
- 예약 식별정보를 AES-256-GCM 봉인 토큰(TTL 10분)으로 인계, URL 평문 노출 제거
- BFF 프록시로 API 키를 서버사이드에 은닉하고, 외부 HTML 새니타이즈로 XSS 차단
- 결제 연동, 등록 실패 시 결제 자동 취소로 과금-미예약 불일치 차단
- 외부 상태 라이브러리 없이 RSC + URL 상태 + 경량 Context로 설계, 핵심 로직은 Vitest로 커버
효과
- 신규 시설 추가 시 코드 변경 0줄
- 브랜딩 전환 FOUC 0, 예약 식별정보 URL 평문 노출 0
- 하드코딩 값을 디자인 토큰화해 120개 → 6개로 축소