https://medium.com/@MilanJovanovicTech/what-is-a-modular-monolith-babd989a4ea2
모듈형 모놀리스는 애플리케이션을 잘 정의된 경계를 가진 독립적인 모듈 또는 구성 요소로 구조화하는 아키텍처 패턴입니다. 모듈은 논리적 경계를 기준으로 분할되어 관련 기능을 함께 그룹화합니다. 이 접근 방식은 시스템의 응집력을 크게 향상시킵니다.모듈은 느슨하게 결합되어 있어 모듈화와 분리를 더욱 촉진합니다. 모듈은 공용 API를 통해 통신하며, 이에 대한 자세한 내용은 모듈형 모놀리스 통신 패턴에 대한 글에서 확인할 수 있습니다.그렇다면 모듈식 설계의 장점은 무엇일까요?
모듈형 모놀리스와 마이크로서비스의 가장 큰 차이점은 배포 방식에 있습니다. 마이크로서비스는 모듈형 모놀리스 내부의 논리적 경계를 물리적 경계로 확장합니다.
마이크로서비스는 모듈화를 위한 명확한 전략을 제공하고 경계가 있는 컨텍스트를 분해합니다. 하지만 분산 시스템을 구축하지 않고도 이를 달성할 수 있습니다. 문제는 사람들이 마이크로서비스를 사용하여 코드 경계를 강제한다는 것입니다.
대신 모듈형 모놀리스를 구축하여 동일한 이점을 대부분 얻을 수 있습니다. 모듈형 모놀리스는 높은 응집력, 낮은 결합, 데이터 캡슐화, 비즈니스 기능에 대한 집중 등을 제공합니다.
마이크로서비스는 이 모든 장점에 더해 독립적인 배포, 독립적인 확장성, 서비스별로 다양한 기술 스택을 사용할 수 있는 기능을 제공합니다.
모놀리식 코드베이스가 복잡해서 마이크로서비스를 선택하는 것이 아니라 이점을 위해 마이크로서비스를 선택하세요.
— Simon Brown