MSA에서 여러 서비스에서 필요한 데이터를 관리하는 방법
관리 방법
1. 데이터 복제
1) 정의
각 서비스가 필요한 데이터를 복제해서 관리
2) 장점
- 각 서비스 독립적으로 동작 가능
- 서비스간 네트워크 호출 최소화
3) 단점
- 데이터 동기화 문제
- 저장소 사용량 증가
4) 사용 예시
정보가 자주 변경되지 않는 경우
2. 중앙 데이터 서비스
1) 정의
여러 서비스에서 필요한 데이터를 전담 관리하는 별도의 서비스를 구축하고 다른 서비스에서 이를 호출
2) 장점
- 데이터 일관성 유지
- 변경 사항 관리 쉬움
3) 단점
- 의존성이 높아져 장애 발생시 다른 서비스에도 영향
- 네트워크 호출로 인해 성능 저하 가능
4) 사용 예시
- 정보가 자주 업데이트되거나 정확한 정보가 실시간으로 필요한 경우
3. 이벤트 기반 데이터 동기화
1) 정의
정보 변경시 이벤트를 발생시켜 각 서비스가 필요한 정보를 비동기적으로 업데이트
예시: 메시지 브로커 사용(Kafka, RabbitMQ 등), 이벤트 발행 → 각 서비스가 해당 이벤트 수신 후 데이터 동기화
2) 장점
- 서비스간 결합도 ↓
- 확장성 높음
3) 단점
- 이벤트 지연, 메시지 손실 가능성
- 복잡한 이벤트 처리 로직 필요
4) 사용 예시
- 대규모 시스템에서 데이터를 실시간 동기화하거나 서비스 간 통합이 필요할 경우
4. JWT 또는 토큰 기반 정보 사용
1) 정의
- 인증 토큰(JWT)에 정보를 포함시켜 서비스 간에 전달
2) 장점
- 네트워크 호출 없이 필요한 정보 확인 가능
- 빠른 검증 및 사용
3) 단점
- 토큰 크기 증가시 성능 저하
- 토큰 내 정보가 오래되면 유효성이 떨어짐
4) 사용 예시
- 인증 및 권한 확인이 필요한 경우
최종 결정 기준
- 일관성 우선: 중앙 데이터 서비스/이벤트 기반 동기화
- 성능 우선: 데이터 복제/JWT 사용
- 확장성 우선: 이벤트 기반 동기화
- 공유할 정보가 자주 변동되지 않는 경우: 데이터 복제
- 실시간 최신 데이터 필요: 중앙 데이터 서비스
- 확장성, 비동기 처리 중요: 이벤트 기반 동기화