확장 큐브
의 개념으로 마이크로 서비스를 살펴보자.
확장 큐브는 애플리케이션을 확장하는 세 가지 방법을 정의한다.
- X축 확장은 동일한 다중 인스턴스에 들어온 요청을 부하분산
- Z축 확장은 요청의 속성에 따라 요청을 라우팅
- Y축 확장은 애플리케이션을 기능에 따라 서비스로 분해한다.
X축 확장은 일반적인 모놀리식 애플리케이션의 확장 수단이다.
부하 분산기 뒷면에 애플리케이션 인스턴스를 N개 띄워놓고 부하 분산기는 들어온 요청을 이들 인스턴스에 고루 분배한다.
애플리케이션 능력과 가용성을 개선하기 위해 사용한다.
모놀리식 애플리케이션의 다중 인스턴스를 실행하는 것은 X축 확장과 같지만, 인스턴스별로 주어진 데이터 하위집합만 처리하도록 하는 방법이다.
라우터는 요청의 속성에 알맞는 인스턴스로 요청을 라우팅한다.
각 애플리케이션 인스턴스는 자신에게 배정된 사용자 하위집단만 처리한다.
라우터는 요청헤더 Authorization에 포함된 userId를 보고 N개의 동일한 애플리케이션 인스턴스 중 하나를 선택한다.
Z축 확장은 애플리케이션을 확장해서 증가하는 트랜잭션 및 데이터 볼륨을 처리하기좋은 수단이다.
X축/Z축 확장을 하면 애플리케이션 능력과 가용성은 개선되지만, 애플리케이션이 점점 더 복잡해진다. 따라서 여러 서비스로 쪼개기로 한다.
서비스는 주문 관리, 고객 관리 등 지엽적 기능이 구현된 미니 애플리케이션이며, 서비스에 따라 X축/Y축 확장도 가능하다.
예를 들어, 주문 서비스는 여러 서비스 인스턴스를 부하 분산하는 형태로 구성할 수 있다.