MSA란?

sinryuji·2025년 2월 12일
post-thumbnail

MSA

  • MSA는 Microservices Architecture의 약자로 하나의 어플리케이션을 독립적인 서비스로 분리하여 개발, 배포, 유지 보수를 용이하게 하는 소프트웨어 아키텍처 스타일.
  • 각 서비스는 특정 비즈니스 기능을 수행하며, 서로 독립적으로 배포되고 확장 가능.
  • 서비스 간의 통신은 HTTP, 메시지 큐, GraphQL 등으로 이루어짐.

Monolithic vs MSA

Monolithic

정의

  • 하나의 큰 코드베이스로 구성된 아키텍처.
  • 모든 기능이 하나의 어플리케이션에 포함.

장점

  • 간단한 배포
    • 모든 코드가 하나의 코드베이스에 존재해 배포가 단순.

단점

  • 확장성 부족
    • 특정 일부 기능만 확장 하려고해도 어플리케이션 전체를 확장해야 함.
  • 통합 배포
    • 작은 변경 사항에도 어플리케이션 전체를 재배포 해야함.
  • 유연성 부족
    • 새로운 기술 도입이 어렵고 특정 기술에 종속적임.

MSA

정의

  • 여러개의 독립적인 서비스로 구성.
  • 각 서비스는 특정 비즈니스 기능을 수행.

장점

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

단점

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

0개의 댓글