MSA(Microservice Architecture)

newVelog·2024년 4월 22일
0

CS

목록 보기
18/31

MSA

하나의 큰 어플리케이션을 여러개의 작은 어플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍쳐

Monolithic Architecture

Monolithic Architecture는 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어있는 형태이다.
형태가 간단다고 유지보수가 용이해 소규모 프로젝트에는 Monolithic Architecture가 합리적일 경우가 많다.
하지만 서비스의 규모가 커지거나 투입되는 개발자가 많이지면 아래와 같은 한계가 보이게 된다.

  • 서비스/프로젝트가 커질수록 영향도 파악 및 전체 시스템 구조 파악이 어려움
  • 빌드 시간 및 테스트 시간, 배포시간이 기하급수적으로 늘어남
  • 서비스를 부분적으로 scale-out(확장)하기가 힘듦
  • 부분의 장애가 전체 서비스의 장애로 이어질 수 있음

이처럼 Monolithic Architecture의 한계점을 극복하고자 MSA가 등장하게 되었다.

MSA 정의

MSA는 1개의 시스템을 독립적으로 배포 가능한 각각의 서비스로 분할하고 그 서비스들은 API를 통해 데이터를 주고 받으며 1개의 큰 서비스를 구성한다.

장점

  • 배포(deployment)의 관점으로 서비스 별 개별 배포 가능해 배포 시 전체 서비스의 중단이 없음
  • 확장(scaling)의 관점으로 특정 서비스에 대한 확장성이 용이함
  • 장애(failure)의 관점으로 일부 서비스에 장애가 발생해도 전체 서비스로 확장될 가능성이 적음
  • 각각의 서비스들은 서로 다른 언어와 프레임워크로 구성될 수 있고 신기술 적용에도 유연함

이처럼 Monolithic Architecture에서의 단점을 채워주는 장점을 가지고 있다.

단점

  • 서비스 간 호출 시 API를 사용하기 때문에 그에 대한 비용이 발생함
  • 서비스가 분리되어있어 테스트와 트랜잭션의 복잡도가 증가함
  • 데이터가 여러 서비스에 걸쳐 분산되기 때문에 한번에 조회하기 어렵고, 데이터의 정합성 또한 관리하기 어려움
  • 서비스 간의 호출이 연속적이기 때문에 디버깅 및 에러 트레이싱이 어려움

MSA의 단점은 서비스가 분리됨에 따른 비용과 복잡도 증가에 의한 결과로 보인다.

출처 : https://dev-coco.tistory.com/164
https://velog.io/@tedigom/MSA-%EC%A0%9C%EB%8C%80%EB%A1%9C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-1-MSA%EC%9D%98-%EA%B8%B0%EB%B3%B8-%EA%B0%9C%EB%85%90-3sk28yrv0e

0개의 댓글