<aside>
초기에는 NestJS로 백엔드를 통합하는 방안도 고려했으나, 실시간 수어 번역 영상통화 플랫폼 특성상 WebSocket · SSE 등 실시간 기능에 대한 부하가 집중될 경우 단일 서버로는 안정적인 처리가 어렵다고 판단했습니다.
이에 따라 BFF(Backend For Frontend) 패턴을 도입하여 각 서버의 역할을 명확하게 분리하고, 팀원 각자의 기술 스택을 최대한 활용할 수 있는 구조를 설계하였습니다.
</aside>
| 구분 | NestJS (BFF) | Spring Boot (Core) |
|---|---|---|
| 역할 | 클라이언트 요청 처리 · 인증 · 실시간 기능 | 비즈니스 로직 · DB 저장 및 접근 |
| 실시간 | WebSocket · Redis Pub/Sub · SSE | - |
| 인증 | OAuth2 소셜 로그인 · JWT 검증 | JWT 토큰 발급 · 저장 · 삭제 |
| 데이터 | 응답 가공 · 민감 정보 필터링 | 원본 데이터 반환 |
| 접근 | 클라이언트 직접 통신 | BFF를 통해서만 접근 |
RS256 비대칭 키를 사용하여 BFF에서 검증, Core에서 발급하는 구조로 설계하였습니다.
{
"sub": "user@email.com",
"idx": 1,
"iat": 1776243979,
"exp": 1776247579
}
idx 필드 사용인증 처리