MSA 개념과 대표 사례들

김해나·2024년 11월 20일

Microservices Architecture(MSA)

  • 마이크로서비스 아키텍처(Microservices Architecture, MSA)는 대규모 애플리케이션을 여러 개의 작은 독립적인 서비스로 분할하여 개발하는 소프트웨어 아키텍처 스타일이다.
  • 각 서비스는 특정 비즈니스 기능을 수행하며, 가벼운 프로토콜을 통해 다른 서비스와 통신한다.
  • 서비스 간의 통신은 주로 HTTP/HTTPS, 메시지 큐 등을 통해 이루어진다.
  • 이러한 구조는 애플리케이션의 모듈성을 개선하고, 개발, 테스트, 배포를 용이하게 하며, 클라우드 환경과 잘 어울린다.
  • MSA는 서비스별로 독립적인 배포와 확장이 가능하여 장애 격리 및 신속한 업데이트가 가능하다.

모놀리틱 아키텍처(Monolithic Architecture)와 MSA 비교

구분모놀리틱 아키텍처 (Monolithic Architecture)MSA (Microservices Architecture)
정의하나의 큰 코드베이스로 구성된 애플리케이션여러 개의 독립적인 서비스로 구성된 애플리케이션
구성모든 기능이 하나의 애플리케이션에 포함각 서비스가 특정 비즈니스 기능을 수행
데이터베이스단일 데이터베이스각 서비스별로 독립적인 데이터베이스 사용 가능
배포 방식모든 코드를 한 번에 배포서비스별로 독립적 배포 가능
확장성전체 애플리케이션을 확장해야 함특정 서비스만 확장 가능
기술 스택단일 기술 스택에 종속서비스별로 다양한 기술 스택 선택 가능
운영 복잡성낮음높음
트랜잭션 관리단일 데이터베이스로 쉽게 관리서비스 간 분산 트랜잭션으로 복잡성 증가
배포 속도느림빠름
변경 관리전체 애플리케이션 다시 배포개별 서비스만 업데이트 가능
네트워크 지연네트워크를 통한 통신 없음서비스 간 통신에 네트워크 지연 발생 가능
유연성낮음높음
운영 비용낮음높음

Monolithic Architecture가 적합한 경우❔

  1. 작은 규모의 프로젝트: 초기 개발이 간단하고 빠르게 진행되어야 하는 중소 규모의 애플리케이션에 적합하다.
  2. 일관된 트랜잭션 처리: 모든 기능이 하나의 트랜잭션으로 관리되어야 하는 경우, 단일 네트워크 상에서 에러 처리가 용이하다.

    예) 초기단계의 블로그 플랫폼, 소규모 e-Commerce 사이트, 중소기업의 사내 인트라넷 관리 시스템 등

MSA가 적합한 경우❔

  1. 대규모 시스템: 다양한 기능과 높은 확장성이 요구되는 대규모 시스템에 적합하다. 서비스별로 독립적인 배포가 가능해 변화에 유연하게 대응할 수 있다.
  2. 빈번한 업데이트 및 새로운 기술 도입: 빠른 기술 변화에 대응하고, 개별 서비스 단위로 업데이트가 필요한 경우 유리하다.

    예) 스트리밍 플랫폼, 온라인 교육 플랫폼, 대규모 전자상거래 플랫폼, SNS, 차량 호출 서비스 등

MSA의 장단점

장점 😆

  • 확장성: 각 서비스는 독립적으로 확장 가능, 특정 기능에 대한 성능 최적화가 용이
  • 유연성: 다양한 기술 스택을 사용하여 서비스별 최적화 가능
  • 독립적 배포: 서비스별로 독립적 배포가 가능하여 배포 주기를 단축
  • 작은 팀 구성: 서비스별 작은 팀으로 구성되어 민첩한 개발 가능

단점 😣

  • 복잡성: 서비스 간 통신, 데이터 일관성 유지, 트랜잭션 관리 등의 복잡성이 증가
  • 운영비용: 각 서비스의 모니터링, 로깅, 장애 대응 등을 개별적으로 관리해야 하므로 운영 비용이 증가
  • 데이터 관리: 분산된 데이터베이스로 인해 데이터 일관성 유지가 어려울 수 있음
  • 네트워크 지연: 서비스 간의 통신이 네트워크를 통해 이루어지므로 지연 시간이 발생할 수 있음

MSA의 대표 사례들

아마존(Amazon)

