본문 바로가기
개발/MSA

[MSA] 모듈화와 아키텍처 퀀텀

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

시스템 및 서비스 모듈화가 왜 필요하고 이와 관련된 아키텍처 퀀텀이라는 것은 무엇인지 정리해본다.

 

모듈화(분산 시스템)

모듈화란 시스템을 작은 단위로 분리하여 나누는 것으로 기본적으로 결합도를 낮추는 것이라고 할 수 있다. 비즈니스가 경쟁 우위를 유지하기 위해서는 아래 그림처럼 시장 출시 속도가 빨라야 하고, 이를 위해서는 민첩성이 필요하다. 기술적으로 보면 가용성, 확장성, 배포성, 시험성(테스트), 유지 보수성이 필요하다고 할 수 있다. 특히, 기술 때문에 비즈니스가 발목을 잡히지 않게 하려면 민첩성(배포성, 시험성(테스트), 유지 보수성)은 필수이다. 그리고 모듈화를 통해서 기술적인 부분들이 용이해 질 수 있다. 

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

 

확장성, 탄력성  모듈화를 통해 필요한 기능만 독립적으로 리소스 낭비없이 빠른 속도로 대응이 가능
가용성  모듈화 되어 있어서 장애 발생 시 장애 영향도 범위가 축소
유지보수성  컴포넌트 결합도는 낮으면서 응집도는 높아짐 
 컴포넌트 사이즈 줄어들고, 복잡도 감소 
 요즘에는 컴포넌트 분할 시 기술적 분할보다는 도메인 기준 분할을 많이 적용함(ex. DDD)
시험성(테스트)  모듈화로 테스트 범위가 줄어들어 테스트 용이성과 테스트 완전성이 높아짐
배포성  모듈화로 독립적인 배포 가능, 독자적인 배포 빈도를 가져갈 수 있음
 배포 리스크 범위 축소와 배포 용이성 확보

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

 

 

아키텍처 퀀텀(Quantum)

- 아키텍처 퀀텀은 높은 기능 응집도, 높은 정적 커플링, 동기적 동적 커플링의 특성을 띤, 독립적으로 배포 가능한 아티팩트(ex. 마이크로서비스)

- 아키텍처 퀀텀은 아키텍트, 개발자, 운영자 간의 공용어 역할을 함(아키텍트는 커플링 특성, 개발자는 동작의 범위, 운영자는 배포 가능한 특성 등 각자 처한 문제의 공통 범위를 이해하는데 도움을 줌)

- 아키텍처 퀀텀이 1이면 모놀리식(단일 퀀텀), 아키텍처 퀀텀이 1보다 크면 모듈화(분산 시스템)

 

1. 기능 응집도

  • 클래스, 컴포넌트, 서비스 등 연관된 요소들 간의 구조적인 근접성을 나타냄
  • 도메인 관점에서 높은 기능 응집도의 기술적 정의는 도메인 주도 설계(DDD)에서 바운디드 컨텍스트의 목표와 일치
  • 모놀리스가 커질수록 기능 응집도는 반드시 낮아질수 밖에 없음

2. 정적 커플링

  • OS, 프레임워크, 라이브러리 등의 의존성들과 서비스가 구동하는데 필요한 의존성(ex. DB)
  • [단일 배포 단위 + 단일 DB + 단일UI(일반적인 모놀리스 환경)] 는 모두 아키텍처 퀀텀이 1 임
  • [여러 배포 단위(여러 서비스) + 단일 DB + 단일UI] 도 모두 아키텍처 퀀텀은 1
  • DB, UI까지 분리가 되어야 아키텍처 퀀텀이 2 이상이 될 수 있다
  • 정적 커플링과 아키텍처 퀀텀 예시는 아래 그림을 참조한다.

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

3. 동적 커플링

  • 런타임 시 통신에 의한 의존성(서로 어떻게 호출하는지)
  • 3차원 동적 퀀텀 커플링 요소
    - 통신: 동기, 비동기 통신
    - 일관성: 원자적, 최종 일관성
    - 조정: 코레오그래피, 오케스트레이션 
  • 각 요소는(통신, 일관성, 조정)은 아키텍트의 의사 결정에서 중요한 요소가 됨

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

  • 패턴 별 차원 매트릭스(아래 표)
    패턴 통신 일관성 조정 결합도
    에픽 사가(sao) 동기 원자성 오케스트레이션 매우 높음
    폰 태그 사가(sac) 동기 원자성 코레오그래피 높음
    페어리 테일 사가(seo) 동기 최종 일관성 오케스트레이션 높음
    타임 트래블 사가(sec) 동기 최종 일관성 코레오그래피 보통
    판타지 픽션 사가(aao) 비동기 원자성 오케스트레이션 높음
    호러 스토리 사가(aac) 비동기 원자성 코레오그래피 보통
    패러렐 사가(aeo) 비동기 최종 일관성 오케스트레이션 낮음
    앤솔로지 사가(aec) 비동기 최종 일관성 코레오그래피 매우 낮음
반응형

댓글