마이크로서비스아키텍쳐(MSA)란?

일단 모노리틱 아키텍쳐에 대해서 알아보면
-단일 기술로 사용
-관리는 편함
-하나의 서버에 모든 비지니스 로직이 들어가 있는 형태
-하나의 집중화된 데이터베이스에 모든 데이터가 저장됨
-여러개의 기술을 혼용하기 어려움 (node.js. spring, Ruby, python)
-배포 및 재기동 시간이 오래 걸림
-수정이 용이하지 않음 (타 컴포넌트 의존성)

마이크로서비스 아키텍쳐란?
-시스템을 여러개의 독립서비스로 나누어 연결
-SOA의 경량화 버전
-인터페이스로는 (Rest,Thrift,Protocolbuffer,AMQP...)
-End point는 API gateway
-여러 API를 묶어서 요구사항에 맞는 로직을 구현해야 하는 곳 : Orchestration
-Common APIs는 여러 서비스들이다

마이크로서비스의 장점
-홈쇼핑을 예로들어
-사용자관리,상품관리,주문관리를 해야함
-이 세가지의 기능을 분리하여 개별서비스로 만듬
-신뢰성이 필요한시스템(사용자관리,주문관리)는 JAVA로 만듬
-상품관리는 신뢰성이 비교적 덜 중요하기떄문에 빠르게 개발할수 있는 node.js+mysql로 구현
-복잡한 데이터 면 RDMS를 사용
-양이 많고 단순한 데이터면 NoSQL 사용
-ROI향상 및 TCO경감(개발기간다운 및 기존서비스재사용, 싼머신채용가능)


단점
-테스팅이 어려움(서비스하나를 추가하면 종속요소가 많이 늘어남)
-장애 진단
-팀의 역량에 따른 일정 및 품질 문제
-트렌젝션 관리

API 게이트웨이
-API인증/인가
-로깅
-라우팅
-메시지 변환
-메시지 프로토콜 변환
-있어도되고 없어도 됨(없으면 클라이언트가 하부서비스에 개별 접근해야겠지)
-잘못쓰면 망하는 지름길

그래서 실패를 염두에 두고 디자인해야한다
시스템의 다운타임, 서비스 속도 지연, 얘기치않은 응답등을 처리할 수 있어야함
그리고 로드밸런싱도 중요하다

http://cfile8.uf.tistory.com/image/27374E4C53FDD48E358EF6

댓글

이 블로그의 인기 게시물

XPath와 Appium과 Python

Gradle