Modular Monolithic Architecture를 알아보기 이전에 먼제 Monolith와 Microservice Architecture를 알아보는 시간을 가져보겠습니다.
Monolithic Architecture란 소프트웨어의 모든 구성 요소가 한 프로젝트에 통합되어 있는 전통적인 아키텍쳐 모델입니다.
시스템의 모든 요구사항이 단일 서비스로 실행되기 때문에 각각의 프로세스가 긴밀하게 연결되어 있다는 특징이 존재합니다.
현대 사회에서는 요구사항이 빠르게 변화했고 서비스들은 이러한 변화를 빠르게 적용해야만 했습니다. 기존의 Monolithic Architecture로는 이러한 변화에 긴밀하게 대응할수가 없었죠.
그래서 고안된 아키텍쳐가 바로 MicroService Architecture입니다. 여러개의 작은 서비스가 모여 하나의 시스템이 되는 모델이죠. MicroService는 작고 독립적이며, 느슨하게 결합되어 있어 빠르게 요구사항을 반영할 수 있다는 특징이 있습니다.
MicroService Architecture에도 여러 단점이 존재하지만, 변화하는 요구사항에 빠르게 대응할 수 있다는 장점을 바탕으로 최근 많은 기업들이 MicroService Archtecture를 소프트웨어 아키텍처로 선택하고 있습니다. 또한, 기존의 Monolithic Architecture를 MicroService Architecture로 마이그레이션 하는 기업들도 늘어나고 있지요.
하지만 운영 복잡성과 서버 비용의 부담으로 MicroService에서 Monolithic으로 다시 전환하는 사례 또한 발생하고 있습니다. 이러한 현실로 인해 우리는 개발간 어떤 아키텍처를 선택해야 할지 큰 고민을 해야만 합니다.
최근 Monolithic과 MicroService Architecture 각각의 단점들이 부상되고 있는 가운데, Modular Monolithic Architecture가 새로운 대안으로 제안되고 있습니다. 그렇다면 Modular Monolithc은 과연 무엇일까요?
Modular Monolithic Architecture는 하나의 서비스에서 각 로직을 모듈로 나누는 방식이며, 각 모듈은 독립적이고 격리된다는 특징이 있습니다. 각각의 로직을 모듈화 하여 필요한 모듈끼리만 서로 의존하는 관계로 만드는 것입니다.
Modular Monolithic 방식이 떠오르게 된 이유는 바로 Migration의 용이성에 있습니다.
이전에 만들어진 대부분의 legacy 프로젝트는 Monolithic Architecture를 기반으로 시스템을 개발하였습니다.
이러한 시스템들은 최근 빠르게 변화하는 요구사항을 반영하기 위해 MicroService Archtecture로 전환하고 싶지만 legacy 코드의 강한 결합성을 끊어 MicroService로 전환하는 것은 굉장히 어려운 일입니다.
이러한 문제상황에서 완벽하게 독립적이진 않지만 결합성을 분리해 독립적으로 관리할 수 있는 Modular Monolithic Architecture는 MicroService Architecture로 가는 중간 과정이 될 수 있습니다.
하지만 Modular Monolithic Architecture에는 한가지 단점이 존재했습니다. 바로 약간의 의존성인데요. 각 모듈은 서로 의존관계를 가질 수 있다는 점으로 인해 개발자의 실력에 따라 아키텍처의 구성이 올바를수도, 올바르지 않을수도 있었다는 점입니다.
Modular Monolithic Architecture를 기반으로 시스템을 구성했다고 하더라도, 이는 덜 결합한 Monolithic Architecture가 될 확률이 높았다는 것이죠.
이러한 부분을 개선하기 위해 최근 여러 프레임워크에서 Modular Monolithic Architecture을 지원하는 기술들을 개발중에 있다고 합니다.
대표적으로는 Spring Modulith와 Across Framework가 있는데요. 다음 글에서는 Spring Modulith에 대한 개념을 설명해보도록 하겠습니다.
읽어주셔서 감사합니다.
우아한 모노리스
Moduler Monolithic 아키텍처
Microservices Killer: Modular Monolithic Architecture
좋은 내용 잘봤습니다. 오타 있어서 얘기드립니다. Monolithic Architecture의 장단점이 두번나옵니다 ㅎㅎ