MSA 정리 - (1) MSA의 정의

alexhwang_·2022년 1월 25일
0

MSA 정리

목록 보기
1/9
post-thumbnail

1. MSA란 무엇인가?

MSA는 Microservices Architecture 를 뜻하며 아주 작은 단위로 동작하는 서비스가 구동되도록 시스템 및 소프트웨어의 구성과 구성요소 간의 관계를 정의한 아키텍처이다.

MSA를 알기전에 이와 반대되는 모놀리식(Monolithic) 아키텍처를 알아야할 필요성이 있다.

모놀리식은 아키텍처 스타일은 기존의 전통적인 웹 시스템 개발 스타일로 하나의 애플리케이션 내에 모든 로직들이 하나의 구조에 들어가 있는 '통짜 구조' 형태이다.

위 그림과 같이 모놀리식은 하나의 구조 안에 대부분의 기능이 포함되어 있는 구조이며 MSA는 이와 반대로 여러 기능과 방식이 각각 독립적인 형태로 구성되어 있음을 알 수 있다.

(1) 모놀리식의 장점

  1. 전체 애플리케이션이 하나로 되어있어 보통 동일한 개발 툴을 사용해 개발
  2. 배포 및 테스트도 하나의 애플리케이션만 수행하면 되기에 개발 및 환경설정이 비교적 간단
  3. 각 컴포넌트들이 함수로 호출되기에 성능에 제약이 덜하고, 운영 관리가 용이

이러한 장점을 활용해 작은 볼륨의 시스템을 개발할 때는 매우 유용하나 시스템이 커지기 시작하고 여러 컴포넌트가 더해지면 문제 발생

(2) 모놀리식의 단점

  1. 빌드/테스트 시간이 연장
  • 작은 수정에도 시스템 전체를 빌드해야함
  1. 선택적 확장 불가
  • 이벤트로 인해 트래픽이 몰릴 경우 프로젝트 전체 확장 필수
  1. 하나의 서비스가 모든 서비스에 영향
  • 트래픽 증폭으로 서버가 다운되면 다른 모든 서비스 역시 마비

위와 같이 서비스가 커져서 각 컴포넌트가 많아지게 되면 MSA 도입을 긍정적으로 검토할 수 있다.

MSA의 장단점

(1) MSA의 장점

  1. 복잡성의 문제 해결
  • 각 서비스는 모듈화 되어 있어 유지 보수가 쉬우며 각각 개별의 서비스 개발을 빠르게 가능
  1. 독립적 배포 수정 용이
  • 서비스 별로 독립적인 컴포넌트로 구성되어 있어 독립적으로 배포가 가능
  1. 개별 scale-out
  • 각 서비스의 부하에 따라 개별적으로 scale-out 가능 즉 메모리,cpu적으로 상당부분 이득

(2) MSA의 단점

  1. 하지만 데이터 트랜잭션의 일관성 유지 어려움
  • 서비스가 분산되어 비즈니스 트랜젝션 유지 어려움
  1. 통신의 복잡성의 증가
  • 서비스가 모두 분산되어 있기에 개발자는 내부 시스템의 통신을 어떻게 가져가야 할지 어려움
  1. 배포의 어려움
  • 서비스 1개를 재배포한다면 다른 서비스들과의 연계가 정상적으로 이루어 지는지 확인 필요

2. MSA의 특징

1. api를 통해서만 msa와 서비스가 상호작용 가능

  • 마이크로서비스는 서비스의 end-point(접근점)을 API 형태로 외부에 노출하고, 실질적인 세부 사항은 모두 추상화. 내부의 구현 로직, 아키텍처와 프로그래밍언어, DB, 품질 유지 체계 같은 기술적 사항은 서비스 API에 가려짐
  • SOA(Service Oriented Architecture)의 특징을 다수 공통으로 가짐

2. 다양한 언어로 구성 가능

  • 마이크로서비스는 자율적이고 모든 것을 추상화해 서비스 API 뒤에 숨기기 때문에 서로 다른 마이크로서비스에서 서로 다른 아키텍처를 적용할 수 있다.

3. 마이크로서비스 환경에서의 자동화

  • msa는 여러 개의 작은 서비스로 분리하므로 상당히 많은 마이크로서비스가 존재한다. 그렇기에 마이크로서비스는 자동화하지 않는다면 관리부담이 상당히 커짐

4. 동적이고 분산돼 있는 마이크로서비스

  • msa는 soa에서 사용되는 집중화된 관리 체계 사용 x. msa의 공통적인 특징 -> ESB(Enterprise Service Bus)와 같은 무거운 제품에 의존 x

3. MSA의 이해

MSA는 복잡한 웹 시스템에 맞춰 개발된 API기반의 서비스 지향적 아키텍처 스타일이다. 그렇기에 MSA는 API Gateway 서버 앞 단에 모든 API 서버들의 End-Point를 단일화 하여 묶어 거미줄처럼 복잡한 서비스간의 API호출 구조도 단순화 시킨다.
하지만 이렇게 서비스간 호출을 API통신을 이용하기에 속도가 느리고, 통신에 사용하기 위해 값을 데이터 모델로 변환시켜주는 오버헤드가 발생할 수도 있다.

즉 msa는 서비스의 재사용성,유연한 아키텍처구조,대용량 웹 서비스에 적합한 구조라는 장점도 갖고 있지만 개개인의 높은 숙련도가 요구되며 서비스 크기에 따라 단점이 부각될 수 도 있기에 서비스에 맞춰 아키텍처를 설계하는 방법이 좋다.

0개의 댓글