기존 Spring Boot 프로젝트의 복잡성과 유지보수 문제를 해결하며, 마이크로서비스의 복잡성 없이 모놀리식 애플리케이션을 깔끔하고 모듈화된 방식으로 구조화합니다. 🤯
Spring Modulith는 각 기능을 명확한 경계, 느슨한 결합, 이벤트 기반 통신을 가진 독립적인 모듈로 구성하여 아키텍처를 개선합니다. 🧩
'Modulith'는 'Modular'와 'Monolith'의 합성어로, 모놀리식 내부에서 각 도메인을 개별 패키지(모듈)로 관리하는 접근 방식을 의미하며, 마이크로서비스로의 급진적인 전환 없이 점진적인 개선을 가능하게 하는 중간 경로를 제공합니다. 💡
주요 기능으로는 명확한 모듈 경계, 느슨한 결합, ApplicationEvent를 활용한 비동기 통신, 런타임 관찰 가능성, 모듈 수준 테스트가 있습니다. 🏗️
스마트 주차 시스템 예시를 통해, entry 모듈에서 VehicleEnteredEvent를 발행하면 allocation 모듈이 이를 @EventListener로 소비하여 슬롯 할당을 처리하는 등, 모듈 간 이벤트 기반 통신으로 느슨한 결합을 구현하는 과정을 시연합니다. 📡
모듈은 별도의 멀티모듈 프로젝트가 아닌, 모놀리식 애플리케이션 내의 개별 패키지로 정의되어 구현의 복잡성을 줄입니다. 📁