본문 바로가기
개발/MSA

[MSA] 서비스의 데이터 오너십(소유) 종류와 처리 방법

by 궁즉변 변즉통 통즉구 2024. 8. 10.
반응형

마이크로서비스에서 일반적으로 테이블에 데이터 쓰는(Write) 서비스가 해당 데이터에 대한 오너십을 가지게 된다. 명확하게 도메인 단위로 데이터 분리가 가능하다면 오너십이 명확해지지만, 여러 서비스가 공동 오너십을 가지는 경우 복잡해지게 된다. 데이터에 대한 오너십의 종류와 처리 및 해결 방법에 대해 알아본다. 아래 내용들은 도서 '소프트웨어 아키텍처 The Hard Parts'를 참조했다. 

 

데이터 오너십(Ownership) 종류

1. 단독 오너십

- 오직 한 서비만 테이블에 테이터를 쓰는 것

- 가장 단순하고 명확하고 직관적이라 관리가 쉽다

출처: 소프트웨어 아키텍처 The Hard Parts

 

2. 공통 오너십

- 대부분(많은)의 서비스들이 동일한 테이블에 데이터 쓰기를 하는 경우 

- 예를들어, 많은 서비스에서 공통으로 적용되는 Audit 감사 테이블 등이 될 수 있을 것이다

- 일반적으로 하나의 전용 서비스를 만들어 해당 데이터에 대한 오너십을 주고, 다른 서비스들은 이 전용 서비스를 이용하는 방법으로 처리

출처: 소프트웨어 아키텍처 The Hard Parts

 

3. 공동 오너십

- 주로 동일한 도메인에 속하는 2~3개 서비스가 동일한 테이블에 쓰기를 하는 경우 

출처: 소프트웨어 아키텍처 The Hard Parts

 

 

 

오너십 처리 방법과 장단점

1. 테이블 분할 기법

- 한 테이블을 여러 테이블로 나눠서 각 서비스가 해당 데이터를 소유하는 방법 

- 단독 오너십을 유지할 수 있으나, 분할된 테이블 간의 데이터 동기화 문제가 발생 할 수 있음

출처: 소프트웨어 아키텍처 The Hard Parts

장점 단점
 바운디드 컨텍스트가 잘 지켜짐  테이블 변경과 구조조정 작업 필요
 단독 데이터 오너십 유지  데이터 일관성 이슈 발생.
 ACID 트랜잭션 적용 불가.
   데이터 동기화 어려움.
 데이터 간 중복 발생 가능성 있음.

 

2. 데이터 도메인 기법

- 어느 한 서비스가 데이터를 공유하는 것이 아니라 공유 데이터 도메인을 별도 생성하는 방법

- 여러 서비스가 공유하는 테이블들을 동일한 스키마, 데이터베이스에 넣어 공유 데이터 도메인(공통 스키마)으로 생성함

출처: 소프트웨어 아키텍처 The Hard Parts

장점 단점
 데이터 액세스 성능이 좋아짐  데이터 스키마 변경 시 여러 서비스 간 조정 필요
 확장성, 처리량 이슈 없음  데이터 스키마 변경 시 테스트 범위 증가(여러 서비스)
 데이터 일관성 유지 가능  데이터 오너십을 관리 필요(어느 서비스가 담당할지)
 서비스 간 통신 등의 의존성 없음  데이터 스키마 변경 시 배포 리스크 증가(여러 서비스)

 

3. 대리자 기법

- 어느 한 서비스를 테이블에 대한 독점권을 주고 대리자로 지정, 다른 서비스들은 대리자와 통신해서 데이터 처리

- 대리자 결정 방법

      1.  주 도메인 우선: 해당 데이터의 주 도메인을 가장 잘 나태는 서비스로 선정(권장 방법)
      2. 
운영 특성 우선: 성능, 확장성, 가용성, 처리량 등 운영 특성을 고려한 서비스로 선정,

    일반적으로 주 도메인 우선을 권장하고, 운영 특성은 캐시 등을 활용하여 해결 함

- 트랜잭션이 불필요하거나 비동기 통신으로 최종 일관성을 보장해도 되는 경우에 적합

출처: 소프트웨어 아키텍처 The Hard Parts

 

장점 단점
 단독 오너십 가능  서비스 결합도 높음
 데이터 스키마 변경 관리 용이  비오너십 서비스들의 데이터 쓰기 성능이 떨어짐
 비오너십 서비스들의 데이터 쓰기의 원자적 트랜잭션 처리 불가
 대리자를 통해 데이터 구조를 다른 서비스로부터 추상화 가능  비오너 서비스들의 내고장성이 낮아질 수 있음

 

4. 서비스 통합

- 여러 테이블 오너 서비스를 하나의 서비스로 통합해서 단독 오너십으로 변경

출처: 소프트웨어 아키텍처 The Hard Parts

장점 단점
 원자적 트랜잭션 처리 가능  확장 시 확장의 단위가 커짐
 전반적인 성능 우수  내고장성이 떨어짐
 서비스 간의 의존성 없음  테스트 범위 증가
   배포 리스크 범위 증가

 

서비스 간 데이터 오너십 처리 방법들에 대한 장단점(트레이드오프)을 잘 이해하고 상황(Context)에 맞는 방법을 잘 선택해야 한다.

 

반응형

댓글