본문 바로가기

CS

REST API vs WebSocket API

REST  API

기반 프로토콜 :

  • HTTP(S), 상태를 유지하지 않는(stateless) 프로토콜을 사용한다.

통신 방식 :

  • 클라이언트가 서버에 요청(request)을 보내고, 서버가 그 요청에 대한 응답(response)을 반환하는 단방향 통신이다.

특징 :

  • 각 요청은 독립적이며, 서버는 클라이언트의 이전 요청에 대한 정보를 저장하지 않는다.
  • CRUD(Create, Read, Update, Delete) 작업에 적합하다.
  • RESTful API는 자원(resource) 기반의 구조를 가지며, URL을 통해 자원을 명시하고 HTTP 메서드 (GET, POST, PUT, DELETE 등)를 사용하여 해당 자원에 대한 행동을 정의한다.

사용 사례 :

  • 웹 서비스의 일반적인 데이터 교환, 웹 페이지의 초기 로딩이나 단순히 정보를 조회하는 등의 비실시간성 애플리케이션에 적합하다.

장점 :

  • 구현의 용이성과 널리 사용되는 표준에 기반하여 다양한 플랫폼과 언어에서 쉽게 사용할 수 있다.
  • 개발이 비교적 간단하고 익숙하다.
  • 상태를 유지하지 않는 특성 때문에 서버 설계가 단순해질 수 있다.
  • HTTP 프로토콜 위에 구축되므로, 기존 웹 인프라를 활용할 수 있다.

단점 :

  • 실시간 데이터 교환에는 적합하지 않으며, 서버로부터의 즉각적인 업데이트를 받기 위해서는 폴링(polling)과 같은 방법을 사용해야 하며, 이는 비효율적일 수 있다. 서버에 불필요한 부하를 초래하고 실시간 응답성을 저하시킬 수 있다.
  • 연결을 맺고 끝ㅎ는 과정에서 발생하는 지연(latency)이 비교적 크다.

 

 

WebSocket  API

기반 프로토콜 :

  • WebSocket, 상태를 유지하는(stateful), 클라이언트와 서버 간의 지속적인 연결을 유지하는 양방향 통신 프로토콜을 사용한다.

통신 방식 : 

  • 클라이언트와 서버가 연결을 맺은 후, 양쪽 모두에서 데이터를 주고받을 수 있는 실시간, 양방향 통신이다.

특징 :

  • 연결이 한 번 맺어지면, 그 연결을 통해 지속적으로 데이터를 주고받을 수 있다.
  • 실시간으로 데이터를 교환할 수 있어, 채팅 애플리케이션, 게임, 실시간 거래 플랫폼 등에 적합하다.

사용 사례 : 

  • 실시간 채팅 애플리케이션, 온라인 게임, 실시간 협업 도구, 실시간 데이터 스트리밍 서비스 등.

장점 :

  • 실시간 통신에 최적화되어 있으며, 낮은 지연 시간(latency)으로 데이터를 교환할 수 있다.
  • 서버가 클라이언트에게 데이터를 푸시(push)할 수 있어, 실시간 알림 및 업데이트 제공에 유용하다.
  • HTTP 프로토콜 위에 구축되므로, 기존 웹 인프라를 활용할 수 있다. (초기 연결 설정 과정에서 HTTP 프로토콜을 사용)

단점:

  • REST API에 비해 구현 복잡도가 높을 수 있다.
  • 연결을 유지하기 위해서 서버 자원을 더 많이 사용할 수 있다. 지속적인 연결 관리와 관련된 추가적인 서버 측 고려 사항이 필요할 수 있다.

 

  REST API WebSocket API
사용되는 포로토콜 HTTP 프로토콜 기반 HTTP 프로토콜로 연결 설정, WebSocket 프로토콜로 통신
통신 방식 요청과 결과 반환 양방향 통신
요청처리 클라이언트에서 요청, 서버에서 요청 처리 실시간으로 데이터 교환
연결 방식 클라이언트에서 요청시 연결 클라이언트와 서버간 지속적인 연결
유지성 요청에 대한 응답이 이루어지면 연결 종료 지속적인 연결 상태 유지

 

 

 

참고 출처 :

1. https://luvris2.tistory.com/m/537

'CS' 카테고리의 다른 글