클라우드네이티브환경에서 자주 등장하는 용어 중 하나는 마이크로 서비스 아키텍처(MSA)이다. MSA는 소프트웨어 아키텍처의 한 종류로 MSA를 이해하기 위해 기존에 사용하는 아키텍처인 모놀리식 아키텍처(MA)와 비교해서 이해할 필요가 있다.
모놀리식 아키텍처란(MA)?
모놀리식 아키텍처(MA)는 하나의 애플리케이션에 모든 컴포넌트가 밀접하게 연결되어 있는 구조를 의미한다. monolithic은 단단히 짜여 있다는 뜻으로 각각의 컴포넌트들이 밀접하게 연결되어 있으며, 하나의 큰 애플리케이션으로 배포되는 것을 의미한다.
모놀리식 아키텍쳐의 특징
모놀리식 아키텍처는 모든 컴포넌트가 하나의 코드베이스에서 존재하기 때문에 상호작용하는 문제를 걱정할 필요가 없어 초기에 개발 및 배포가 편리하다. 하지만 각각의 컴포넌트들이 밀접하게 연결되어 있어 특정 서비스의 추가기능 개발과 유지보수 시 APP전체에 영향을 미칠 수 있다.
정리하자면, MA 아키텍처는 하나의 애플리케이션에 모든 컴포넌트가 밀접하게 연결되어 있는 구조로 초기개발 및 배포는 편하지만, 추가기능개발 및 유지보수 측면에서 불편함이 존재한다.
마이크로 서비스 아키텍처(MSA)
마이크로서비스 아키텍처(MSA)는 애플리케이션을 여러 개의 독립적인 서비스로 나누어 각각의 서비스가 독립적으로 개발, 배포, 관리될 수 있는 구조를 의미한다. 각 서비스는 작은 기능을 수행하고, 서로 다른 기술 스택을 사용할 수 있다.
마이크로서비스 아키텍처는 서비스별로 나누어서 관리하기 때문에 특정 서비스만 별도로 확장 및 변경을 할 수 있다. 이를 통해 기존에 MA아키텍처에서 존재하는 단점을 해결할 수 있다. 하지만 각각의 서비스 간의 데이터 통신과 데이터의 일관성 관리등을 고려해야 하므로 MA 아키텍처보다 초기개발에 대한 복잡성이 증가한다.
왜 MSA를 사용해야 하는가?
MSA아키텍처는 독립성, 확장성, 유연성 측면에서 MA아키텍처보다 우수하며, 이러한 특성은 클라우드 네이티브 환경에서 사용되는 컨테이너 환경에 적합하다.
특히, MSA는 서비스별 독립적인 배포 및 확장을 가능하게 하여 성능 최적화와 비용 효율적을 극대화한다는 측면에서 비즈니스 적인 요구사항에도 적합하다. 또한, 앞으로 지향하고 잇는 DevOps 및 CI/CD 파이프라인과 연계하여 신속하고 안정적인 배포와 고가용성을 보장하기 때문에 클라우드 네이티브 환경에서 SW 아키텍처를 구상할 때는 MSA 아키텍처로 구상하는 것이 적절해 보인다.
참고자료