저는 현재 이커머스 플랫폼 개인 프로젝트를 진행하고 있습니다.
이커머스 특성상 많은 이벤트와 높은 트래픽을 효과적으로 처리하기 위해 MSA를 고려하고 있었습니다.
Monolithic 아키텍처에서 Microservices 아키텍처로의 전환 계획에 대해 이야기해보려고 합니다.
1. 현재 상태: Monolithic 아키텍처
현재 프로젝트는 Monolithic 아키텍처로 진행 중입니다.
Monolithic 아키텍처는 초기 개발이 빠르고 간단하며, 배포와 테스트가 비교적 용이합니다.
모든 기능이 하나의 애플리케이션에 존재하여 통합된 형태로 동작합니다.
- 한계점
- 유지보수 어려움: 애플리케이션이 커지면서 도메인들이 서로 하나의 Application 안에서 강하게 결함되어 있어 유지보수가 어려워짐
- 부분 장애: 도메인 하나의 장애가 서비스 전체에 영향을 미침
- 높은 트래픽 처리의 비효율성: 이커머스 플랫폼 특성상 트래픽이 높아질 때 단일 애플리케이션으로 트래픽을 효과적으로 처리하기 어려워짐
- 배포의 비효율성: 빌드 및 배포 시간이 길어서 생산성이 떨어짐
- 특정 이벤트나 행사 같은 특정 도메인 이벤트를 추가하거나 수정할 때도 전체 애플리케이션을 다시 배포해야 하는 비효율성
2. MSA 아키텍처로 전환하려고 하는 이유
- 독립적인 서비스 배포: 각 서비스가 독립적으로 배포 가능하여 부분적인 업데이트나 배포가 쉬움
- 유지보수성 향상: 서비스를 분리함으로써 애플리케이션의 범위가 작아져 각 서비스의 유지보수가 쉬워짐
- 높은 트래픽 처리: 각 서비스가 독립적으로 배포가 가능하므로 높은 트래픽을 효율적으로 처리할 수 있음
- 자원 효율성: 필요한 서비스만 확장 가능하기 때문에 자원을 효율적으로 사용가능
MSA의 단점★
- 통합 테스트 어려움: 여러 서비스가 상호작용하기 때문에 통합 테스트가 복잡해지고, 모든 서비스 간의 상호작용을 검증하기 어려움.