개발/MSA
[MSA] 분산 데이터 액세스 패턴(분산된 데이터에 어떻게 접근할 것인가)
궁즉변 변즉통 통즉구
2024. 9. 1. 09:01
반응형
MSA에서 서비스를 분리하게 되면 기존 통합되어 있던 데이터도 함께 분리가 된다. 이렇게 분산된 서비스 환경에서 서비스가 자신이 소유하지 않는 데이터에 접근하는 방법들에 대해 알아본다.
1. 서비스 간 통신 패턴
- 다른 서비스에 필요한 데이터를 요청하는 가장 일반적인 패턴(타 서비스 API 호출)
- 단순하고 직관적이나, 서비스 간 동적 커플링이 발생 함
장점 | 단점 |
단순하고 직관적 | 네트워크, 데이터, 보안 Latency가 발생(성능 저하) |
데이터 용량 문제가 없음 | 확장성/처리량 이슈(타 서비스와 함께 확장 필요) |
결합도에 따른 내고장성/가용성 저하 | |
서비스 간 계약이 필요(API명세 등) |
2. 컬럼 스키마 복제 패턴
- 필요한 컬럼을 분산된 서비스의 여러 테이블에 복제해서 다른 바운디드 컨텍스트에서 자급자족적으로 사용
- 서비스 간 커플링 제거 가능
- 동기화와 데이터 일관성 문제(큐, 토픽, 이벤트 스트리밍 등 비동기통신으로 처리)
- 데이터 집계, 리포팅 또는 다른 패턴으로 해결이 곤란한 경우 적합
장점 | 단점 |
데이터 액세스 성능 좋아짐 | 데이터 일관성 이슈 |
확장성, 처리량 이슈가 없음(단독 확장 가능) | 데이터 오너십 이슈 |
내고장성이 좋아짐(결합도 없음) | 데이터 동기화 필요 |
서비스 의존성이 없음 |
3. 복제 캐싱 패턴
- 데이터를 다른 서비스에 요청하지 않고, 각 서비스가 메모리 캐시에 데이터를 복제해 사용하는 기법
- 일반적으로 데이터양이 많지 않고, 변경 빈도가 낮은 경우 적합
- 일반적인 [캐싱 모델]의 종류
- 단일 메모리 캐싱 모델(로컬 캐싱):
- 각 서비스가 내부 메모리 캐시를 자체 보유.
- 데이터 동기화 없음, 응답성/확장성은 좋으나 데이터가 공유(동기화) 되지 않음 - 분산 캐싱 모델:
- 외부 캐시 서버를 활용,
- 서비스가 캐시 서버에 커플링 발생, 데이터 오너십 문제, 네트워크 Latency 발생 - 복제 캐싱 모델:
- 서비스간 동기화된 데이터를 각 서비스 자신이 가지고 있는 모델
- 백그라운드/비동기적 데이터 동기화 필요(ex. Hazelcast 등)
- 서비스가 캐시 데이터(캐시 데이터 오너십을 가진 서비스)와 시작 타이밍에 의존하게 됨
- 데이터양의 제한, 캐시 데이터 변경 빈도가 높은 경우 부적합
- 단일 메모리 캐싱 모델(로컬 캐싱):
장점 | 단점 |
데이터 엑세스 성능이 좋음 | 클라우드, 컨테이너 환경에서 설정이 어려울 수 있음 (TCP/IP 브로드캐스팅, lookup 등의 방식으로 복제하여 동적 IP 등의 환경에서 제약 고려) |
확장성/처리량 이슈 없음 | 대량의 데이터 치리에 부적합(캐시 복제 성능 및 리소스 과도한 사용) |
내고장성 괜찮은 편 | 업데이트 빈도가 높은 경우 서비스 간 동기화 어려움 |
데이터 일관성 보장 | 초기 서비스 시작 디펜던시(초기 캐싱 데이터 복제 작업에 의한 의존성) |
데이터 오너십 유지 |
4. 데이터 도메인 패턴
- 여러 서비스가 공유하는 테이블을 하나의 스키마에 집어넣고 관리하는 방법(데이터 통합 방법)
장점 | 단점 |
데이터 액세스 성능 좋음 | 데이터 변경에 대한 바운디드 컨텍스트 넓어짐 (관리 및 영향도 범위 증가) |
확장성/처리량 이슈 없음 | 데이터 오너십 관리 문제 |
내고장성 이슈 없음 | 데이터 액세스 보안 처리 분리 안됨 |
서비스 의존성 없음 | |
데이터 일관성 보장 |
관련글:
[MSA] 서비스 분리 해야할 때와 통합 해야할 때(서비스 분해와 통합 요인)
MSA에서 서비스 분리를 고려할 때 어떤 경우에 서비스를 분리해야하고 반대로 어떤 경우에 서비스를 통합해야하는지 서비스의 분해인과 통합인에 대해서 알아본다. 간단하게 모률화, 세분도라
happy-jjang-a.tistory.com
[MSA] 모놀리식 어플리케이션 분해 전략(서비스 분리)
모놀리식 어플리케이션을 분해하는 전략을 알아본다. 아래 내용들은 도서 '소프트웨어 아키텍처 The Hard Parts'를 참조했다. 아래 그림은 모놀리식 분해 전략을 위한 의사 결정 트리이다.
happy-jjang-a.tistory.com
[MSA] 데이터베이스 분해인과 통합인 - 어떤 이유로 분해 또는 통합해야하는가?
MSA에서 어떤 경우에 데이터베이스를 분리를 해야하는지?(분해인), 또 어떤 경우에 데이터베이스 통합을 고려해야하는지?(통합인)를 살펴본다. 데이터베이스 분해인- 데이터베이스를 분해해야
happy-jjang-a.tistory.com
반응형