봉봉의 개인 블로그
2019-07-10 [카테고리 미분류](MSA 란?) 본문
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로 전환할 때 큰 고통이 수반됨.
-출처
Comments