[GCP] REST, REST API, HTTP에 대해 알아보자

Hailey·2020년 8월 19일
1

GCP

목록 보기
11/29

좋은 마이크로서비스는 느슨하게 결합(Loosely coupled)되어있다. 따라서 느슨하게 결합된 독립적인 서비스를 만들기 위해 마이크로서비스의 설계에는 Rest와 HTTP를 사용한다.

1. REST (Representational State Transfer)

Rest 아키텍쳐는 loose Coupling을 지원한다.

  • Rest = Representational State Transfer (자원별로 상태를 주고받는 것)
  • Protocol Independent
    : Http가 가장 흔하고, gRPC도 가능하다.
  • REST를 지원하는 서비스 엔드포인트는 RESTful이라고 불린다.
  • 클라이언트와 서버는 Request - Response 프로세싱으로 소통한다.

    REST : HTTP URI을 통해 자원을 명시하고, HTTP Method(POST, GET, DELETE, PUT)를 통해 해당 자원에 대한 CRUD(CREATE, READ, UPDATE, DELETE) 오퍼레이션을 적용하는 것

REST 구성요소

  • 자원(Resource) , URI
    모든 자원은 고유한 ID를 가지고 서버에 존재하고 클라이언트는 각 자원의 상태를 조작하기 위해 요청을 보낸다. HTTP에서 이러한 자원을 구별하는 ID는 HTTP URI 이다.
  • 행위(Verb) , Method
    클라이언트는 URI를 이용해 자원을 지정하고 자원을 조작하기 위해 Method를 사용한다. HTTP 프로토콜에서는 GET , POST , PUT , DELETE 같은 Method를 제공한다.
  • 표현(Representation)
    클라이언트가 서버로 요청을 보냈을 때 서버가 응답으로 보내주는 자원의 상태를 Representation이라고 한다. REST에서 하나의 자원은 JSON , XML , TEXT , RSS 등 여러형태의 Representation으로 나타낼수 있다.

REST 의 특징

  • 클라이언트 / 서버 구조 (Client-Server)
    자원이 있는 Server , 자원을 요청하는 Client의 구조를 가진다.
  • 무상태 (Stateless)
    HTTP는 Stateless 프로토콜 이므로 REST 역시 무상태성을 가진다. 클라이언트의 Context 를 서버에 저장하지 않는다.
  • 캐시 처리 가능 (Cachealble)
    웹 표준 HTTP 프로토콜을 그대로 사용하므로 , 웹에서 사용하는 기존의 인프라를 그대로 활용 가능하다.
  • 계층화
    API 서버는 순수 비즈니스 로직을 수행하고 그 앞단에 사용자 인증 , 암호화 , 로드밸런싱 등을 하는 계층을 추가하여 구조상의 유연성을 줄 수 있다.
  • 인터페이스 일관성(Uniform Interface)
    URI로 지정한 자원에 대한 조작을 통일되고 한정적인 인터페이스로 수행한다. HTTP 표준에만 따른다면 모든 플랫폼에 사용이 가능하다.
  • 자체 표현 구조
    동사(Method) + 명사(URI) 로 이루어져있어 어떤 메서드에 무슨 행위를 하는지 알 수 있으며 REST API 자체가 매우 쉬워서 API 메세지 자체만 보고도 API를 이해할 수 있다.

1-2. REST API

REST API(RESTful API라고도 함)는 REST 아키텍처의 제약 조건을 준수하는 애플리케이션 프로그래밍 인터페이스를 의미한다.

API가 RESTful로 간주되려면 위에 정리한 REST의 특징을 따라야 한다.

2. HTTP (HyperText Transfer Protocol)

HTTP 서비스를 접근하는 클라이언트들은 HTTP 요청을 구성한다. HTTP 요청은 세 개의 파트로 이루어져있다.

  1. Request line: GET, POST, PUT과 같은 HTTP verb, the requested URI, the protocol version로 이루어져있다.
  2. Request Header: 메시지에 대한 메타데이터
    선호되는 표현 포맷(ex. JSON, XML)
  3. Request body: 리퀘스트 상태
    자원의 표현

HTTP 리퀘스트는 간단하며 텍스트 기반이다. HTTP 동사는 서버가 무엇을 해야하는지 말해준다.

  • GET: 데이터 리소스 검색에 사용된다.
  • POST: 데이터 리소스 형성에 사용된다.
  • PUT: 데이터를 형성하거나 존재하는 데이터를 바꾸는데에 사용된다.
  • DELETE: 데이터 리소스 삭제에 사용된다.

HTTP 응답도 마찬가지로 세 개의 파트로 구성되어있다. HTTP version과 response code로 구성된 response line, header variables, response body가 세 가지 구성요소이다.

여기서 response code란 세 자리 숫자로 200대는 올바른 상태를, 201은 리소스가 생성되었음을 의미한다. 400대는 클라이언트 요청에 에러를 나타내며 그 중 403은 요청 또는 허가없음으로 금지됨을, 404는 요청된 자원을 찾을 수 없음을 의미한다. 500대는 서버에 오류가 발생하여 요청을 처리할 수 없음을 의미하며, 예를 들어, 500은 내부 서버 오류, 503은 보통 서버가 과부하되어 사용할 수 없는 경우를 의미한다.

profile
Cloud Solution Architect - Customer Success in security💗🌎

0개의 댓글