웹소켓
웹소켓은 클라이언트와 서버 간에 양방향 통신을 실현하는 프로토콜임.
일반적인 HTTP 통신과는 달리, 웹소켓은 지속적으로 연결을 유지하며 데이터를 실시간으로 주고받을 수 있음.
웹소켓을 사용하면 브라우저나 애플리케이션이 서버와 지속적으로 연결을 유지해 서버가 새로운 정보를 클라이언트에 즉시 푸시할 수 있는 환경을 제공함
1. 웹소켓의 동작 방식
1. 핸드셰이크
웹소켓 연결을 시작할 때 클라이언트는 HTTP 요청을 통해 웹소켓 핸드셰이크를 수행함.
이 과정에서 `Upgrade: websocket`이라는 헤더를 사용하여 HTTP를 웹소켓 프로토콜로 업그레이드함.
서버가 이 요청을 수락하면 연결이 확립됨.
2. 양방향 통신
핸드셰이크 후, 연결이 설정되면 양방향으로 데이터를 실시간으로 주고받을 수 있음.
클라이언트와 서버는 추가 요청 없이 데이터를 자유롭게 송수신할 수 있음.
3. 지속적 연결 유지
웹소켓은 연결을 끊지 않고 열려 있는 상태를 유지함.
필요 시 양측이 데이터를 주고받으며 필요할 때까지 연결을 유지하거나, 특정 조건에 따라 연결을 종료할 수 있음.
2. 웹소켓의 장점
1. 낮은 대기 시간
HTTP와 달리 웹소켓은 연결이 유지되기 때문에 실시간으로 데이터를 송수신할 수 있어 대기 시간이 짧음.
2. 효율적인 데이터 전속
추가적인 요청과 응답을 요구하지 않기 때문에, 자원을 절약하고, 서버 및 네트워크의 부하를 줄여줌.
3. 양방향 통신 지원
서버와 클라이언트 모두 필요한 시점에 데이터를 보낼 수 있어, 실시간 알림, 채팅, 주식 데이터 스트리밍 같은 실시간 애플리케이션에 적합함.
3. 웹소켓의 활용 예시
1. 채팅 애플리케이션
양방향 실시간 통신이 가능하여, 사용자가 메시지를 보내면 서버가 즉시 수신자에게 전달할 수 있음.
2. 실시간 주식 정보
주식 시장 데이터와 같이 초 단위로 변하는 정보를 실시간으로 클라이언트에게 전송함.
3. 게임
멀티플레이어 게임에서 플레이어의 움직임을 실시간으로 서버에 전달하고, 다른 플레이어에게도 즉시 반영할 수 있음.
4. IoT 기기
기기와 서버 간의 상태를 실시간으로 모니터링하고 제어하는 데 사용됨.
4. 웹소켓과 HTTP의 차이점
1. 연결 방식
HTTP: 요청-응답 기반
웹소켓: 양방향 통신 가능
2. 연결 유지
HTTP: 매 요청마다 새로 연결
웹소켓: 지속적 연결 유지
3. 통신 방향
HTTP: 클라이언트 -> 서버
웹소켓: 클라이언트 <-> 서버
4. 데이터 전송 효율
HTTP: 비교적 낮음
웹소켓: 매우 높음
'Data Engineering > Zeppelin' 카테고리의 다른 글
[Zeppelin] 전송 계층 (0) | 2024.11.04 |
---|---|
[Zeppelin] TCP 통신 (0) | 2024.11.03 |
[Zeppelin] Zeppelin에서 Flink를 사용하는 방법 (1) | 2024.10.17 |
[Zeppelin] Apache livy (0) | 2024.10.17 |
[Zeppelin] 제플린 실행 프로세스 (0) | 2024.10.11 |