MSA

Salki·2020년 10월 7일
0
post-thumbnail

MSA?

MSA란 MicroService Architecture의 줄임말이다.
마이크로서비스란 작고, 독립적으로 배포 가능한 각각의 기능을 수행하는 서비스로 구성된 프레임워크라고 할 수 있다.
"하나의 큰 어플리케이션을 여러개의 작은 어플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍쳐"

MSA의 등장 배경

Monolithic Architecture

Monolithic Architecture란 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어 있는 형태이다.

  • 서비스/프로젝트가 커지면 커질수록, 영향도 파악 및 전체 시스템 구조의 파악에 어려움이 있다.
  • 빌드 시간 및 테스트시간, 그리고 배포시간이 기하급수적으로 늘어난다.
  • 서비스를 부분적으로 scale-out 하기가 힘들다.
  • 부분의 장애가 전체 서비스의 장애로 이어지는 경우가 발생할 수 있다.

MicroService 철학

"한 가지 일을 하되 잘 하라"

MicroService?

  • 전체 어플리케이션을 특정 목적을 가진 어플리케이션 단위로 나누는 것. 나누어진 어플리케이션은 다른 어플리케이션과 약한 결합도와 강한 응집도를 목표로 한다.
  • 나누어진 어플리케이션으로 독립된 서비스를 제공하더라도 문제가 없어야 하는 것을 의미.
  • 잘 정의된 API를 사용하여 통신한다. 응답으로 주어진 결과물을 신뢰한다.
  • 어플리케이션을 독립적으로 배포 가능하다.

MSA 장점

  • 배포(deployment) 관점
    • 서비스 별 개별 배포 가능 (배포 시 전체 서비스의 중단이 없음)
  • 확장(scaling) 관점
    • 특정 서비스에 대한 확장성이 용이함
  • 장애(failure) 관점
    • 장애가 전체 서비스로 확장될 가능성이 적음

MSA 단점

  • 한 트랜잭션의 처리 및 각각의 어플리케이션 에러에 대한 처리가 필요하다.
  • 어플리케이션의 숫자가 많아질수록, 복잡해질수록 테스트가 어려워진다.
  • Monolithic에 비해 네트워크 latency(지연시간)과 트래픽이 증가한다.
  • 배포에 대한 자동화가 필수요소이다.
  • 각각 어플리케이션의 데이터의 무결성을 책임지지 못한다.

참고 출처
https://wooaoe.tistory.com/57
https://medium.com/@shaul1991
https://velog.io/@tedigom

profile
실력있는 개발자로 거듭나기까지..

0개의 댓글