기존 글 PDF 파일 첨부

msa.pdf

msa-2.pdf

MSA 모놀리틱
장점 모듈성이 크다( 작은 조각)
집중(응집)된 책임을 가진다.
영속성 저장소의 격리성을 가진다.
독립 확장이 가능하다.
새로운 기술 도입이 용이하다. 개발이 간단하다
쉽게 변경 가능하다.
테스트가 쉽다
배포가 쉽다
확장이 쉽다
단점 개발, 테스트, 배포의 어려움
도입 시점 결정의 어려움
모듈 경계 구분의 어려움
서비스 배포 주기 조정의 어려움
기술의 높은 난이도 비대해지면 너무 복잡해 진다.
개발이 점점 더뎌진다.
배포가 점점 오랜 시간이 걸린다.
기술 스택 발전이 어렵다
리소스 배분이 어렵다

MSA이든 모놀리식 아키텍처이던지 간에 핵심은 여러 파트로의 분해와 파트 간의 관계에 있다.

업무와 지식을 분리하여 서로 어떻게 상호 작용하는지 밝히는 것이 순서이다.

계층화 아키텍처의 대안으로 여러 모듈로 구성된 외/내부 연동 모듈과 비즈니스 로직이 포함되어있다.

hexagonal-architecture.png

  1. 모듈: 도메인 객체의 집합으로 비즈니스 로직을 구성한다. (Entity + Usecase)
  2. 인바운드 어댑터(Input Port): REST API, 웹UI 어댑터 등 비즈니스 요청을 요청을 받아 비즈니스 로직을 호출한다.
  3. 아웃바운드 어댑터(Output Port): DB 등 영속성(Persistence) 저장소 와 외부 서비스를 호출하는 역할을 담당한다. 또한 비즈니스 로직에서 생성된 이벤트를 발행한다.
  4. 이 스타일 아키텍처는 비즈니스 로직에 있던 표현/데이터 접근 로직이 어댑터로 분리되어 의존하지 않게 만든다.