본문 바로가기
개발/MSA

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

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

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

 

모놀리식 데이터베이스를 분해해서 독립적인 데이터 도메인을 생성하는 5단계의 프로세스는 아래와 같다. 데이터 도메인이란 특정 도메인과 관련된 테이블, 뷰, 외래키, 트리거 등의 연관된 데이터베이스 아티팩트들의 집합이라고 할 수 있다. 

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

 

데이터베이스 분해 과정 5단계

1. 데이터베이스 분석 및 데이터 도메인 생성

  • 일반적인 모놀리식 시스템은 모든 서비스가 모든 데이터베이스의 데이터에 접근 가능한 구조 임(공유 데이터베이스 통합 스타일)
    데이터와 서비스가 서로 단단하게 결합되어 있어 데이터베이스 변경 관리가 어려움

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

  • 데이터베이스 분해를 위해서는 데이터 베이스 내에서 구체적인 도메인 그룹을 먼저 식별한다

데이터 도메인 식별 예시

 

2. 데이터 도메인에 테이블 할당 및 테이블 이동

  • 특정 데이터 도메인에 속하는 테이블들을 해당 스키마(서버의 논리적 구조물)에 할당
  • 서로 다른 데이터 도메인에 속한 테이블 간에 밀접한 연관이 있다면, 해당 데이터 도메인들은 반드시 통합(넓은 바운디드 컨텍스트로 가져감)
  • 자기 스키마에 속하지 않는 테이블 등은 시노님(synonym)을 생성해서 적용(추후 교차 스키마 분석/제거 등의 처리 용이성을 위함)

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

 

3. 데이터 도메인에 접속하는 데이터베이스 커넥션 분리

  • 각 서비스가 특정 스키마에 확실히 연결되도록 데이터베이스 커넥션 분리
  • 모든 교차 스키마 액세스를 서비스 수준에서 처리하는 작업 필요(2단계의 시노님 제거)
  • 서비스마다 자신의 데이터 주권(소유권)을 가지는 체계로 전환시킴
  • 대량 데이터 처리 시 성능 이슈, 데이터 참조 무결성 저하, 데이터베이스 코드(프로시저, 함수 등)의 서비스 레이어 이동 작업 등은 고려해서 작업 필요

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

 

4. 개별 데이터베이스 서버로 스키마 이전

  • 3단계 까지의 서비스 별 고유의 스키마 접근방식은 확장성, 내고장성, 성능 등 운영측면에서 좋지 않음
    ⇒ 데이터 도메인을 별도의 물리적 데이터베이스로 이전 필요
  • 이전 방법
    • 백업&복원 이전 방법 : 각 스키마를 백업한 다음 새 데이터베이스에 복원하는 방법, 기존 서버의 스키마 제거, 다운타임 불가피.
    • 복제 이전 방법: 새 데이터베이스를 구성 후 스키마를 복제하고, 새 데이터베이스로 커넥션을 전환 후 기존 서버의 스키마 제거, 다운타임은 없을 수 있지만, 복제작업 설정과 세부적인 조정 작업 복잡도 고려 필요

복제 이전 방법 샘플, 출처: 소프트웨어 아키텍처 The Hard Parts

 

5. 독립적인 데이터베이스 서버로 전환

  • 예전 데이터베이스의 스키마 정리 및 이 서버에 접속한 커넥션 삭제

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

 

 

관련글:

 

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

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

happy-jjang-a.tistory.com

 

 

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

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

happy-jjang-a.tistory.com

 

반응형

댓글