봉봉의 개인 블로그

2019-07-10 [카테고리 미분류](MSA 란?) 본문

카테고리 없음

2019-07-10 [카테고리 미분류](MSA 란?)

봉봉이네 2019. 7. 10. 15:38

MSA(Microservice Architecture) 마이크로서비스 아키텍쳐

Monolithic Architecture

기존 legacy System의 경우 monolithic architecture를 따르는 large 어플리케이션들은 다음과 같은 개발/운영상의 문제들에 직면하게 된다.

 

  • 일부 모듈의 변경사항 때문에 전체 어플리케이션 개발/운영 프로세스와 패키징에 영향을 준다.
  • 모듈별 특성에 맞는 신기술 또는 구조를 적용하기 어렵다.
  • 모듈별 확장이 어렵다.

Microservice Architecture의 특징

Microservice Architecture의 특징은 다음과 같다.

 

  • 애플리케이션 로직을 각자 책임이 명확한 작은 컴포넌트들로 분해하고 이들을 조합해서 솔루션 제공
  • 각 컴포넌트는 작은 책임 영역을 담당하고 완전히 상호 독립적으로 배포. Microservice는 비지니스 영역의 한 부분에서만 책임을 담당. 그리고 여러 애플리케이션에서 재사용할 수 있어야 함.
  • Microservice는 몇가지 기본 원칙에 기반을 두며, 서비스 소비자와 서비스 제공자 사이의 데이터 교환을 위해 HTTP와 JSON같은 경량 통신 프로토콜 사용
  • 애플리케이션은 항상 기술 중립적 프로토콜을 사용해 통신하므로 서비스 구현 기술과는 무관. 따라서 Microservice 기반의 애플리케이션을 다양한 언어와 기술로 구축할 수 있다.
  • 작고 독립적이며 분산된 Microservice를 사용해 조직은 명확히 정의된 책임 영역을 담당하는 소규모 팀을 보유할 수 있다. 이팀들은 애플리케이션 출시처럼 하나의 목표를 향해 일하지만, 자기가 개발하는 서비스만 책임.

Microservice Architecture 장단점

장점

  • 작은 서비스들로 나누고, 각 서비스를 독립적으로 만듦 -> loosely coupled (느슨한결합으로 오는 장점.)
  • 대용량 분산 환경에 적합
  • 복잡도 감소
  • 유연한 배포
  • 재사용성 -> 확장성
  • 서비스별 hw/se 플랫폼/기술의 도입 및 확장의 자유
  • 개발자가 이해하기 쉽고 개발/운영 매 단계의 생산성이 높음
  • 지속적인 개발/디플로이가 biz capability 단위로 관련된 소수의 인원의 책임하에 이루어질 수 있다.
  • fault isolation 특성이 좋다.

단점

  • 장애 추적, 모니터링, 매지징이 어려움
  • 여러 서비스에 걸쳐져 있는 feature의 경우, 트랜잭션을 다루기 어려움
  • 여러 서비스에 걸쳐져 있는 feature의 경우, 테스팅이 복잡.
  • 서비스 간 dependency가 있는 경우 릴리즈가 까다롭다.
  • 서비스 개수가 많고 유동적이기 떄문에 continuous integration/delivery 및 서비스 관리 상의 문제가 발생가능
  • Monolith로 시작한 시스템을 Microservices로 전환할 때 큰 고통이 수반됨.

 

 

-출처

https://waspro.tistory.com/429

Comments