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 프로토콜로 통신 |
통신 방식 | 요청과 결과 반환 | 양방향 통신 |
요청처리 | 클라이언트에서 요청, 서버에서 요청 처리 | 실시간으로 데이터 교환 |
연결 방식 | 클라이언트에서 요청시 연결 | 클라이언트와 서버간 지속적인 연결 |
유지성 | 요청에 대한 응답이 이루어지면 연결 종료 | 지속적인 연결 상태 유지 |
참고 출처 :
'CS' 카테고리의 다른 글
비연결성(Connectionless)과 무상태(Stateless) (1) | 2024.04.22 |
---|---|
빅오 표기법(Big O notation) (1) | 2024.03.27 |
프로토콜과 API (1) | 2024.03.23 |