질문에 답하기 앞서 MSA(Microservices Architecture)와 Monolithic Architecture, 그리고 Multi Module 아키텍처를 비교하고 MSA를 선택한 이유를 요약해보겠습니다.
Monolithic Architecture (모놀리식 아키텍처) :
단일 애플리케이션 내에 모든 기능이 포함되는 구조.
장점: 배포가 간단하고, 통합 테스트가 쉽고, 작은 규모에서는 유지보수가 용이.
단점: 전체적인 구조 파악이 어렵고, 빌드 및 배포 시간이 길어지며, 특정 부분의 확장이 어려움.
Multi Module Architecture (멀티모듈 아키텍처) :
단일 애플리케이션 내에서 기능을 논리적으로 분리하여 각각의 모듈로 구성하는 구조.
장점: 기능별로 모듈을 분리하여 유지보수가 용이하고, 코드의 재사용성을 높일 수 있음.
단점: 모듈 간의 의존성 관리가 필요하고, 대규모 프로젝트에서도 한계가 있음.
MSA(Microservices Architecture) :
여러 개의 독립적인 서비스로 애플리케이션을 구성하는 구조.
장점: 서비스별로 개별 배포가 가능하고, 특정 서비스에 대한 확장성이 우수하며, 일부 서비스의 장애가 전체 장애로 확장될 가능성이 낮음.
단점: 서비스 간의 통신 비용과 지연 시간이 있으며, 통합 테스트가 어려움, 데이터 관리가 복잡하고, 관리가 어려워질 수 있음.
모놀리식 아키텍쳐에서 하나의 서버에 부하가 많이 간다는 단점이 있어 각 서버별로 분리하는 것이 좋을 것 같아서 MSA환경으로 구성하기로 했습니다.
➕ MSA를 선택한 이유는 프로젝트의 규모와 유연성을 고려했기 때문입니다. 우리 팀은 대규모 및 복잡한 애플리케이션을 구축하고자 했으며, 서비스 간의 독립성과 확장성이 필요했습니다. 또한, 다양한 기술 스택을 사용하고 각 서비스를 독립적으로 관리하고 배포할 수 있는 MSA의 유연성이 우리에게 적합하다고 판단했습니다. 이를 통해 팀원 간의 협업이 용이해지고, 애플리케이션의 유지보수성 및 확장성이 향상될 것으로 기대하고 있습니다.