REST와 JSON

철근콘크리트·2020년 12월 27일
0
  • 서비스 호출 프로토콜로 HTTP를 사용한다 : 서비스는 HTTP 엔드포인트로 노출되고 HTTP 프로토콜을 사용해서 서비스와 데이터를 교환한다.

  • 서비스의 행동 양식을 표준 동사에 매핑한다 : REST는 서비스의 행동 양식을 HTTP 동사인 POST, GET, PUT, DELETE에 매핑할 것을 강조한다. 그리고 이 동사의 대부분의 서비스에 있는 CRUD 함수에 매핑된다.

  • 서비스끼리 교환하는 모든 데이터의 직렬화 형식으로 JSON을 사용한다 : JSON은 마이크로서비스에서 입출력 데이터의 직렬화를 위한 공용어가 되었다. XML을 사용할 수도 있지만 많은 REST 기반 애플리케이션은 자바스크립트와 JSON을 더 많이 사용한다.

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

http는 웹 언어이며, 서비스 구축을 위한 철학적 프레임워크로 http를 사용하는 것은 클라우드에서 서비스를 구축하는 핵심이다.




RestController

서비스에 JSON이나 XML로 전달된 데이터의 직렬화를 자동으로 처리한다. (기본적으로 @RestController 클래스는 반환할 데이터를 JSON으로 직렬화 한다.)

  • RestController 애너테이션을 사용하면 Controller 클래스에서 ResponseBody클래스로 반환할 필요가 없다.
    (@ResponseBody)를 포함하는 @RestController 애너테이션에 의해 모두 처리되기 때문이다.






마이크로서비스에 JSON이 선택된 이유

다양한 프로토콜을 사용해 HTTP 기반의 마이크로서비스 간에 데이터를 주고 받을 수 있다. JSON은 몇 가지 이유로 사실상 표준으로 등장했다.

첫째, XML 기반의 SOAP(Simple Object Access Protocal)과 같은 다른 프로토콜과 비교할 때 JSON은 적은 텍스트로 데이터 표현이 가능하다는 점에서 매우 가볍다.

둘째, JSON은 가독성이 높고 사용하기 쉽다. 이 특성은 직렬화 프로토콜을 선택하는 기준으로 과소평가되지만 문제가 발생하면 신속하게 JSON 내용을 살펴보고 문제를 시각적으로 처리하는 것이 중요하다. JSON은 프로토콜이 단순해 이러한 작업을 아주 쉽게 처리할 수 있다.

셋째, JSON은 자바스크립트에서 사용되는 기본 직렬화 프로토콜이다. 프로그래밍 언어로서 자바스크립트가 급격하게 성장하고 자바스크립트에 크게 의존하는 SPIA(Single Page Internet Application), 즉 단일 페이지 인터넷 애플리케이션이 급격하게 증가해서 JSON은 REST 기반 애플리케이션 적임자가 되었다. 프런트엔드 웹 클라이언트가 서비스를 호출하는데 JSON이 사용되기 때문이다.

서비스 간 통신을 위해 JSON보다 더 효율적인 매커니즘과 프로토콜도 존재한다. 아파치 쓰리프트 프레임워크를 이용하면 바이너리 프로토콜로 서로 통신할 수 있는 다중 언어 서비스를 구축할 수 있다.
*아파치 아브로는 클라이언트와 서버 호출 간 데이터를 바이너리 포맷으로 상호 변환할 수 있는 데이터 직렬화 프로토콜이다.

0개의 댓글