본문 바로가기
개발/MSA

[MSA] 데이터베이스 분해인과 통합인 - 어떤 이유로 분해 또는 통합해야하는가?

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

MSA에서 어떤 경우에 데이터베이스를 분리를 해야하는지?(분해인), 또 어떤 경우에 데이터베이스 통합을 고려해야하는지?(통합인)를 살펴본다. 

 

데이터베이스 분해인

- 데이터베이스를 분해해야하는 명분(어떤 경우, 어떤 이유로 데이터베이스 분리를 하는가?)

- 데이터베이스를 분리하면 아래 표의 분해인 항목에 대한 장점을 가질 수 있다.

분해인 설명
변경관리 -  테이블,컬럼 등 변경 시 얼마나 자주 변경되고, 얼마나 많은 서비스가 영향을 받는가?
   (데이터베이스 변경에 따른 서비스 변경, 테스트, 재배포 등의 범위와 영향도 줄일 수 있음)
커넥션 관리 - 데이터베이스가 여러 분산된 서비스와 커넥션을 맺을 수 있는가?
  (데이터베이스의 최대 가용 커넥션 수에 도달 및 초과할 수 있는가?)
- 서비스마다 자체 커넥션 풀을 가지고 있고, 서비스 증가에 따라 커넥션 풀 빠르게 소진될 수 있음
- 서비스가 커넥션 대기 현상이 발생하면 이미 최대 커넥션 수에 도달했다는 증거
확장성 - 엑세스하는 서비스 수요에 맞게 데이터베이스를 확장할 수 있는가?
  (데이터베이스의 커넥션, 용량, 처리량, 성능, 확장이유 등에 따른 확장)
내고장성/가용성 - 데이터베이스 장애 및 수리 등의 사유로 가동 중단 시 얼마나 많은 서비스가 영향을 받는가?
   (내고장성이 필요한 영역은 데이터베이스 분리 고려 필요)
아키텍처 퀀텀 - 단일 공통 데이터베이스가 바람직하지 않은 단일 아키텍처 퀀텀을 유발하는가?
* 아키텍처 퀀텀: 높은 기능응집도, 정적 커플링, 동기적 커플링을 가진 독립 배포 가능한 아태팩트
  (분해 시 다중 아키텍처 퀀텀으로 구성되어 응집도 증가 및 결합도 축소,영향도 범위 축소 가능)
데이터베이스 유형 최적화 - 여러 종류의 데이터베이스를 사용해서 데이터를 최적화 할 여지가 있는가?  
  (분해 시 데이터 특성에 최적화된 데이터 베이스 활용 가능)

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

 

데이터베이스 통합인

- 데이터베이스를 통합해야하는 명분(어떤경우, 어떤 이유로 데이터베이스를 통합 하는가?)

통합인 설명
데이터 관계 - 테이블 간 외래 키 등 데이터 관계를 유지하는 것이 MSA 서비스 분해인보다 더 중요한 경우
* MSA에서 바운디드 컨텍스트를 견고하게 설계하려면 데이터베이스를 분해해야 하며 다른 서비스 스키마의 기존 참조 외래키, 뷰 등은 모두 제거해야 한다
데이터베이스 트랜잭션 - 트랜잭션 처리가 ACID를 반드시 보장이 되어야 하는 경우
* 데이터베이스를 분해하면 단일 트랜잭션으로 묶을 수가 없다.

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

 

 

다시 한번 정리해보면 데이터베이스 분리가 필요한 이유는 아래와 같다.

- 데이터베이스 변경에 따른 서비스들의 변경관리의 어려움
- 서비스들에 따른 DB커넥션 관리가 어려움

- 데이터베이스 확장성 및 내고장성/가용성 필요 

- 데이터 성격에 따른 최적화된 데이터베이스 적용 필요 

반대로 데이터베이스 통합이 필요한 이유는 다음과 같다.

- 데이터 관계의 무결성, 정합성 등이 필수인 경우 
- ACID 트랜잭션 처리가 필수인 경우 

 

 

관련글:

 

[MSA] 모놀리식 데이터베이스 분해 과정

MSA에서 데이터베이스 분해하는 과정을 알아본다. 아래 내용들은 도서 '소프트웨어 아키텍처 The Hard Parts'를 참조해서 정리한 내용이다. 모놀리식 데이터베이스를 분해해서 독립적인 데이터 도

happy-jjang-a.tistory.com

 

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

마이크로서비스에서 일반적으로 테이블에 데이터 쓰는(Write) 서비스가 해당 데이터에 대한 오너십을 가지게 된다. 명확하게 도메인 단위로 데이터 분리가 가능하다면 오너십이 명확해지지만,

happy-jjang-a.tistory.com

 

[MSA] 데이터베이스 종류와 데이터베이스 선택 평가 항목

MSA에서 데이터베이스를 분리하면 각 서비스의 목적에 맞는 최적의 데이터베이스 타입을 선택해서 적용할 수 있다. 데이터베이스 타입의 종류와 타입을 선택하기 위한 평가 항목, 항목 별 대략

happy-jjang-a.tistory.com

 

 

[MSA] 서비스 분리 해야할 때와 통합 해야할 때(서비스 분해와 통합 요인)

MSA에서 서비스 분리를 고려할 때 어떤 경우에 서비스를 분리해야하고 반대로 어떤 경우에 서비스를 통합해야하는지 서비스의 분해인과 통합인에 대해서 알아본다. 간단하게 모률화, 세분도라

happy-jjang-a.tistory.com

 

반응형

댓글