
| 구분 | 모놀리틱 아키텍처 (Monolithic Architecture) | MSA (Microservices Architecture) |
|---|---|---|
| 정의 | 하나의 큰 코드베이스로 구성된 애플리케이션 | 여러 개의 독립적인 서비스로 구성된 애플리케이션 |
| 구성 | 모든 기능이 하나의 애플리케이션에 포함 | 각 서비스가 특정 비즈니스 기능을 수행 |
| 데이터베이스 | 단일 데이터베이스 | 각 서비스별로 독립적인 데이터베이스 사용 가능 |
| 배포 방식 | 모든 코드를 한 번에 배포 | 서비스별로 독립적 배포 가능 |
| 확장성 | 전체 애플리케이션을 확장해야 함 | 특정 서비스만 확장 가능 |
| 기술 스택 | 단일 기술 스택에 종속 | 서비스별로 다양한 기술 스택 선택 가능 |
| 운영 복잡성 | 낮음 | 높음 |
| 트랜잭션 관리 | 단일 데이터베이스로 쉽게 관리 | 서비스 간 분산 트랜잭션으로 복잡성 증가 |
| 배포 속도 | 느림 | 빠름 |
| 변경 관리 | 전체 애플리케이션 다시 배포 | 개별 서비스만 업데이트 가능 |
| 네트워크 지연 | 네트워크를 통한 통신 없음 | 서비스 간 통신에 네트워크 지연 발생 가능 |
| 유연성 | 낮음 | 높음 |
| 운영 비용 | 낮음 | 높음 |
예) 초기단계의 블로그 플랫폼, 소규모 e-Commerce 사이트, 중소기업의 사내 인트라넷 관리 시스템 등
예) 스트리밍 플랫폼, 온라인 교육 플랫폼, 대규모 전자상거래 플랫폼, SNS, 차량 호출 서비스 등
아마존은 초기 모놀리식 아키텍처로 시작했으나, 시스템의 복잡성과 확장성 문제로 인해 MSA로 전환했다. 각 서비스는 독립적으로 개발 및 배포되며, RESTful API를 통해 통신한다. 데이터 관리를 위해 Amazon DynamoDB, Aurora, RDS 등을 활용하고, 인프라 관리를 위해 AWS 클라우드 서비스와 Docker, Kubernetes를 사용한다. 이를 통해 서비스의 확장성과 안정성이 향상되었으며, 개발 및 배포 속도가 빨라졌다.
아마존의 "서비스 지향 아키텍처(Service-Oriented Architecture)"는 우리가 오늘날 마이크로서비스라고 부르는 개념의 시작이었다. 이를 통해 아마존은 AWS(Amazon Web Services)와 같은 마이크로서비스 아키텍처를 지원하는 여러 솔루션을 개발했으며, 현재 이를 전 세계 기업에 제공하고 있다.
넷플릭스는 2008년 대규모 데이터베이스 장애를 겪은 후, 기존 모놀리식 아키텍처의 한계를 인식하고 MSA로 전환을 시작했다. 이를 통해 서비스의 유연성과 확장성을 확보하고, 장애 발생 시에도 전체 시스템이 아닌 일부 서비스에만 영향을 미치도록 설계했다. 또한, 넷플릭스는 MSA 도입 과정에서 Eureka, Hystrix, Ribbon, Zuul 등 다양한 오픈 소스 도구(OSS: Open Source Software)를 개발하여 공개하였으며, 이는 MSA 구현에 널리 활용되고 있다. (ex. Spring Cloud)
넷플릭스의 성과
우버 역시 초기에는 모놀리식 설계로 시작했지만, 이는 빠르게 성장하는 플랫폼에 적합하지 않았다. 우버는 탑승 고객, 운전자, 지불 처리, 위치 추적 등 다양한 기능을 클라우드 기반 마이크로서비스로 분리하고 API 게이트웨이를 통해 각 마이크로서비스를 연결했다. 각 서비스는 독립적으로 확장 가능하며, 전체 시스템이 안정적으로 동작한다. 
마이크로서비스 아키텍처(MSA)는 대규모 시스템을 유연하고 확장 가능하게 만들어 현대적인 애플리케이션 개발에 중요한 접근 방식으로 자리 잡았다. 아마존, 넷플릭스, 우버와 같은 글로벌 기업들은 모놀리틱 아키텍처에서 MSA로 전환함으로써 각각의 비즈니스 과제를 해결하고, 폭발적인 성장을 이루었다.
아마존은 서비스 지향 아키텍처(SOA)를 통해 MSA의 초석을 다졌고, 넷플릭스는 오픈 소스 도구를 활용하여 MSA를 대중화하는 데 기여했다. 우버는 빠르게 성장하는 플랫폼의 문제를 해결하기 위해 MSA를 도입해 성공적인 확장을 이루었다. 이들은 MSA가 어떻게 서비스 확장성과 장애 격리, 효율성을 제공할 수 있는지 보여주는 훌륭한 사례들이다.
이 글을 작성하며 아쉬웠던 점은, 짧은 시간 내에 다양한 MSA 사례를 체계적으로 정리한 자료를 찾는 것이 쉽지 않았다는 것이다. 특히, 실제 서비스 구조나 세부 구현 방법을 명확히 이해하기 위해서는 추가적인 검색과 기술적 깊이가 필요했다.
그럼에도 불구하고, 각 사례를 분석하며 MSA의 강점과 도입 시 발생하는 과제들을 구체적으로 이해할 수 있었다. MSA는 단순한 기술적 트렌드가 아닌, 비즈니스의 민첩성과 확장성을 강화하는 핵심 전략임을 다시 한번 깨닫게 되었다.