Book/도메인 주도 설계로 시작하는 마이크로서비스 개발

도메인 주도 설계로 시작하는 마이크로서비스개발 part 2-1.

silver_sun 2024. 3. 31. 04:15

 

2장 MSA의 이해

MSA에서 지켜져야할 특성에 맞게 MSA아키텍처를 효율적이고 올바르게 구성할 수 있는 방법들을 알아본다.

 

2.1 리액티브 선언: 현대 애플리케이션이 갖춰야 할 바람직한 속성들

리액티브 시스템에 대해서는 여기를 참고.

책에서는 리액티브 시스템에서는 아키텍처 유연성을 갖추는 것이 필수적인 요소라고 말하고 있고 메세지 기반으로 동작하는 방식이 아키텍처 유연성을 충족시켜준다고 한다.

  • 아키텍처 유연성 :
    • 시스템을 구성하는 구성요소 간의 관계들이 느슨하게 맺어져 있어 언제든지 대체되거나 추가 확장될 수 있는 특성.

어떻게 해야 아키텍처가 유연성을 지킬 수 있을까? 느슨한 결합의 아키텍처를 통해 아키텍처 유연성을 만족시킬 수 있다.

2.2 강 결합에서 느슨한 결합의 아키텍처로의 변화

예전에 만들어진 많은 아키텍처 구조에서, 아키텍처의 각 구성요소들이 강하게 결합되어 있는 것을 볼 수 있다.

  • 강한 결합
    • 아키텍처 구성요소에 변경사항이 생겼을 경우, 해당 부분 외에도 애플리케이션의 상당수를 변경하게 되는 결합.

강한 결합이 되어있을 경우, 변경사항에 대해 많은 것을 고려해야하고 그렇기에 많은 리스트를 얻는 작업이 발생하므로 쉬게 변경하거나 확장할 수 없다.
예전에는 아무래도 특정 솔루션을 기반으로 기술을 직접 구현하는 폐쇄적인 방식으로 작업을 했었기 때문에 강한 결합이 발생할 수 밖에 없었을 것이다.
하지만 현재에는 클라우드 환경이 발달하며, 다양한 제품들이 출시 되고, 그 제품들끼리의 호환성을 제공하는 경우가 많기 때문에 다양한 벤더의 제품, 오픈소스등을 이용하여 유연한 아키텍처를 구성하기 좋은 환경이 되었다.

⇒ 시대의 흐름에 따라 다양한 기술의 변화가 일어나기때문에, 아키텍처는 이러한 기술의 흐름을 지속적으로 체크하고 따라가야한다.

CNCF (Cloud Native Computing Foundation) 에서는 매분기마다 클라우드 기반의 애플리케이션을 구축하는 데 사용되는 지형도를 업데이트 해주고 있다고 한다. 해당 지형도를 보면 얼마나 많은 오픈소스들이 존재하는 지, 특징은 어떠한 지 한 눈에 확인할 수 있다.

CNCF 에서 제공하는 클라우드 지형도 : https://landscape.cncf.io/

 

CNCF Landscape

 

landscape.cncf.io

 

도메인 주도 설계로 시작하는 마이크로서비스개발 part 2-2 https://silvers-dev-note.tistory.com/48