[MSA] MSA 개념

SuJeong.K·2024년 10월 25일
0
post-thumbnail

MSA란?

MSA (Micro Service Architecture)란 하나의 큰 애플리케이션을 여러개의 작은 서비스로 나누어 개발하는 소프트웨어 아키텍처 스타일이다. 각 마이크로 서비스는 특정 기능을 담당하는 개별적인 애플리케이션으로 독립적으로 배포되고 운영될 수 있다. 이 방식은 기존의 모놀리식 아키텍처와는 대조적이다.

특징

  • 독립적인 배포
    : 각 서비스를 독립적으로 배포하고 업데이트할 수 있다.
  • 다양한 기술 스택
    : 서비스 별로 다른 언어 및 데이터베이스를 사용할 수 있다.
  • 경량화된 통신
    : HTTP/REST API 또는 메세지 브로커를 통해 통신하며 서비스 간 복잡성을 줄인다.
  • 장애 격리
    : 하나의 서비스 오류가 전체 시스템에 미치는 영향을 줄일 수 있다.


모놀리식 vs MSA 비교

Monolithic Architecture

전통적인 개발 방식으로 모든 기능이 하나의 단일 애플리케이션으로 구축되어 배포되는 구조이다.

장점

  • 개발, 배포, 관리가 간단하고 데이터 간의 통신이 빠르며, 전체 애플리케이션을 한 번에 테스트하여 배포할 수 있다.

단점

  • 기능 추가 및 변경이 전체 애플리케이션에 영향을 미치며, 부분 수정 시에도 전체 시스템을 다시 배포해야한다.
  • 코드 베이스가 커질수록 복잡해지고 유지보수가 어려워질 수 있다.

적용 분야

  • 주로 소규모 및 단기 프로젝트 또는 프로토타입 제작에 적합하다.

Microservice Architecture (MSA)

애플리케이션을 여러 개의 독립적인 서비스로 나누어 구축하는 구조이다.

장점

  • 서비스 별로 독립적인 개발과 배포가 가능하므로, 특정 기능의 변경이 전체 시스템에 영향을 미치지 않는다.
  • 각 서비스 별로 다른 기술 스택을 사용할 수 있어 개발자가 적합한 도구를 선택할 수 있다.

단점

  • 서비스 간의 통신 및 데이터 관리를 위한 인프라가 필요하고 시스템 복잡성을 증가시킨다.
  • 각 서비스가 독립적으로 동작하기 때문에 전체 시스템의 통합테스트가 어렵고 배포와 모니터링이 복잡해 질 수 있다.

적용 분야

  • 주로 대규모 및 복잡한 프로젝트에 적합하고 시스템을 독립적으로 개발하고 확장해야하는 경우에 사용한다.

0개의 댓글