🔹 개요

주제

이벤트 기반 데이터 동기화를 통한 서비스간 느슨한 결합 구현 및 API 성능 최적화

상세 내용

N+1 문제MSA (Microservices Architecture) 환경에서 특히 자주 발생하는 성능 문제입니다. 이는 여러 개의 마이크로서비스가 각각의 MySQL 데이터베이스와 연결될 때, 하나의 요청에 대해 N개의 추가 쿼리가 발생하는 상황을 의미합니다. 이 문제는 데이터베이스 연결 부하를 유발하고, 네트워크 지연을 증가시켜 시스템 성능을 크게 저하시킬 수 있습니다.

시나리오 구성

🔹 구현 시나리오

개요

단계 설명 주요 주의사항
1. 주문 요청 수신 OrderService가 주문 DB 저장 재고 확인은 하지 않음 (비동기 처리)
2. 이벤트 발행 Kafka에 order.created 발행 중복 방지 키, 스키마 버전 관리
3. 재고 서비스 수신 InventoryService가 이벤트 수신 idempotency, partition key, 실패 시 대처
4. 재고 차감 수량 차감 후 저장 트랜잭션 보장, 재시도 가능성
5. 보상 처리 재고 부족 시 상태 전환 Saga 설계, 사용자 알림, 로그 추적

상세 시나리오

1. 주문 요청이 들어온다 (Client → OrderService)

사용자가 상품을 장바구니에 담고 주문을 생성하면, OrderService는 사용자가 요청한 상품 목록과 수량을 받아 주문 정보를 생성한다. 이때 주문은 재고 확인 없이 선주문(Pessimistic Lock 없이) 방식으로 처리된다.

⚠️ 구현 주의사항