MSA(MicroService Architecture)

CUBE·2023년 10월 13일
0

CS 지식

목록 보기
8/10

MSA 는 소프트웨어 아키텍처 중 하나 입니다.

MSA는 작고, 독립적으로 배포 가능한 각각의 기능을 수행하는 서비스들로 구성된 프레임워크 입니다.

경량화되고 독립적인 여러 개의 서비스를 조합하여 애플리케이션을 구현하는 방식으로 서비스 마다 자체 데이터 베이스를 가지고 동작하기 때문에 개발부터 빌드, 배포까지 효율적으로 수행할 수 있습니다.

MSA 등장배경

애플리케이션 개발 초기에는 전체 소스 코드를 하나의 배포 유닛(war, ear) 로 내장시키는
Monolithic 방식을 사용하였습니다. 하지만 기존 애플리케이션의 사소한 변경이 있더라도 자체적인 QA(Quality Asurance) 주기에 따라 업데이트를 하거나 일부 서비스 업데이트로 오류가 발생한 경우 전체 시스템을 중단하고 오류를 해결하는 등의 다운타임이 발생하는 일이 빈번하였다고 합니다.

이러한 문제점을 해결하기 위해 애플리케이션의 핵심 서비스를 분할하는 MicroService Architecture 라는 방식이 생겨났으며 각 서비스들을 독립적으로 구축하고 배포할 수 있게 되었습니다.

monolithic 이란?
소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어 있는 형태이며, 모듈별로 개발을 하고 개발이 완료된 하나의 결과물로 패키징 하여 배포되는 형태를 의미 합니다.

장점

  • 개발 초기에는 단순한 아키텍처 구조와 개발이 용이 합니다.
    단점
  • 서비스 규모가 커짐에 따라 전체 시스템 구조 파악 및 유지보수가 어려워집니다.
  • 부분 장애가 전체 서비스의 장애로 확대될 수 있습니다.
  • 배포 시간이 오래걸립니다.
  • 한 Framework와 언어에 종석됩니다.
  • 부분적인 Scale-out(여러 서버로 나누어서 일을 처리하는 방식)이 어렵습니다.

MSA의 장점

  • 분산형 개발을 통해 주기가 단축되기 때문에 빠르고 유연한 배포가 가능합니다.(출시기간 단축)
  • 서비스가 독립적이기 때문에 다른 서비스에게 영향을 주지 않습니다.(복구능력이 뛰어남)
  • 서비스별 기술 도입 및 확장이 자유롭습니다.(높은 확장성)
  • 모놀리식 방식에 비해 애플리케이션이 모듈화 되고 규모가 작기 때문에, 우려사항이 줄어듭니다.(배포가 손쉽습니다.)
  • 다중 언어 지원(Polyglot) API를 사용합니다.(향상된 개방성)
  • 하나의 애플리케이션을 여러 부분으로 분할했기 때문에 각 서비스 업데이트 및 개선이 용이 합니다. (편리한 엑세스)

MSA의 단점

  • 각 서비스들은 API를 통해 통신하므로 네트워크 통신에 의한 오버헤드가 발생합니다.
  • 서비스 별로 각 로그가 생성되므로 중앙 로그 모니터링이 존재하지 않습니다.
  • 하나의 프로젝트에 수많은 서비스들이 존재하므로 모든 서비스 모니터링 오버헤드가 증가합니다.
  • 하나의 서비스에서 다른 서비스를 호출하므로 장애 발생 시, 경로 및 장애 추적이 힘듭니다.
  • 서비스가 분산되어 있기 때문에 모놀리식에 비해 상대적으로 많이 복잡합니다.
profile
엄마이오빠이상해

0개의 댓글