현대 소프트웨어 개발에서 서버와의 효율적인 데이터 통신은 핵심적인 주제 중 하나입니다.
이에 따라 HTTP, AJAX, WebSocket, SSE와 같은 다양한 통신 프로토콜과 기술들이 등장했습니다.
이번 글에서는 각각의 특징과 활용 방법을 자세히 살펴보겠습니다.
웹과 애플리케이션 개발에 필수적인 이 기술들을 이해하고 활용함으로써 보다 효과적이고 동적인 데이터 통신을 구현할 수 있습니다.
1. HTTP
HyperText Transfer Protocol
HTTP에서는 클라이언트가 서버에 요청 메시지를 보내면 이에 대해 서버가 응답 메시지를 반환합니다.
서버는 응답 메시지를 반환한 후에 초기 상태로 돌아갑니다. 이 때 서버는 클라이언트의 상태를 저장하지 않습니다.
즉, HTTP 프로토콜은 상태가 없는 프로토콜 입니다.
여기서 상태가 없다라는 말은 데이터를 주고 받기 위한 각각의 데이터 요청이 서로 독립적으로 관리가 된다는 말이고,
이전 데이터 요청과 다음 데이터 요청이 서로 관련이 없다는 말입니다.
이러한 특징 덕분에 서버는 세션과 같은 별도의 추가 정보를 관리하지 않아도 되고,
다수의 요청 처리 및 서버의 부하를 줄일 수 있는 성능 상의 이점이 생깁니다.
2. Ajax
Asynchronous Javascript And Xml
자바스크립트 라이브러리 중 하나이며, 브라우저가 가지고 있는 XMLHttpRequest 객체를 이용해서 전체 페이지를 새로 고치지 않고 페이지의 일부만을 로드하는 기법입니다.
자세한 설명은 이전에 따로 정리했으므로 링크로 남기겠습니다.
https://repeater2487.tistory.com/49
3. WebSocket 과 SSE
WebSocket과 SSE는 비슷한점도 많아 같이 묶어서 알아보겠습니다.
WebSocket과 Server-Sent Events(SSE)는 웹 애플리케이션에서 실시간 통신을 구현하는 데 사용되는 기술로,
HTTP의 단점을 극복하고 더 효율적인 양방향 통신을 제공합니다.
두 기술은 몇 가지 유사한 측면을 가지고 있습니다.
3 - 1. 공통점
- 양방향 통신 : WebSocket과 SSE는 양방향 통신을 지원하여 클라이언트와 서버 간에 실시간으로 데이터를 주고받을 수 있습니다.
- 실시간 업데이트 : 둘 다 실시간으로 데이터를 전송함으로써, 서버의 변경 사항이 발생하면 클라이언트에 즉시 업데이트할 수 있습니다.
- 단일 연결 유지 : WebSocket과 SSE는 한 번의 연결로 계속해서 데이터를 주고받을 수 있어 오버헤드를 최소화하고 효율적인 통신을 가능케 합니다.
3 - 2. 차이점
- 프로토콜 : WebSocket은 양방향 통신을 위한 전체 이중 통신 프로토콜을 사용하며, SSE는 기존의 HTTP 프로토콜 위에 구축된 단방향 통신 프로토콜입니다.
- 클라이언트 요청 : WebSocket은 클라이언트가 서버에 연결을 초기화하며 이후에도 연결이 유지됩니다. SSE는 클라이언트가 서버에 한 번 연결하면 서버에서 이벤트가 발생할 때까지 연결을 유지하고 있습니다.
- 데이터 형식: WebSocket은 텍스트 및 이진 데이터를 지원하고, SSE는 주로 텍스트 데이터를 전송하는 데에 사용됩니다.
이런 공통점과 차이점으로 WebSocket은 실시간 게임, 채팅 애플리케이션 등에서 효과적이며, SSE는 주로 서버에서 클라이언트로의 단방향 푸시 알림이 필요한 상황에서 유용하게 사용됩니다.