아마존은 초기 모놀리식 아키텍처로 시작했으나, 시스템의 복잡성과 확장성 문제로 인해 MSA로 전환했다. 각 서비스는 독립적으로 개발 및 배포되며, RESTful API를 통해 통신한다. 데이터 관리를 위해 Amazon DynamoDB, Aurora, RDS 등을 활용하고, 인프라 관리를 위해 AWS 클라우드 서비스와 Docker, Kubernetes를 사용한다. 이를 통해 서비스의 확장성과 안정성이 향상되었으며, 개발 및 배포 속도가 빨라졌다.

아마존의 "서비스 지향 아키텍처(Service-Oriented Architecture)"는 우리가 오늘날 마이크로서비스라고 부르는 개념의 시작이었다. 이를 통해 아마존은 AWS(Amazon Web Services)와 같은 마이크로서비스 아키텍처를 지원하는 여러 솔루션을 개발했으며, 현재 이를 전 세계 기업에 제공하고 있다.

넷플릭스(Netflix)

넷플릭스는 2008년 대규모 데이터베이스 장애를 겪은 후, 기존 모놀리식 아키텍처의 한계를 인식하고 MSA로 전환을 시작했다. 이를 통해 서비스의 유연성과 확장성을 확보하고, 장애 발생 시에도 전체 시스템이 아닌 일부 서비스에만 영향을 미치도록 설계했다. 또한, 넷플릭스는 MSA 도입 과정에서 Eureka, Hystrix, Ribbon, Zuul 등 다양한 오픈 소스 도구(OSS: Open Source Software)를 개발하여 공개하였으며, 이는 MSA 구현에 널리 활용되고 있다. (ex. Spring Cloud) Netflix 구조 넷플릭스의 성과

  • 2013년, 넷플릭스의 API 게이트웨이는 매일 20억 개의 API 요청을 처리했으며, 500개 이상의 클라우드 기반 마이크로서비스로 관리되었다.
  • 2017년, 넷플릭스의 아키텍처는 700개 이상의 느슨하게 결합된 마이크로서비스로 구성되었다.
  • 넷플릭스는 연간 약 80억 달러의 수익을 창출하며, 전 세계 220개국 2억 2천만 명 이상의 가입자에게 매주 약 60억 시간의 콘텐츠를 스트리밍하고 있다.

우버(Uber)

우버 역시 초기에는 모놀리식 설계로 시작했지만, 이는 빠르게 성장하는 플랫폼에 적합하지 않았다. 우버는 탑승 고객, 운전자, 지불 처리, 위치 추적 등 다양한 기능을 클라우드 기반 마이크로서비스로 분리하고 API 게이트웨이를 통해 각 마이크로서비스를 연결했다. 각 서비스는 독립적으로 확장 가능하며, 전체 시스템이 안정적으로 동작한다.

결론

마이크로서비스 아키텍처(MSA)는 대규모 시스템을 유연하고 확장 가능하게 만들어 현대적인 애플리케이션 개발에 중요한 접근 방식으로 자리 잡았다. 아마존, 넷플릭스, 우버와 같은 글로벌 기업들은 모놀리틱 아키텍처에서 MSA로 전환함으로써 각각의 비즈니스 과제를 해결하고, 폭발적인 성장을 이루었다.

아마존은 서비스 지향 아키텍처(SOA)를 통해 MSA의 초석을 다졌고, 넷플릭스는 오픈 소스 도구를 활용하여 MSA를 대중화하는 데 기여했다. 우버는 빠르게 성장하는 플랫폼의 문제를 해결하기 위해 MSA를 도입해 성공적인 확장을 이루었다. 이들은 MSA가 어떻게 서비스 확장성과 장애 격리, 효율성을 제공할 수 있는지 보여주는 훌륭한 사례들이다.

이 글을 작성하며 아쉬웠던 점은, 짧은 시간 내에 다양한 MSA 사례를 체계적으로 정리한 자료를 찾는 것이 쉽지 않았다는 것이다. 특히, 실제 서비스 구조나 세부 구현 방법을 명확히 이해하기 위해서는 추가적인 검색과 기술적 깊이가 필요했다.

그럼에도 불구하고, 각 사례를 분석하며 MSA의 강점과 도입 시 발생하는 과제들을 구체적으로 이해할 수 있었다. MSA는 단순한 기술적 트렌드가 아닌, 비즈니스의 민첩성과 확장성을 강화하는 핵심 전략임을 다시 한번 깨닫게 되었다.

참고

0개의 댓글