Edge Service는 집밥 요리사 프로젝트의 핵심 서비스로, API Gateway 역할을 수행합니다. 모든 클라이언트 요청이 Edge Service를 통해 처리되며, 사용자 인증 및 인가를 수행한 후 내부 마이크로서비스로 전달됩니다.
- API Gateway 역할 수행: 모든 요청을 수집하고 적절한 마이크로서비스로 라우팅
- 사용자 인증 및 인가: JWT 및 OAuth2.0을 활용한 인증 및 권한 검증
- 보안 강화: Spring Security를 활용한 보안 정책 적용
- Rate Limiting: Redis 기반의 속도 제한 적용 (Spring Cloud Gateway Filter 활용)
- 비동기 메시지 처리: RabbitMQ 기반의 메시지 큐를 활용하여 이메일 서비스와 효과적으로 데이터 송수신
Edge Service는 API Gateway로 동작하며, 다른 마이크로서비스와 연동됩니다. 주요 흐름은 다음과 같습니다:
- 클라이언트의 모든 요청은 Edge Service를 통해 전달됩니다.
- JWT 또는 OAuth2.0을 사용하여 사용자 인증을 수행합니다.
- 인증된 요청만이 Gateway Filter를 거쳐 적절한 마이크로서비스로 전달됩니다.
- 필요 시 Rate Limiting을 적용하여 과도한 요청을 방지합니다.
(Client) -> [Edge Service] -> (Backend Services)
- Java 17
- Spring Framework
- Spring Cloud Gateway
- Spring Security 6
- MariaDB
- Redis
- RabbitMQ
./gradlew build && ./gradlew bootRun./gradlew bootBuildImageDocker 실행 방법 및 관련 설정에 대한 자세한 내용은 아래 저장소의 README를 참고해 주세요.
📌 저장소 링크: Zipbob Deployment Repository
Edge Service는 마스터-슬레이브 전략을 활용하여 데이터베이스 부하를 분산하고 가용성을 높입니다. 🏆
- 마스터 노드는 모든 쓰기 작업을 담당합니다.
- 슬레이브 노드는 읽기 전용 작업을 수행하여 시스템의 부하를 효과적으로 분산합니다.
- 대량의 요청이 발생하더라도 안정적인 성능을 유지할 수 있습니다.
- 사용자 정보는 MariaDB에 저장
- Redis를 활용하여 캐싱 및 빠른 조회 기능 제공
- RabbitMQ 기반 비동기 메시지 처리로 회원가입 및 회원탈퇴 이메일 전송 서비스와 원활한 연동