Waither

2024.03 - 2024.11

사용자 개인 맞춤 날씨 정보 알림 서비스, MSA 구조 설계 / 구현

Spring Cloud (MSA) Kafka Spring Security / JWT Redis AWS Eureka API Gateway

핵심 성과

비동기 전환 REST 동기 통신에서 Kafka 이벤트 방식으로 전환 타임아웃 의존 제거, 서비스 간 결합도 최소화
JWT 중앙 집중식 인증 / 인가 블랙리스트 방식 / API Gateway 처리
Kafka 데이터 일관성 확보 REST 병목 / 누락 → 메시지 큐 전환

MSA 서비스 구조

User Service 회원가입 / 로그인 / 프로필 관리. JWT 발급 및 Redis 기반 토큰 블랙리스트
Weather Service 기상청 API 수집 / 파싱 / 캐싱. 사용자 위치 기반 날씨 데이터 제공
Notification Service Kafka 이벤트 소비 후 FCM 푸시 알림 발송. 알림 이력 관리
API Gateway Spring Cloud Gateway. 라우팅 / JWT 검증 / 로드밸런싱 중앙 처리
Eureka 서비스 디스커버리. 인스턴스 자동 등록 / 해제, 동적 라우팅

아키텍처

Waither MSA 아키텍처 다이어그램

주요 구현 내용

  • MSA 분리: User / Weather / Notification 3개 서비스로 독립 분리. 각 서비스별 DB 스키마 분리로 결합도 최소화
  • Eureka 서비스 디스커버리: 서버 간 동적 라우팅 및 설정 통합 관리. 인스턴스 추가 / 제거 시 자동 반영
  • API Gateway + JWT 블랙리스트: 로그아웃 시 토큰을 Redis 블랙리스트에 등록, Gateway에서 모든 요청의 인증 / 인가 중앙 처리
  • Kafka 메시지 큐 도입: 서비스 간 REST 동기 통신의 타임아웃 의존성을 비동기 이벤트로 전환. Consumer Group 설정으로 at-least-once 전달 보장, 서비스 장애 전파 차단
  • 날씨 API 캐싱: Redis TTL 기반 날씨 데이터 캐싱으로 외부 API 호출 빈도 감소 및 응답속도 개선

GitHub

WaitherTeam/Waither-BE