Web/NetWork

[NetWork] REST API와 Websocket통신 차이점

usingsystem 2022. 8. 25. 10:47
728x90

1. Http 통신

  • Client의 요청이 있을 때만 서버가 응답하여 해당 정보를 전송하고 곧바로 연결을 종료하는 방식
  • 이러한 방식은 client가 요청을 보낸 경우에만 server가 응답하기 때문에 단방향적 통신으로 볼 수 있습니다. 따라서 server가 client로 요청을 보낼 수는 없습니다.
  • 요청을 보낼 때, 내용을 기다리는 시간과 함께 연결하는 시간이 들어가게 됩니다. 이러한 Http 통신은 실시간 연결이 아닌, 필요한 경우에만 server로 접근하는 콘텐츠 위주의 데이터를 사용할 때 용이합니다. 만약 게시물에 대한 내용을 요청하기 위해 실시간으로 연결을 유지하는 Socket 통신을 사용하게 되면, 게시물을 받은 후에도 계속 통신을 위한 연결이 성립되어 있어 부하가 걸리게 됩니다.
  • 일반적으로 모바일 어플리케이션은 필요한 경우에만 server로 정보를 요청하는 경우가 많은데, 이러한 web server로 Http 통신을 주로 사용하며 비용 및 유지보수 등 대부분의 방면에서 좋습니다.

  1. client가 요청을 보내는 경우에만 server가 응답하는 단방향 통신이다.
  2. server로 부터 응답을 받은 후에는 연결이 바로 종료된다.
  3. 실시간 연결이 아니고, 필요한 경우에만 server로 요청을 보내는 상황에 유용하다.
  4. 요청을 보내 server로 응답을 기다리는 어플리케이션(Android or iOS)의 개발에 주로 사용된다.

2. Socket 통신

  • Server와 Client가 특정 port를 통해 실시간으로 양방향 통신을 하는 방식
  • Socket 통신은 Http 통신과 달리 server와 client가 특정 port를 통해 연결을 성립하고 있어 실시간으로 양방향 통신을 하는 방식입니다.
  • client만 필요한 경우에 요청을 보내는 Http 통신과 달리 Socket 통신은 server 역시 client로 요청을 보낼 수 있으며, 계속 연결을 유지하는 연결 지향형 통신이기 때문에 실시간 통신이 필요한 경우에 자주 사용됩니다.
  • 예를 들면, 실시간 streaming 중계나 실시간 채팅과 같이 즉각적으로 정보를 주고받는 경우에 사용합니다.
  • 예를 들어 실시간 동영상 streaming 서비스를 Http 통신이 구현하였다고 가정하겠습니다. 이러한 경우에 사용자가 서버로 동영상을 요청하기 위해서는 동영상이 종료되는 순간까지 계속 Http 통신을 보내야 하고 이러한 구조는 계속 연결을 요청하기 때문에 부하가 걸리게 됩니다. 그러므로 Socket 통신으로 구현하는 것이 적절합니다.

Socket 통신의 특징

  1. server와 client가 계속 연결을 유지하는 양방향 통신이다.
  2. server와 client가 실시간으로 데이터를 주고받는 상황이 필요한 경우에 사용된다.
  3. 실시간 동영상 Streaming이나 온라인 게임 등과 같은 경우에 자주 사용된다.

 

출처 - https://colinch4.github.io/2021-05-14/Rest_%EC%86%8C%EC%BC%93_%EC%B0%A8%EC%9D%B4/

 

colin's 블로그

개발 강좌 블로그

colinch4.github.io

 


글 작성 배경

이번에 비트코인 관련 프로젝트를 하면서 API를 사용할 일이 생겼다. 이 과정에서 시세 데이터를 수신하는 API를 사용하려고 하였는데, REST와 Websocket 두 방식을 지원하고 있었다. 둘의 차이를 어렴풋이 알고는 있지만 개념을 확실히 하기 위해 둘의 차이를 비교해보려 한다.

가장 큰 차이

결론부터 말하자면 둘의 가장 큰 차이는 접속을 유지하는지이다.

REST 작동방식

가장 많이 사용하는 API 방식이다. 브라우저로 웹사이트를 접속하는 것을 생각하면 쉽다. 주소를 입력하고 엔터를 치면(요청) 해당 주소의 서버가 응답하여 웹사이트 띄워준다.

 

REST 방식의 특징은 한 번 요청하고 내용이 뜨면 그 내용이 변하지 않는다. 최신 정보를 받기 위해서는 계속해서 새로고침을 해야하는 것이다. 주식 시세와 같이 실시간으로 데이터를 확인해야 하는 정보에서는 치명적인 방식이다.

Websocket 작동방식

웹소켓은 이러한 REST 방식의 한계점에서부터 출발한 방식이다. REST와는 다르게 한 번 요청하면 그 뒤로 계속해서 알아서 업데이트 해주는 방식의 API이다. 일종의 구독형 API라고 생각하면 된다.

 

데이터 요청자와 제공자 간에 채널이 열리게 되고 원하는 정보를 제공자에게 알린다(구독). 그리고 채널이 닫히지 않는 한, 제공자는 계속해서 데이터를 제공한다.

비유

REST API는 문을 두드리면 열려서 데이터가 주어진 후 닫히는 문과 같고, Websocket API는 한 번 틀면 계속 나오는 수도꼭지와 같다.

REST API

Websocket

참고

실시간으로 최신 데이터를 불러오는 Websocket API, REST API와 어떤 차이가 있을까?

 

 

참고 - https://kgw7401.tistory.com/47

 

REST vs Websocket - 차이/작동방식/적절한 비유

글 작성 배경 이번에 비트코인 관련 프로젝트를 하면서 API를 사용할 일이 생겼다. 이 과정에서 시세 데이터를 수신하는 API를 사용하려고 하였는데, REST와 Websocket 두 방식을 지원하고 있었다. 둘

kgw7401.tistory.com

 

728x90