본문 바로가기
Development

[Network] REST API와 WebSocket API의 차이는?

by 한휴르 2022. 12. 28.

REST API의 한계

흔히들 API라고 말하면 REST API를 떠올립니다. 그만큼 많이 사용되는 방식입니다.
사실 REST API는 API 중 몇 가지 특성을 가진 API의 한 종류입니다.

우리가 브라우저에서 주소창에 웹 사이트 주소를 입력하고 엔터를 치면 사이트가 출력됩니다. 하지만 엔터를 치지 않으면 아무런 동작도 하지 않습니다.
즉, 주소를 입력하고 엔터를 쳐서 값을 요청하는 것이 핵심입니다.

REST API를 사용하는 경우 값을 요청하고 값을 받고 나면 그 뒤로는 아무런 변화가 없습니다. 즉, 가져온 결과가 변경되지 않습니다.
반면에, 주식창이나 오픈 채팅과 같이 지속적으로 변동하는 것들이 있습니다. 이러한 것들은 매 순간 계속해서 요청을 하고 요청의 결과를 받아오는 것입니다.
REST API로 만들었다면 매번 엔터를 치고 값을 요청해서 새로고침을 하는 셈입니다.

하지만 REST API로 만들게 되면 치명적인 단점이 존재합니다.
만약 데이터를 초당 10,000건 씩 가져오는데 그 값이 변하지 않는다면 무의미하게 자원을 낭비하는 것입니다.
즉, 정보가 변하는 순간을 감지해서 그 순간에만 데이터를 가져오는 것이 힘들다는 것입니다. 정보를 받아오기 위해서는 계속해서 요청을 해야 합니다.

한 번의 요청으로 데이터가 변경될 때마다 가져오게 하는 방법은 없는걸까요?

WebSocket API

WebSocket API, 구독형 API라고도 불리는 이 방식은 데이터 요청자와 데이터 제공자 간에 채널이 생깁니다. 채널이 열리기 전에 요청자는 자신이 원하는 데이터를 선택하여 요청하게 됩니다. 마치 구독과 같은 방식으로 선택하여 요청하게 되면 채널이 열린 후 닫히기 전까지 지속적으로 데이터를 제공해줍니다.

실시간 스트리밍, 채팅 또는 온라인 게임과 같이 매 순간 정보를 주고 받는 실시간 통신이 필요한 곳에서 주로 사용합니다.

정리

REST API는 필요할 때마다 문을 두드려서 여는 것이라면, WebSocket API는 필요 없을 때까지 그냥 문을 열어놓는 것입니다.

실제로 둘을 구현해서 비교해보면 REST가 WebSocket보다 빨리 시작되는 것을 볼 수 있습니다. 하지만 요청이 반복되면 REST는 한계가 와서 에러가 발생하게 됩니다.
각각의 방식을 필요한 곳에 적절히 선택해서 사용하는 것이 중요합니다.

댓글