웹에서 사용하는 통신

sbj·2024년 1월 6일
0

Web

목록 보기
2/4

웹에서 사용하는 통신

백 엔드는 모든 클라이언트, 즉 사용자들의 컴퓨터에 전달 되어야 할 정보를 총괄하는 역할을 하며, 프론트 엔드의 코드는 각 클라이언트들에게 보여지는 서비스의 표면적인 구동을 담당한다.

HTTP 통신

HTTP 통신이란, 브라우저와 웹 서버가 통신할 수 있도록 통신 규칙과 절차를 규정한 통신 프로토콜이다. HTTP 규칙을 따르겠다고 합의된 이상, 적절한 순서와 절차를 통해 원하는 파일과 데이터를 송수신 할 수 있도록 마련된 것이다.

HTTP 요청은 기본적으로 요청과 응답(Request&Response)로 이뤄진다. 하나의 컴퓨터에서 다른 쪽으로 특정한 정보 혹은 파일을 요청하고, 그 신호를 인식한 상대 쪽 컴퓨터에서는 그에 대응하는 응답을 돌려주는 방식이다.

많은 경우에 있어 합리적인 통신 수단이지만, 그만큼 한계도 명확하 방식이 된다.

왜냐?

두 컴퓨터간의 연결을 지속하는 방식 대신 단발적으로 요청이 수신 되었을 때만 연결을 허가하고 응답까지 마무리 된 후에는 연결을 해제하는 방식인 만큼, 소규모 정보 전달이 다수 발생할 경우 계속해서 연결을 생성하고 해제하는 과정을 거쳐야하기 때문에 굉장한 리소스 낭비가 발생한다.

여기서 데이터 베이스 Pooling 방식을 떠올릴 수 있다.
데이터베이스 커넥션 풀링은 데이터 베이스와의 연결을 여러 개 생성해두고, 필요할 때마다 이를 재사용하는 방식이므로 연결 생성과 해제에 소요되는 리소스와 시간을 줄일 수 있다.


소켓 통신이란?

이러한 HTTP 단점을 보완하기 위해 소켓 통신이 사용된다. 소켓 통신은 간단하게 클라이언트와 서버, 두 컴퓨터가 특정한 Port를 통해 실시간으로, 양방향 통신을** 가능하게 만든 통신이다.

정확히는 두 컴퓨터가 서로에게 단방향 통신을 주고 받음으로써 양방향 통신과 동일하게 구동하는 것이지만, 기능적으로 두 컴퓨터는 동등한 위치에서 통신을 주고받게 된다.

즉, 웹 서버 ↔ 웹 브라우저 간의 서로 실시간 메시지를 교환하는데에 사용한다.

WebSocket의 동작 방식?

HTTP 요청에서 연결을 Socket으로 업그레이드 하고자 한다는 요청을 주고 받음으로써 시작된다. 두 컴퓨터간의 상호 동의가 있다는 가정 하에 진행되는 연결로써, 소켓을 여는 작업과 그 열린 소켓에 연결을 하는 작업을 동반하게 된다. 즉, 최초의 Handshake 방식의 요청과 응답이 한 차례 오가면, 자유로운 WebSocket 통신이 열리게 되는 것이다. 매번 메시지 전송 시에 새롭게 연결을 맺을 필요가 없어 빠르고 효율적이다.


소켓 통신의 이점?

HTTP 통신 만으로는 불가능했던 것을 가능하게 만드는 것에 있다.

  1. HTTP로는 불가능했던 지속, 반복 적인 통신을 더 적은 리소스로 가능하게 만든다.
  2. 서버 쪽에서 클라이언트 방향으로 먼저 정보를 전송하며 통신하는 것이 가능해진다.

소켓 통신의 문제점은?

  1. 프로그램 구현에 많은 복잡성을 초래한다.
    1. HTTP와 달리 Stateful Protocol 이기 때문에, 서버 ↔ 클라이언트 간의 연결을 항상 유지해야 하며, 만약 비정상적으로 연결이 끊어졌을 때 적절하게 대응해야 한다. HTTP 사용과 비교했을 때 코딩의 복잡성을 가중시키는 요인이 될 수 있다.
  2. 서버와 클라이언트 간의 Socket 연결을 유지하는 것 자체가 비용이 든다.
    1. 특히나 트래픽 양이 많은 서버 같은 경우엔, CPU에 큰 부담이 될 수 있다.
  3. 오래된 버전의 웹 브라우저에선 지원하지 않는다.

대표적인 사용 예시

  1. 페이스북과 같은 Social Media App
  2. LOL과 같은 멀티플레이어 Game
  3. 위치 기반 App
  4. 증권 거래 정보 사이트 및 APP
  5. 화상 채팅 APP

웹 소켓을 통해 구현할 수 있는 기능

  1. 실시간 채팅
    1. 사용자 간의 실시간 대화를 가능하게 한다. 채팅 메시지는 클라이언트에서 서버로 전송되고, 서버는 이 메시지를 모든 연결된 클라이언트에게 재전송한다.
  2. 실시간 알림
    1. 웹 사이트, 애플리케이션에서 실시간으로 알림을 전송할 수 있다. 예를 들어, 소셜 미디어 사이트에서 새로운 게시물이 업로드 되거나, 이메일 앱에서 새로운 이메일이 도착했을 때 실시간 알림을 보낼 수 있다.
  3. 실시간 데이터 스트리밍
    1. 서버 → 클라이언트로 실시간으로 데이터 스트리밍을 할 수 있다. 주식 거래 사이트에서 실시간 주식 가격 정보를 업데이트 하거나, 날씨 사이트에서 실시간 기상 정보를 제공할 수 있다.

profile
Strong men believe in cause and effect.

0개의 댓글