N-Tier & Monolithic
- 이전에는 N-Tier나 monolithic 방식이 표준으로 사용됬었다. 하지만 코드의 밀접한 결합은 변경이 어렵고 다양한 층에서 단일의 배치는 테스팅을 어렵게 했다. 또한 코드의 재사용도 어려워졌다.
Microservices Architecture(MSA)
- 시스템을 개별적인 요소로 나누고 서로 통신할 수 있도록한 구조이다.
- RESTful한 endpoint를 제공해서 다양한 언어를 제공한다.
- 쉽게 테스트, 배치, 공유할 수 있다.
- 사용자 요구에 따라 쉽게 scaling할 수 있다.
- 장애에 회복성이 높다.(개별적 요소만 장애를 일으키고 영향을 미치지 않음)
Spring Cloud
- Netflix가 만든 Eureka를 통합한 Spring Cloud는 microservice들을 찾고 등록하는 역할을 한다.
- Eureka는 서버와 클라이언트 컴포넌트로 이루어져 있다.
- 서버 컴포넌트는 모든 microservice들을 이용하도록 등록시킨다.
- 클라이언트 컴포넌트를 microservice에서 등록하기 위해 사용한다.
- 다음은 Eureka web console창이다.
Spring Data REST
- microservice를 쉽게 사용할 수 있도록 등록된 entity를 REST API로 쉽게 만들어 주는 역할을 한다.
- 동작 방식
1. 시작시, Spring Data REST는 모든 spring data repository를 찾는다.
- entity 이름에 맞는 endpoint를 생성한다.
- endpoint의 뒤에 s를 붙인다.
- CRUD 기능이 가능한 RESTful한 API를 제공한다.