더북(TheBook)

3.3.1 마이크로서비스의 출입구 만들기: 스프링 부트 컨트롤러

이제 빌드 스크립트(2장 참고)를 제거하고 간단한 스프링 부트스트랩 클래스를 구현했으니 어떤 일을 하는 첫 번째 코드를 작성할 수 있다. 이 코드가 Controller 클래스가 된다. 스프링 부트 애플리케이션에서 Controller 클래스는 서비스의 엔드포인트를 노출하고 유입되는 HTTP 요청 데이터를 요청을 처리할 자바 메서드에 매핑한다.

잠시 REST하세요

이 책의 모든 마이크로서비스는 리처드슨의 성숙도 모델(Richardson Maturity Model, http://mng.bz/JD5Z)을 따른다. 구축하는 모든 서비스에는 다음 특징이 있다.

HTTP/HTTPS를 서비스에 대한 호출 프로토콜로 사용한다: HTTP 엔드포인트는 서비스를 노출하고 HTTP 프로토콜은 서비스 간 데이터를 전달한다.

서비스 동작을 표준 HTTP 동사(verb)에 매핑한다: REST는 서비스 동작을 HTTP 동사인 POST, GET, PUT, DELETE에 매핑하는 서비스를 만드는 데 중점을 둔다. 이 동사들은 대부분의 서비스에 있는 CRUD 함수에 매핑된다.

서비스 입출력 데이터의 직렬화 형식으로 JSON을 사용한다: 이것은 REST 기반 마이크로서비스에 대한 절대 원칙은 아니지만, JSON은 마이크로서비스가 주고받는 데이터를 직렬화할 수 있는 ‘공용어(lingua franca)’가 되었다. XML을 사용할 수도 있지만 많은 REST 기반 애플리케이션은 자바스크립트와 JSON을 사용한다. JSON은 자바스크립트 기반 웹 프런트엔드와 서비스에서 사용되는 데이터를 직렬화 및 역직렬화하는 원시 형식(native format)이다.

서비스 호출 상태를 전달하는 데 HTTP 상태 코드를 사용한다: HTTP 프로토콜은 풍부한 상태 코드를 사용하여 서비스의 호출 성공 및 실패를 나타낼 수 있다. REST 기반 서비스는 HTTP 상태 코드와 리버스 프록시(reverse proxy)나 캐시(cache) 같은 다른 웹 기반 인프라스트럭처를 활용하여 마이크로서비스들을 비교적 쉽게 통합할 수 있다.

HTTP는 웹을 위한 언어다. 따라서 서비스 구축을 위한 철학적 체계로 HTTP를 사용하는 것은 클라우드에서 서비스를 구축하는 핵심이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.