기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
데이터베이스 분해를 위한 응집력 및 결합 분석
이 섹션에서는 모놀리식 데이터베이스의 결합 및 응집 패턴을 분석하여 분해를 안내하는 데 도움이 됩니다. 데이터베이스 구성 요소가 상호 작용하고 서로 의존하는 방식을 이해하는 것은 자연스러운 중단점을 식별하고, 복잡성을 평가하고, 단계별 마이그레이션 접근 방식을 계획하는 데 중요합니다. 이 분석은 숨겨진 종속성을 공개하고, 즉각적인 분리에 적합한 영역을 강조하며, 변환 위험을 최소화하면서 분해 작업의 우선순위를 정하는 데 도움이 됩니다. 결합과 응집력을 모두 검사하면 변환 프로세스 전반에 걸쳐 시스템 안정성을 유지하기 위해 구성 요소 분리 시퀀스에 대해 정보에 입각한 결정을 내릴 수 있습니다.
이 섹션은 다음 주제를 포함합니다:
응집력 및 결합 정보
결합은 데이터베이스 구성 요소 간의 상호 의존도를 측정합니다. 잘 설계된 시스템에서는 한 구성 요소에 대한 변경 사항이 다른 구성 요소에 미치는 영향을 최소화하는 느슨한 결합을 달성하고자 합니다. 응집력은 데이터베이스 구성 요소 내의 요소가 함께 작동하여 잘 정의된 단일 목적을 제공하는 정도를 측정합니다. 응집력이 높으면 구성 요소의 요소가 강력하게 관련되고 특정 함수에 초점을 맞추고 있음을 나타냅니다. 모놀리식 데이터베이스를 분해할 때는 개별 구성 요소 내의 응집력과 이들 간의 결합을 모두 분석해야 합니다. 이 분석은 시스템 무결성과 성능을 유지하면서 데이터베이스를 분류하는 방법에 대해 정보에 입각한 결정을 내리는 데 도움이 됩니다.
다음 이미지는 응집력이 높은 느슨한 결합을 보여줍니다. 데이터베이스의 구성 요소는 함께 작동하여 특정 함수를 수행하며, 변경이 단일 구성 요소에 미치는 영향을 최소화합니다. 이는 이상적인 상태입니다.
다음 이미지는 낮은 응집력으로 높은 결합을 보여줍니다. 데이터베이스 구성 요소의 연결이 끊어지고 변경 사항이 다른 구성 요소에 영향을 미칠 가능성이 높습니다.
모놀리식 데이터베이스의 공통 결합 패턴
모놀리식 데이터베이스를 마이크로서비스별 데이터베이스로 분해할 때 일반적으로 발견되는 몇 가지 결합 패턴이 있습니다. 이러한 패턴을 이해하는 것은 성공적인 데이터베이스 현대화 이니셔티브에 매우 중요합니다. 이 섹션에서는 각 패턴, 당면 과제 및 결합 감소 모범 사례를 설명합니다.
구현 결합 패턴
정의: 구성 요소는 코드 및 스키마 수준에서 긴밀하게 상호 연결됩니다. 예를 들어 customer 테이블 구조를 수정하면 order, inventory및 billing 서비스에 영향을 미칩니다.
현대화 영향: 각 마이크로서비스에는 자체 전용 데이터베이스 스키마와 데이터 액세스 계층이 필요합니다.
해결 과제:
-
공유 테이블에 대한 변경 사항은 여러 서비스에 영향을 미칩니다.
-
의도하지 않은 부작용의 위험이 높음
-
테스트 복잡성 증가
-
개별 구성 요소를 수정하기 어려움
결합 감소 모범 사례:
-
구성 요소 간의 명확한 인터페이스 정의
-
추상화 계층을 사용하여 구현 세부 정보 숨기기
-
도메인별 스키마 구현
시간적 결합 패턴
정의: 작업은 특정 순서로 실행되어야 합니다. 예를 들어 인벤토리 업데이트가 완료될 때까지 주문 처리를 진행할 수 없습니다.
현대화 영향: 각 마이크로서비스에는 자율적인 데이터 제어가 필요합니다.
해결 과제:
-
서비스 간 동기 종속성 중단
-
성능 병목 현상
-
최적화하기 어려움
-
제한된 병렬 처리
결합 감소 모범 사례:
-
가능한 경우 비동기 처리 구현
-
이벤트 기반 아키텍처 사용
-
적절한 경우 최종 일관성을 위한 설계
배포 결합 패턴
정의: 시스템 구성 요소를 단일 단위로 배포해야 합니다. 예를 들어 결제 처리 로직을 약간 변경하려면 전체 데이터베이스를 재배포해야 합니다.
현대화 영향: 서비스당 독립적인 데이터베이스 배포
해결 과제:
-
고위험 배포
-
제한된 배포 빈도
-
복잡한 롤백 절차
결합 감소 모범 사례:
-
독립적으로 배포 가능한 구성 요소로 분류
-
데이터베이스 샤딩 전략 구현
-
블루-그린 배포 패턴 사용
도메인 결합 패턴
정의: 비즈니스 도메인은 데이터베이스 구조와 로직을 공유합니다. 예를 들어 , customer order및 inventory 도메인은 테이블과 저장 프로시저를 공유합니다.
현대화 영향: 도메인별 데이터 격리
해결 과제:
-
복잡한 도메인 경계
-
개별 도메인을 확장하기 어려움
-
얽힌 비즈니스 규칙
결합 감소 모범 사례:
-
명확한 도메인 경계 식별
-
도메인 컨텍스트별로 데이터 분리
-
도메인별 서비스 구현
모놀리식 데이터베이스의 일반적인 응집 패턴
분해를 위해 데이터베이스 구성 요소를 평가할 때 일반적으로 발견되는 몇 가지 응집 패턴이 있습니다. 이러한 패턴을 이해하는 것은 잘 구성된 데이터베이스 구성 요소를 식별하는 데 매우 중요합니다. 이 섹션에서는 각 패턴, 특성 및 응집력 강화 모범 사례를 설명합니다.
기능적 응집 패턴
정의: 모든 요소는 잘 정의된 단일 함수를 직접 지원하고 수행하는 데 기여합니다. 예를 들어 결제 처리 모듈의 모든 저장 프로시저와 테이블은 결제 관련 작업만 처리합니다.
현대화 영향: 마이크로서비스 데이터베이스 설계에 이상적인 패턴
해결 과제:
-
명확한 기능 경계 식별
-
혼합 용도 구성 요소 분리
-
단일 책임 유지
응집력을 강화하는 모범 사례:
-
관련 함수를 함께 그룹화
-
관련 없는 기능 제거
-
명확한 구성 요소 경계 정의
순차적 응집 패턴
정의: 한 요소의 출력이 다른 요소의 입력이 됩니다. 예를 들어 주문에 대한 검증 결과는 주문 처리에 적용됩니다.
현대화 영향: 신중한 워크플로 분석 및 데이터 흐름 매핑 필요
해결 과제:
-
단계 간 종속성 관리
-
장애 시나리오 처리
-
프로세스 순서 유지
응집력을 강화하는 모범 사례:
-
명확한 데이터 흐름 문서화
-
적절한 오류 처리 구현
-
단계 간 명확한 인터페이스 설계
통신 응집 패턴
정의: 요소는 동일한 데이터에서 작동합니다. 예를 들어 고객 프로필 관리 함수는 모두 고객 데이터와 함께 작동합니다.
현대화 영향: 서비스 분리를 위한 데이터 경계를 식별하여 모듈 간 결합 감소
해결 과제:
-
데이터 소유권 결정
-
공유 데이터 액세스 관리
-
데이터 일관성 유지
응집력을 강화하는 모범 사례:
-
명확한 데이터 소유권 정의
-
적절한 데이터 액세스 패턴 구현
-
효과적인 데이터 파티셔닝 설계
절차적 응집 패턴
정의: 요소는 특정 순서로 실행되어야 하지만 기능적으로 관련이 없을 수 있으므로 함께 그룹화됩니다. 예를 들어 주문 처리에서 주문 검증과 사용자 알림을 모두 처리하는 저장 프로시저는 다른 목적을 제공하고 별도의 서비스에서 처리할 수 있더라도 순서대로 발생하기 때문에 간단히 그룹화됩니다.
현대화 영향: 프로세스 흐름을 유지하면서 절차를 신중하게 분리해야 함
해결 과제:
-
분해 후 올바른 프로세스 흐름 유지
-
절차상 종속성과 비교하여 실제 기능 경계 식별
응집력을 강화하는 모범 사례:
-
실행 순서가 아닌 기능적 목적에 따라 절차를 구분합니다.
-
오케스트레이션 패턴을 사용하여 프로세스 흐름 관리
-
복잡한 시퀀스를 위한 워크플로 관리 시스템 구현
-
프로세스 단계를 독립적으로 처리하기 위한 이벤트 기반 아키텍처 설계
임시 응집 패턴
정의: 요소는 타이밍 요구 사항에 따라 관련이 있습니다. 예를 들어 주문 시 재고 확인, 결제 처리, 주문 확인, 배송 알림 등 여러 작업을 함께 실행하여 일관된 주문 상태를 유지해야 합니다.
현대화 영향: 분산 시스템에서 특별한 처리가 필요할 수 있음
해결 과제:
-
분산 서비스 전반의 타이밍 종속성 조정
-
분산 트랜잭션 관리
-
여러 구성 요소에서 프로세스 완료 확인
응집력을 강화하는 모범 사례:
-
적절한 예약 메커니즘 및 제한 시간 구현
-
명확한 시퀀스 처리와 함께 이벤트 기반 아키텍처 사용
-
보상 패턴과의 최종 일관성을 위한 설계
-
분산 트랜잭션을 위한 Saga 패턴 구현
논리적 또는 우연한 응집 패턴
정의: 요소는 관계가 약하거나 의미가 없더라도 동일한 작업을 수행하도록 논리적으로 분류됩니다. 예를 들어 고객 주문 데이터, 창고 인벤토리 수 및 마케팅 이메일 템플릿은 액세스 패턴, 수명 주기 관리 및 규모 조정 요구 사항이 다르더라도 모두 영업 운영과 관련이 있기 때문에 동일한 데이터베이스 스키마에 저장하는 것입니다. 또 다른 예는 주문 결제 처리와 제품 카탈로그 관리를 동일한 데이터베이스 구성 요소 내에서 결합하는 것입니다. 둘 다 전자 상거래 시스템의 일부이기 때문입니다. 운영 요구 사항이 다른 고유한 비즈니스 기능을 제공하더라도 마찬가지입니다.
현대화 영향: 리팩터링하거나 재구성해야 함
해결 과제:
-
더 나은 조직 패턴 식별
-
불필요한 종속성 깨기
-
임의로 그룹화된 구성 요소 재구성
응집력을 강화하는 모범 사례:
-
실제 기능 경계 및 비즈니스 도메인을 기반으로 재구성
-
피상적 관계를 기반으로 임의의 그룹화 제거
-
비즈니스 역량에 따라 적절한 요소 분리 구현
-
데이터베이스 구성 요소를 특정 운영 요구 사항에 맞게 조정
낮은 결합 및 높은 응집력 구현
모범 사례
다음 모범 사례는 낮은 결합을 달성하는 데 도움이 될 수 있습니다.
-
데이터베이스 구성 요소 간의 종속성 최소화
-
구성 요소 상호 작용을 위해 잘 정의된 인터페이스 사용
-
공유 상태 및 글로벌 데이터 구조 방지
다음 모범 사례는 높은 응집력을 달성하는 데 도움이 될 수 있습니다.
-
관련 데이터 및 작업을 함께 그룹화
-
각 구성 요소에 하나의 명확한 책임이 있는지 확인합니다.
-
서로 다른 비즈니스 도메인 간의 명확한 경계 유지
1단계: 데이터 종속성 매핑
데이터 관계를 매핑하고 자연 경계를 식별합니다. 와 같은 도구를 사용하여 엔터티 관계(ER) 다이어그램에 테이블을 표시하여 데이터베이스를 시각화SchemaSpy
그래프 데이터베이스 또는 Jupiter 노트북에서 데이터베이스 스키마를 내보낼 수도 있습니다. 그런 다음 클러스터링 또는 상호 연결된 구성 요소 알고리즘을 적용하여 자연 경계와 종속성을 식별할 수 있습니다. 와 같은 다른 AWS Partner 도구는 데이터베이스 종속성을 이해하는 데 도움이 될 CAST Imaging
2단계: 트랜잭션 경계 및 액세스 패턴 분석
트랜잭션 패턴을 분석하여 원자성, 일관성, 격리, 내구성(ACID) 속성을 유지하고 데이터에 액세스하고 데이터를 수정하는 방법을 이해합니다. Oracle Automatic Workload Repository (AWR)
와 같은 AI 도구는 애플리케이션의 기능 및 도메인 경계를 분석하여 도메인 경계를 식별하는 데 도움이 될 vFunction
3단계: 독립형 테이블 식별
두 가지 주요 특성을 보여주는 테이블을 찾습니다.
-
높은 응집력 - 테이블의 내용이 서로 밀접하게 관련되어 있습니다.
-
낮은 결합 - 다른 테이블에 대한 종속성을 최소화합니다.
다음 결합 응집 행렬은 각 테이블의 분리 어려움을 식별하는 데 도움이 될 수 있습니다. 이 매트릭스의 오른쪽 상단 사분면에 나타나는 테이블은 분리하기가 가장 쉽기 때문에 초기 분리 작업에 적합한 후보입니다. ER 다이어그램에서 이러한 테이블은 외래 키 관계 또는 기타 종속성이 거의 없습니다. 이러한 테이블을 분리한 후에는 관계가 더 복잡한 테이블로 진행합니다.
참고
데이터베이스 구조는 종종 애플리케이션 아키텍처를 미러링합니다. 데이터베이스 수준에서 분리하기 쉬운 테이블은 일반적으로 애플리케이션 수준에서 마이크로서비스로 변환하기 쉬운 구성 요소에 해당합니다.