728x90
반응형

MSA (Microservices Architecture, 마이크로서비스 아키텍처)는 소프트웨어 시스템을 여러 개의 작은 독립적인 서비스로 나누어 개발하고 운영하는 아키텍처 스타일입니다.

🔹 MSA의 핵심 개념

  1. 서비스 단위 분리: 애플리케이션을 여러 개의 독립적인 서비스로 구성
  2. 독립적인 배포 및 운영: 각 서비스는 개별적으로 개발, 배포, 확장 가능
  3. API 기반 통신: REST, gRPC, 메시지 큐(Kafka, RabbitMQ) 등을 사용해 서비스 간 통신
  4. 각 서비스별 데이터 관리: 서비스별 개별 DB 사용 (Database per service)
  5. 자동화된 운영 및 배포: CI/CD를 활용한 지속적 배포 및 운영 자동화

🔹 MSA의 장점

확장성 (Scalability): 특정 서비스만 개별적으로 확장 가능
유지보수 용이성: 각 서비스가 독립적이므로 부분 수정이 전체 시스템에 영향 없음
개발 생산성 증가: 여러 팀이 병렬적으로 개발 가능
탄력적인 기술 선택: 서비스마다 다른 기술 스택(Java, Python, Go 등) 사용 가능

🔹 MSA의 단점

복잡한 운영 관리: 서비스가 많아지면 모니터링과 장애 대응이 어려움
네트워크 비용 증가: 서비스 간 API 호출이 많아지면서 성능 저하 가능
데이터 일관성 유지 어려움: 분산된 데이터 저장으로 인해 트랜잭션 관리가 복잡

🔹 MSA vs Monolithic (모놀리식) 아키텍처 비교

비교 항목 MSA Monolithic

구조 여러 개의 독립적인 서비스 하나의 통합된 애플리케이션
배포 방식 서비스별 독립적 배포 전체 애플리케이션을 한 번에 배포
개발 속도 팀별로 병렬 개발 가능 단일 코드베이스에서 개발
확장성 특정 서비스만 확장 가능 전체 시스템을 확장해야 함
운영 복잡성 높음 (서비스 간 통신, 모니터링 필요) 상대적으로 단순

🔹 MSA를 활용한 대표적인 사례

  • Netflix: MSA를 활용해 글로벌 스트리밍 서비스 운영
  • Amazon: 주문, 결제, 배송 등을 독립적인 서비스로 운영
  • Uber: 지역별, 기능별 서비스 분리하여 확장성 확보

📌 결론:
MSA는 확장성과 유연성이 뛰어나지만, 운영 복잡성이 증가하기 때문에 적절한 모니터링, DevOps, 분산 데이터 관리 전략이 필수입니다. 🚀

728x90
반응형

+ Recent posts