모놀리식 아키텍쳐(MA)와 마이크로 서비스 아키텍쳐(MSA)

728x90

클라우드네이티브환경에서 자주 등장하는 용어 중 하나는 마이크로 서비스 아키텍처(MSA)이다. MSA는 소프트웨어 아키텍처의 한 종류로 MSA를 이해하기 위해 기존에 사용하는 아키텍처인 모놀리식 아키텍처(MA)와 비교해서 이해할 필요가 있다.

 

etc-image-0

 

모놀리식 아키텍처란(MA)?

모놀리식 아키텍처(MA)는 하나의 애플리케이션에 모든 컴포넌트가 밀접하게 연결되어 있는 구조를 의미한다. monolithic은 단단히 짜여 있다는 뜻으로 각각의 컴포넌트들이 밀접하게 연결되어 있으며, 하나의 큰 애플리케이션으로 배포되는 것을 의미한다.

 

모놀리식 아키텍쳐의 특징

모놀리식 아키텍처는 모든 컴포넌트가 하나의 코드베이스에서 존재하기 때문에 상호작용하는 문제를 걱정할 필요가 없어 초기에 개발 및 배포가 편리하다. 하지만 각각의 컴포넌트들이 밀접하게 연결되어 있어 특정 서비스의 추가기능 개발과 유지보수 시 APP전체에 영향을 미칠 수 있다.

 

정리하자면, MA 아키텍처는 하나의 애플리케이션에 모든 컴포넌트가 밀접하게 연결되어 있는 구조로 초기개발 및 배포는 편하지만, 추가기능개발 및 유지보수 측면에서 불편함이 존재한다.

 

마이크로 서비스 아키텍처(MSA)

마이크로서비스 아키텍처(MSA)는 애플리케이션을 여러 개의 독립적인 서비스로 나누어 각각의 서비스가 독립적으로 개발, 배포, 관리될 수 있는 구조를 의미한다. 각 서비스는 작은 기능을 수행하고, 서로 다른 기술 스택을 사용할 수 있다. 

 

마이크로서비스 아키텍처는 서비스별로 나누어서 관리하기 때문에 특정 서비스만 별도로 확장 및 변경을 할 수 있다. 이를 통해 기존에 MA아키텍처에서 존재하는 단점을 해결할 수 있다. 하지만 각각의 서비스 간의 데이터 통신과 데이터의 일관성 관리등을 고려해야 하므로 MA 아키텍처보다 초기개발에 대한 복잡성이 증가한다.

 

왜 MSA를 사용해야 하는가?

MSA아키텍처는 독립성, 확장성, 유연성 측면에서 MA아키텍처보다 우수하며, 이러한 특성은 클라우드 네이티브 환경에서 사용되는 컨테이너 환경에 적합하다.

 

특히, MSA는 서비스별 독립적인 배포 및 확장을 가능하게 하여 성능 최적화와 비용 효율적을 극대화한다는 측면에서 비즈니스 적인 요구사항에도 적합하다. 또한, 앞으로 지향하고 잇는 DevOps 및 CI/CD 파이프라인과 연계하여 신속하고 안정적인 배포와 고가용성을 보장하기 때문에 클라우드 네이티브 환경에서 SW 아키텍처를 구상할 때는 MSA 아키텍처로 구상하는 것이 적절해 보인다.

 

 

 

참고자료

https://yozm.wishket.com/magazine/detail/1813/

728x90