NGINX를 WebSocket 프록시로 사용하는 방법에서 NGINX를 사용하여 WebSocket 애플리케이션 서버를 프록시하는 방법에 대해 논의했습니다. 이 게시물에서는 WebSocket으로 실시간 애플리케이션을 만들 때 고려해야 할 아키텍처 및 인프라 문제 중 일부, 필요한 구성 요소 및 시스템을 구성하는 방법에 대해 논의합니다.
WebSocket은 HTTP에 상호 작용성을 추가합니다
HTTP는 요청/응답 기반 웹 애플리케이션에 적합하며, 통신 흐름은 항상 클라이언트가 백엔드 서버가 응답하는 요청을 시작합니다. 클라이언트와 서버 간에 보다 상호 작용적이고 메시지 기반의 상호 작용을 하는 웹 애플리케이션에는 단순한 HTTP 이상의 것이 필요합니다. HTTP를 통한 풀 듀플렉스 통신을 시뮬레이션하려는 이전 시도는 복잡했고 많은 단점이 있었습니다. WebSocket 프로토콜과 WebSocket JavaScript 인터페이스는 이러한 유형의 애플리케이션을 빌드하는 훨씬 더 쉬운 방법을 제공하는 동시에 전송되는 데이터 양과 대기 시간을 줄입니다.
클라이언트와 서버 간에 풀 듀플렉스 소켓 연결을 만드는 기능은 푸시, 폴 또는 스트리밍 통신을 활용하는 실시간 이벤트 기반 웹 애플리케이션을 개발할 수 있게 해줍니다. WebSocket을 사용하면 연결이 설정된 후 클라이언트나 서버가 통신을 시작할 수 있습니다. 이를 통해 온라인 게임, 채팅, 주식 추적, 스포츠 점수의 실시간 보고를 포함한 다양한 유형의 웹 애플리케이션을 사용할 수 있습니다.
WebSocket의 또 다른 사용 사례는 WebRTC 기반 애플리케이션을 개발하는 것입니다. WebRTC는 브라우저 간 통신을 하는 애플리케이션을 만드는 데 사용됩니다. 통신 설정을 위해 별도의 신호 채널이 필요하며, WebSocket은 이를 위해 사용하기에 좋은 프로토콜입니다.
WebSocket 애플리케이션에 대한 기술적 요구 사항
WebSocket 웹 애플리케이션에 필요한 최소 인프라는 WebSocket JavaScript 애플리케이션을 실행하고 WebSocket 서버와 통신하는 클라이언트 브라우저입니다. 모든 주요 브라우저의 최신 릴리스는 이제 WebSocket을 지원하지만 클라이언트가 WebSocket을 지원하는 브라우저를 가지고 있는지 확인하는 것이 중요합니다. WebSocket 서버에는 많은 옵션이 있으며 다음은 다양한 환경에 대한 몇 가지 예입니다(이 목록은 편의를 위해 제공되며 NGINX, Inc.의 보증을 구성하지 않습니다).
트래픽 볼륨에 맞춰 WebSocket 확장
단일 WebSocket 서버를 사용하는 것은 가능하지만, 애플리케이션 성능은 서버의 용량에 의해 제한되며, 이는 단일 장애 지점이기도 합니다. 많은 실시간 애플리케이션은 광범위한 채택을 기대하며 개발되지만, 성장률을 예측하기 어려울 수 있습니다. 실시간 애플리케이션의 인기 증가를 지원하려면 인프라가 다음을 수행할 수 있어야 합니다.
- 많은 수의 동시 사용자를 지원하도록 확장
- 클라이언트와 서버 간 통신을 처리할 때 낮은 대기 시간을 제공합니다.
- 고가용성 지원(단일 장애 지점이 없음을 의미)
- 구성을 쉽게 변경하고 변화하는 조건에 적응할 수 있도록 합니다.
이는 NGINX를 WebSocket 서버와 HTTP 서버 앞에 배치하여(대부분 WebSocket 애플리케이션도 HTTP를 사용함) WebSocket 인식 역방향 프록시 및 로드 밸런서 역할을 하도록 함으로써 달성할 수 있습니다. 모든 역방향 프록시가 WebSocket을 직접 지원하는 것은 아닙니다. Amazon Web Services(AWS) 환경의 Elastic Load Balancing(ELB)과 같은 일부 프록시는 TCP 모드에서 실행해야 하므로 HTTP 헤더를 처리할 수 없습니다. 프록시 프로토콜은 이러한 제한을 처리하기 위해 개발되었으며 NGINX도 지원하므로 WebSocket은 AWS에서 완벽하게 지원됩니다. NGINX를 WebSocket 역방향 프록시로 사용하면 라우팅 유연성 및 NGINX에서 SSL 연결을 종료할 수 있는 기능과 같은 추가 이점이 있습니다.
NGINX를 사용하는 일반적인 WebSocket 구성은 다음과 같습니다.

