MSA 간략 정리

2020. 9. 23. 01:33·Web

MSA란 뭘까?

MSA는 마이크로 서비스 아키텍쳐의 약자로 소프트웨어 개발 기법중 하나이다.

 

핵심은 전체 어플리케이션을 특정 목적을 가진 어플리케이션 단위로 나누는 것이다. 나누어진 어플리케이션은 다른 어플리케이션과 약한 결합도와 강한 응집도를 목표로한다.

 

마이크로 서비스는 서비스의 end-point(접근점)을 API 형태로 외부에 노출하고, 실질적인 세부 사항은 모두 추상화한다. 내부의 구현 로직, 아키텍처와 프로그래밍 언어, 데이터베이스, 품질 유지 체계와 같은 기술적인 사항들은 서비스 API에 의해 철저하게 가려진다. 

 

MSA의 장점은?

각각의 서비스는 모듈화가 되어있으며 이러한 모듈끼리는 RPC 또는 API등을 이용하여 통신한다. 이러한 MSA는 각각 개별의 서비스 개발을 빠르게 하며, 유지보수도 쉽게 할 수 있도록 한다.

 

팀 단위로 적잘한 수준에서 기술 스택을 다르게 가져갈 수 있다.

java spring기반이라도 MSA를 적용하면 python 텐서플로우 연동도 무리가 없을듯 하다.

 

마이크로 서비스는 서비스별로 독립적 배포가 가능하다. 따라서 지속적인 배포 CD도 모놀로식(기존의 뭉탱이 프로젝트)에 비해서 가볍게 할 수 있다.

 

마이크로서비스는 각각의 서비스의 부하에 따라 개별적으로 scale-out이 가능하다. 메모리, CPU적으로 상당부분 이득이 된다.

 

그럼 MSA의 단점은?

MSA는 모놀로식에 비해 상대적으로 많이 복잡하다.

서비스가 모두 분산되어 있기 때문에 개발자는 내부 시스템의 통신을 어떻게 가져가야 할지 정해야한다. 또한, 통신의 장애와 서버의 부하 등이 있을 경우 어떻게 트랜잭션을 유지할지 결정하고 구현해야한다.

 

또한 MSA에서는 비즈니스에 대한 DB를 가지고 있는 서비스도 각기 다르고, 서비스의 연결을 위해서는 통신이 포함되기 때문에 트랜잭션을 유지하는게 어렵다.

 

분산되어있는 모듈로 인해 통합 테스트가 어렵다.

 

운영중 한개의 모듈을 재배포했을시, 다른 서비스들과 연계가 정상적으로 이루어지는지 확인해야한다.

'Web' 카테고리의 다른 글

상태코드 간략한 정리  (0) 2020.09.24
Request와 Response의 구성  (0) 2020.09.23
URI와 URL 차이  (0) 2020.09.23
HTTP와 관계가 깊은 프로토콜들  (0) 2020.09.23
HTTP  (0) 2020.09.23
'Web' 카테고리의 다른 글
  • Request와 Response의 구성
  • URI와 URL 차이
  • HTTP와 관계가 깊은 프로토콜들
  • HTTP
마술사의 수습생
마술사의 수습생
언젠간 당신처럼 되고 싶어요.
  • 마술사의 수습생
    개발 기록 블로그
    마술사의 수습생
  • 전체
    오늘
    어제
    • 분류 전체보기 (53)
      • Web (50)
      • 일기 (2)
      • 잡담 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
마술사의 수습생
MSA 간략 정리
상단으로

티스토리툴바