<aside>
BFF 패턴을 처음 도입하면서 기존과는 다른 방식의 역할 분리가 필요했습니다.
기존 프로젝트에서는 API 명세서 작성 시 기능별로 누가 무엇을 개발할지 분류하는 방식으로 충분했습니다. 그러나 BFF · Core 서버 구조에서는 단순히 기능을 나누는 것이 아니라 어느 서버가 어떤 로직을 처리할지에 대한 역할 경계가 필요한 전혀 다른 영역이었습니다.
실제로 아래와 같이 회의록 데이터를 누가 저장하는지에 대한 혼선이 팀 채팅에서 발생하기도 했습니다.
</aside>

<aside>
기능별 담당 서버와 처리 흐름을 명확히 정의한 개발 규칙 문서를 작성하였습니다.
서버 역할 분리
| 구분 | NestJS (BFF) | Spring Boot (Core) |
|---|---|---|
| 역할 | 클라이언트 요청 처리 · 인증 · 실시간 기능 | 비즈니스 로직 · DB 저장 및 접근 |
| 인증 | OAuth2 소셜 로그인 · JWT 검증 | JWT 토큰 발급 · 저장 · 삭제 |
| 실시간 | WebSocket · Redis Pub/Sub · SSE | - |
| 데이터 | 응답 가공 · 민감 정보 필터링 | 원본 데이터 반환 |
주요 처리 흐름 정의
토큰 처리 | 인증은 BFF, 발급 · 저장 · 삭제는 Core
파일 처리 | 파일 → BFF → Core → S3 → DB(UUID 반환)
회의록 처리 | AI → BFF → Redis Stream → Core → DB
실시간 수어 | 클라이언트 ↔ AI 직접 연결