여기서는 HTTP 및 WebSocket 서버 세트를 로드 밸런싱하는 고가용성 NGINX 서버 쌍에 연결하는 다양한 데스크톱 및 모바일 클라이언트를 보여줍니다. 이러한 유형의 구성은 WebSocket 서버 또는 NGINX 서버의 장애를 견딜 수 있으며 WebSocket 서버를 쉽게 추가하거나 제거할 수 있습니다. 또한 WebSocket 서버에 연결하는 방법에 대한 모든 라우팅 세부 정보는 클라이언트에서 숨겨져 있어 견고하고 확장 가능한 WebSocket 애플리케이션 인프라를 구축할 수 있습니다. 실시간 웹 애플리케이션의 웹 성능과 안정성은 매우 중요합니다. NGINX Plus가 애플리케이션의 성능, 안정성 및 가용성을 개선하는 데 어떻게 도움이 될 수 있는지 알아보려면 지금 바로 문의하세요 .
위 내용과 같이 NGINX Plus를 활용하여 Demo 가 필요하시면 하단의 전문가에게 상담받기 버튼을 클릭해주세요
전문가에게 상담받기
NGINX를 WebSocket 프록시로 사용하는 방법에서 NGINX를 사용하여 WebSocket 애플리케이션 서버를 프록시하는 방법에 대해 논의했습니다. 이 게시물에서는 WebSocket으로 실시간 애플리케이션을 만들 때 고려해야 할 아키텍처 및 인프라 문제 중 일부, 필요한 구성 요소 및 시스템을 구성하는 방법에 대해 논의합니다.
WebSocket은 HTTP에 상호 작용성을 추가합니다
HTTP는 요청/응답 기반 웹 애플리케이션에 적합하며, 통신 흐름은 항상 클라이언트가 백엔드 서버가 응답하는 요청을 시작합니다. 클라이언트와 서버 간에 보다 상호 작용적이고 메시지 기반의 상호 작용을 하는 웹 애플리케이션에는 단순한 HTTP 이상의 것이 필요합니다. HTTP를 통한 풀 듀플렉스 통신을 시뮬레이션하려는 이전 시도는 복잡했고 많은 단점이 있었습니다. WebSocket 프로토콜과 WebSocket JavaScript 인터페이스는 이러한 유형의 애플리케이션을 빌드하는 훨씬 더 쉬운 방법을 제공하는 동시에 전송되는 데이터 양과 대기 시간을 줄입니다.
클라이언트와 서버 간에 풀 듀플렉스 소켓 연결을 만드는 기능은 푸시, 폴 또는 스트리밍 통신을 활용하는 실시간 이벤트 기반 웹 애플리케이션을 개발할 수 있게 해줍니다. WebSocket을 사용하면 연결이 설정된 후 클라이언트나 서버가 통신을 시작할 수 있습니다. 이를 통해 온라인 게임, 채팅, 주식 추적, 스포츠 점수의 실시간 보고를 포함한 다양한 유형의 웹 애플리케이션을 사용할 수 있습니다.
WebSocket의 또 다른 사용 사례는 WebRTC 기반 애플리케이션을 개발하는 것입니다. WebRTC는 브라우저 간 통신을 하는 애플리케이션을 만드는 데 사용됩니다. 통신 설정을 위해 별도의 신호 채널이 필요하며, WebSocket은 이를 위해 사용하기에 좋은 프로토콜입니다.
WebSocket 애플리케이션에 대한 기술적 요구 사항
WebSocket 웹 애플리케이션에 필요한 최소 인프라는 WebSocket JavaScript 애플리케이션을 실행하고 WebSocket 서버와 통신하는 클라이언트 브라우저입니다. 모든 주요 브라우저의 최신 릴리스는 이제 WebSocket을 지원하지만 클라이언트가 WebSocket을 지원하는 브라우저를 가지고 있는지 확인하는 것이 중요합니다. WebSocket 서버에는 많은 옵션이 있으며 다음은 다양한 환경에 대한 몇 가지 예입니다(이 목록은 편의를 위해 제공되며 NGINX, Inc.의 보증을 구성하지 않습니다).
트래픽 볼륨에 맞춰 WebSocket 확장
단일 WebSocket 서버를 사용하는 것은 가능하지만, 애플리케이션 성능은 서버의 용량에 의해 제한되며, 이는 단일 장애 지점이기도 합니다. 많은 실시간 애플리케이션은 광범위한 채택을 기대하며 개발되지만, 성장률을 예측하기 어려울 수 있습니다. 실시간 애플리케이션의 인기 증가를 지원하려면 인프라가 다음을 수행할 수 있어야 합니다.
이는 NGINX를 WebSocket 서버와 HTTP 서버 앞에 배치하여(대부분 WebSocket 애플리케이션도 HTTP를 사용함) WebSocket 인식 역방향 프록시 및 로드 밸런서 역할을 하도록 함으로써 달성할 수 있습니다. 모든 역방향 프록시가 WebSocket을 직접 지원하는 것은 아닙니다. Amazon Web Services(AWS) 환경의 Elastic Load Balancing(ELB)과 같은 일부 프록시는 TCP 모드에서 실행해야 하므로 HTTP 헤더를 처리할 수 없습니다. 프록시 프로토콜은 이러한 제한을 처리하기 위해 개발되었으며 NGINX도 지원하므로 WebSocket은 AWS에서 완벽하게 지원됩니다. NGINX를 WebSocket 역방향 프록시로 사용하면 라우팅 유연성 및 NGINX에서 SSL 연결을 종료할 수 있는 기능과 같은 추가 이점이 있습니다.
NGINX를 사용하는 일반적인 WebSocket 구성은 다음과 같습니다.

여기서는 HTTP 및 WebSocket 서버 세트를 로드 밸런싱하는 고가용성 NGINX 서버 쌍에 연결하는 다양한 데스크톱 및 모바일 클라이언트를 보여줍니다. 이러한 유형의 구성은 WebSocket 서버 또는 NGINX 서버의 장애를 견딜 수 있으며 WebSocket 서버를 쉽게 추가하거나 제거할 수 있습니다. 또한 WebSocket 서버에 연결하는 방법에 대한 모든 라우팅 세부 정보는 클라이언트에서 숨겨져 있어 견고하고 확장 가능한 WebSocket 애플리케이션 인프라를 구축할 수 있습니다. 실시간 웹 애플리케이션의 웹 성능과 안정성은 매우 중요합니다. NGINX Plus가 애플리케이션의 성능, 안정성 및 가용성을 개선하는 데 어떻게 도움이 될 수 있는지 알아보려면 지금 바로 문의하세요 .
위 내용과 같이 NGINX Plus를 활용하여 Demo 가 필요하시면 하단의 전문가에게 상담받기 버튼을 클릭해주세요
전문가에게 상담받기