Proxy Server, 캐싱, 로드밸런싱

DevHwan·2023년 4월 13일
0

프록시 서버란?

프록시 서버란 클라이언트가 서버에 직접적으로 접근하는 것이 아니라 클라이언트와 서버 사이에서 요청과 응답을 중계하는 서버이다.

프록시 서버의 종류

  • 웹 프록시 서버
    • 클라이언트의 웹 브라우저와 인터넷 사이에 위치한 프록시 서버이다. 웹 요청을 대신 수행하고 이를 이용해 클라이언트의 IP를 숨기거나 캐싱을 통한 성능 향상을 제공할 수 있다.
  • 응용 프로그램 프록시 서버
    • 클라이언트가 응용 프로그램에 접속할 때, 중간에서 대신 접속하여 보안, 캐싱을 제공하는 서버이다.
  • 리버스 프록시 서버
    • 클라이언트와 서버 간의 통신을 중계하여 서버의 보안, 성능, 가용성 등을 향상시키는 서버이다. 이전과 마찬가지로 이번엔 클라이언트가 아닌 서버의 IP주소등을 숨기는 데 사용할 수 있다. 이를 통해 서버의 보안을 강화하고, 로드밸런싱, 캐싱에 사용할 수 있다.

프록시 서버의 유형

프록시 서버의 유형은 2가지로 분류할 수 있다.

  • Forward Proxy
  • Reverse Proxy

Forward Proxy

해당 프록시는 클라이언트의 사용에 집중되어 있다. 클라이언트는 프록시 서버를 통해 본인의 IP를 숨기고, 데이터를 전송할 수 있다.

Reverse Proxy

해당 프록시는 이전과 다르게 서버와 인터넷 사이에 위치한 프록시 서버이다. 이번엔 반대로 서버의 정보를 클라이언트에게 노출하지 않을 수 있다. 그 밖에도 로드 밸런싱과 같은 성능상의 이점을 제공할 수 있다.

추가로 SLL, 공격보호 등의 이점을 제공하기도 한다.

이제 프록시 서버에서 제공하는 각각의 기능들을 세밀하게 살펴보자.

캐싱

캐싱은 다른 곳에서 사용되는 개념과 같다. 프록시 서버에서는 클라이언트의 요청을 받아 원격 서버에서 데이터를 가져오는 대신에 이전에 이미 가져온 데이터를 저장해두는 것을 의미한다. 이렇게 저장해 둔 데이터를 다음에 같은 요청이 들어왔을 때, 원격 서버에서 가져오는 동작을 하는 대신에 저장된 데이터를 빠르게 바로 응답한다.

캐싱을 이용하면 클라이언트는 빠른 응답을 받을 수 있다. 또한 원격 서버에 대한 요청 횟수를 줄여서 서버의 부하를 감소시킨다.

또한 캐싱은 빠른 데이터 접근을 위한 지역적인 저장소를 제공하기 때문에, 지리적으로 떨어져있는 원격 서버의 데이터를 가져오는 데 드는 지연시간을 최소화 할 수 있다.

CDN과 비슷한 이점을 제공한다. → 곧 다른 포스팅에서 다룰 예정이다.

로드 밸런싱

로드 밸런싱은 수 많은 요청에 따른 시스템 부하를 분산하는 기술이다. 클라이언트의 요청을 여러 대의 서버에 분산하여 처리하고, 그 결과를 클라이언트에게 반환함으로써, 서버의 처리 능력을 향상시키는 방식이다. → 이용자와 서버 모두 빠른 응답 시간과 높은 가용성을 제공받는다.

Scale Up과 Scale Out

Scale Up은 서버의 성능을 높여서 요청을 빠르게 처리하는 방식이다. → 비용이 증가한다.

Scale Out은 여러 대의 서버를 추가로 배치하여 부하를 분산처리하는 방식이다. 이 방식은 클러스터링, 가상화, 컨테이너 등의 기술을 활용하여 구현된다. → 비용이 증가한다.

→ 모든 건 돈과 연결된다. → 가용성 → 돈

하드웨어 로드밸런싱

하드웨어 로드밸런싱은 OSI 모델의 다양한 레이어에서 작동할 수 있다. 일반적으로 로드밸런서는 L4, L7, DNS 레벨에서 작동한다.

L4 로드 밸런싱 ( 네트워크 계층 )

TCP/UDP 네트워크 레이어에서 작동한다. L4 로드 밸런서는 패킷의 헤더의 정보를 가지고 분배한다. IP주소와 포트 번호를 보고 TCP 및 UDP 패킷을 분배하고 각 패킷을 처리할 서버를 선택한다.

가장 기본적인 방법으로는 Round Robin 방식을 선택한다.

클라이언트가 www.hwan2da.com으로 접속햇을 때, 로드 밸런서에서 서버 풀에 있는 웹 서버 중 하나를 선택하여 연결하고 통신하게 된다.

  • 성능이 좋고, 패킷 라우팅 속도가 빠르다.
  • 패킷 헤더 정보만을 바탕으로 분산하기 때문에 애플리케이션 계층에서 발생하는 문제를 고려할 수 없다.

L7 로드 밸런싱 ( 응용 계층 )

HTTP와 같은 응용 프로그램 레이어에서 작동한다. L7 로드 밸런서는 네트워크 트래픽에서 HTTP 요청을 인식하고 요청의 URI, HTTP 헤더 및 쿠키, 다양한 요청 매개변수를 기반으로 요청을 분배한다. L7 로드 밸런서는 각 콘텐츠 별 로드밸런싱 및 SSL 가속 기능을 포함하는 고급 로드 밸런싱 기능을 지원한다.

L4보다 구체적인 로드 밸런싱이 가능하다.

예를 들어 클라이언트가 www.hwan2da.com/member 로 요청을 하게 되면, member와 관련된 서비스를 제공하는 분할된 서버로 요청을 할 수 있다. → 기능별 로드 밸런싱 가능

그 밖에도 SSL 가속 ( SSL 암호화, 복호화를 서버가 아닌 로드 밸런서에서 처리하여 서버 부하를 줄이는 기능 )을 제공한다.

로드밸런싱을 통해 무중단 배포가 가능한가?

로드 밸런싱은 서버의 처리 능력을 향상시켜 요청을 처리하는 데 효율적으로 하는 방식이다. 그 중 한가지 방법으로 Scale Out이 존재하고, 이를 통해 부하를 여러 서버의 분산처리함으로 써 해결할 수 있다. 자연스럽게 서버가 여러 대가 된다면 한 서버가 다운되더라도 다른 서버는 정상작동하여 무중단 배포가 가능해진다. 따라서 로드밸런싱의 구성이 잘 되어있으면 무중단 배포 환경을 구성할 수 있지만 로드밸런싱 그 자체가 무중단 배포와 연결된 것은 아니라고 할 수 있다. + Scale Out 방식 중 클러스터링을 사용하더라도 업데이트 방식, 노드 전략에 따라 무중단 배포는 될 수 있고, 안 될 수 있다.

다음 네트워크 글에서는 CDN에 대해서 알아보자! ( 아닐수도 있음 )

  • 자료출처

https://www.cloudflare.com/ko-kr/learning/cdn/glossary/reverse-proxy/
https://www.imperva.com/learn/performance/browser-caching/
https://www.nginx.com/resources/glossary/load-balancing/
https://blog.router-switch.com/2021/03/what-is-the-difference-between-scale-up-and-scale-out/

profile
달리기 시작한 치타

0개의 댓글