Reverse Proxy란?
Reverse Proxy란,
Reverse Proxy는 클라이언트로부터의 요청을 받아서(필요하다면 주위에서 처리한 후) 적절한 웹 서버로 요청을 전송한다. 웹 서버는 요청을 받아서 평소처럼 처리를 하지만, 응답은 클라이언트로 보내지 않고 Reverse Proxy로 반환한다. 요청을 받은 Reverse Proxy는 그 응답을 클라이언트로 반환한다.
통상의 프락시 서버는 LAN -> WAN의 요청을 대리로 수행하지만 Reverse Proxy는 WAN -> LAN의 요청을 대리한다.
클라이언트로부터의 요청이 웹서버로 전달되는 도중의 처리에 끼어들어서 다양한 전후처리를 시행할 수가 있게 된다.
Reverse Proxy를 사용하면 좋은 이유
시스템 전체의 메모리 사용효율 향상
동적 콘텐츠를 반환하는 웹서버는 통상 애플리케이션이 이용하는 프로그램을 메모리에 상주시킴으로써, 애플리케이션 기동시의 오버헤드를 회피할 수 있게 설계되어 있다. 통상 WAS 서버는 클라이언트의 하나의 요청에 대해 하나의 프로세스 또는 하나의 쓰레드를 할당해서 처리하는 방식을 취하고 있다. 각각의 프로세스/쓰레드는 다른 프로세스/쓰레드와는 독립적으로 동작한다. 이로 인해 애플리케이션 개발자는 리소스 경합을 신경쓰지 않고 프로그램을 개발할 수 있으므로, 애플리케이션 설계가 쉽고 편해진다는 장점이 있다. 그러나 이 경우 이미지나 자바스크립트, CSS와 같은 정적 컨텐츠를 반환하는, 즉 파일에 쓰인 내용을 그대로 반환하기만 하면 될 경우도 동일한 방식으로 반환하게 된다.
웹 서버가 응답하는 데이터의 버퍼링의 역할
HTTP의 Keep-Alive
서버측이 Keep-Alive OK라는 지시를 HTTP 헤더로 브라우저에 알리면, 브라우저는 서버와의 접속을 계속 유지해서 Keep-Alive 사양을 따라 하나의 접속으로 여러 파일을 다운로드한다.
Keep-Alive는 한번 연결된 접속을 당분간 유지하는 특성상, 웹 서버에 다소 부하를 야기한다. 구체적으로는 특정 클라이언트로부터 요청을 받은 프로세스/스레드는 그 시점으로부터 일정 시간 동안 해당 클라이언트로의 응답을 위해서 점유되는 것을 들 수 있다.
Reverse Proxy의 경우 프로세스당 메모리 소비량이 그다지 많지 않으므로 하나의 호스트 내에 1000~10000 프로세스를 실행할 수도 있다. 이 경우에는 일부 프로세스가 Keep-Alive연결을 유지하기 위해 소비된다고 해도 문제가 되지 않는다.
결국 클라이언트와 Reverse Proxy 사이에만 Keep-Alive on, Reverse Proxy와 백엔드 사이에는 Keep-Alive OFF로 설정한다.
출처: "Reverse Proxy란[웹사이트].(2020.9.11).URL: brainbackdoor.tistory.com/113"
'공부' 카테고리의 다른 글
ORM 이란? (0) | 2020.10.21 |
---|---|
백앤드 개발자 로드맵 (0) | 2020.10.18 |
Elastic stack 구성 (0) | 2020.09.11 |
My SQL - pymysql cursor 개념 (1) | 2020.09.08 |
Github 사용법에 대해서 (0) | 2020.09.06 |