🚨 문제 상황

<aside>

BFF 패턴을 처음 도입하면서 기존과는 다른 방식의 역할 분리가 필요했습니다.

기존 프로젝트에서는 API 명세서 작성 시 기능별로 누가 무엇을 개발할지 분류하는 방식으로 충분했습니다. 그러나 BFF · Core 서버 구조에서는 단순히 기능을 나누는 것이 아니라 어느 서버가 어떤 로직을 처리할지에 대한 역할 경계가 필요한 전혀 다른 영역이었습니다.

실제로 아래와 같이 회의록 데이터를 누가 저장하는지에 대한 혼선이 팀 채팅에서 발생하기도 했습니다.

</aside>

Bff-Core서버_문제상황.png

🔍 문제 원인

<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 직접 연결