티스토리 뷰

https://medium.com/@MilanJovanovicTech/what-is-a-modular-monolith-babd989a4ea2

 

What is a Modular Monolith?

모듈형 모놀리스는 애플리케이션을 잘 정의된 경계를 가진 독립적인 모듈 또는 구성 요소로 구조화하는 아키텍처 패턴입니다. 모듈은 논리적 경계를 기준으로 분할되어 관련 기능을 함께 그룹화합니다. 이 접근 방식은 시스템의 응집력을 크게 향상시킵니다.

모듈은 느슨하게 결합되어 있어 모듈화와 분리를 더욱 촉진합니다. 모듈은 공용 API를 통해 통신하며, 이에 대한 자세한 내용은 모듈형 모놀리스 통신 패턴에 대한 글에서 확인할 수 있습니다.
그렇다면 모듈식 설계의 장점은 무엇일까요?

 

Benefits of a Modular Monolith

  • 배포 간소화 - 복잡한 배포 전략이 필요한 마이크로서비스와 달리 모듈형 모놀리스는 단일 단위로 배포할 수 있습니다.
  • 성능 향상 - 모듈 간의 통신은 프로세스 중에 이루어집니다. 즉, 네트워크 지연 시간이나 데이터 직렬화/역직렬화 오버헤드가 없습니다.
  • 개발 속도 향상 - 관리할 코드베이스가 하나이므로 디버깅과 전반적인 개발 환경이 간소화됩니다.
  • 간편한 트랜잭션 관리 - 분산 시스템에서 트랜잭션 관리는 매우 까다롭습니다. 모듈형 모놀리스는 모듈이 동일한 데이터베이스를 공유할 수 있으므로 이 작업을 간소화합니다.
  • 운영 복잡성 감소 - 모듈형 모놀리스는 분산형 마이크로서비스 시스템을 관리하고 배포할 때 발생하는 운영 오버헤드를 줄여줍니다.
  • 마이크로서비스로의 손쉬운 전환 - 잘 구조화된 모듈식 모놀리스는 마이크로서비스 아키텍처로 가는 명확한 경로를 제공합니다. 필요에 따라 점진적으로 모듈을 별도의 서비스로 추출할 수 있습니다.

 

Modular Monolith vs Microservices

모듈형 모놀리스와 마이크로서비스의 가장 큰 차이점은 배포 방식에 있습니다. 마이크로서비스는 모듈형 모놀리스 내부의 논리적 경계를 물리적 경계로 확장합니다.

마이크로서비스는 모듈화를 위한 명확한 전략을 제공하고 경계가 있는 컨텍스트를 분해합니다. 하지만 분산 시스템을 구축하지 않고도 이를 달성할 수 있습니다. 문제는 사람들이 마이크로서비스를 사용하여 코드 경계를 강제한다는 것입니다.

대신 모듈형 모놀리스를 구축하여 동일한 이점을 대부분 얻을 수 있습니다. 모듈형 모놀리스는 높은 응집력, 낮은 결합, 데이터 캡슐화, 비즈니스 기능에 대한 집중 등을 제공합니다.

마이크로서비스는 이 모든 장점에 더해 독립적인 배포, 독립적인 확장성, 서비스별로 다양한 기술 스택을 사용할 수 있는 기능을 제공합니다.

모놀리식 코드베이스가 복잡해서 마이크로서비스를 선택하는 것이 아니라 이점을 위해 마이크로서비스를 선택하세요.
 Simon Brown

 

 

공지사항