프록시(Proxy)란?
프록시(Proxy)의 사전적 의미는 대리, 대리권을 의미합니다.
프록시 서버는 원 서버를 대리하여 통신하며 캐시, 로드밸런서, 보안 등 중계 역할을 하는 하는 서버 일컫습니다.
프록시 서버가 중간에 위치하기 때문에 클라이언트는 프록시 서버를 ‘서버’라고 인식하고, 서버 입장에서는 프록시 서버를 ‘클라이언트’로 인식하게 됩니다.
이러한 구조상 어디에 위치하느냐에 따라 포워드 프록시(forward proxy) 혹은 리버스 프록시(reverse proxy)로 나누어 집니다. 일반적인 프록시 서버는 포워드 프록시를 말하며, 이는 클라이언트-서버 구조에서 클라이언트 쪽을 대리하며, 클라이언트에서 서버로 리소스를 요청할 때 직접 요청하지 않고 프록시 서버를 거쳐서 요청합니다.
리버스 프록시는 포워드 프록시와 반대의 개념으로, 애플리케이션 서버의 앞에 위치하여 클라이언트가 서버에 요청할 때 리버스 프록시를 호출하고, 리버스 프록시가 원 서버로부터 응답을 전달받아 다시 클라이언트에게 전송하는 역할을 합니다.
이러한 프록시 서버를 사용하는 목적은 상황에 따라 다를 수 있습니다.
- 보통은 보안성과 안정성 혹은 서비스의 성능을 향상시키기 위해서 사용한다.
Privacy
프록시 서버는 개인정보 보안성을 향상시키기 위해서 웹브라우저나 네트워크에서 사용되어질 수 있다. 프록시를 통해서 만들어진 웹 리퀘스트는 웹 서버에서 클라이언트의 IP를 숨기는데 도움이 될 수 있다.
Encryption
프록시 서버는 암호화에 보완되어서 사용되어질 수 있다.
Compression
프록시 서버는 네트워크의 대역폭을 줄이고 성능을 향상시키기 위해, 서버로부터의 응답을 압축하는데 사용되어질 수 있다.
Security
많은경우에서 프록시서버들은 웹 서버를 정형화되지 않은 보안을 위협하는 것들로부터 보호하는 front Ends라고 할 수 있다.
Load Balanceing
Caching
Content Delivery Network
Filtering
Logging
Performance
https://simplicable.com/new/proxy-server
https://simplicable.com/new/reverse-proxy
로드밸런서(Load Balancer)
서비스 규모가 커지면 서버 한 대로는 모든 서비스를 수용할 수 없게 됩니다.
서버 한 대로 서비스를 제공할 수 있는 용량이 충분하더라도 서비스를 단일 서버로 구성하면 해당 서버의 애플리케이션, 운영체제, 하드웨어에 장애가 발생했을 때, 정상적인 서비스를 제공할 수 없습니다.
서비스 가용성(availability)를 높이기 위해서 하나의 서비스는 보통 두 대 이상의 서버로 구성하는데 각 서버 IP주소가 다르므로 사용자가 서비스를 호출할 때는 어떤 IP로 서비스를 요청할지 결정해야 합니다.
사용자에 따라 호출하는 서버의 IP가 다르면, 특정 서버에 장애가 발생했을 때, 전체 사용자에게 영향을 미치지 않아 장애 범위는 줄어들겠지만 여전히 부분적으로 서비스 장애가 발생합니다.
이러한 문제점을 해결하기 위해서
로드 밸런서(Load Balancer)를 사용
로드 밸런서에는 동일한 서비스를 하는 다수의 서버가 등록되고 사용자로부터 서비스 요청이 오면 로드 밸런서가 받아 사용자별로 다수의 서버에 요청을 분산시켜 부하를 분산합니다.
로드 밸런서에는 서비스를 위한 가상 IP를 하나 제공하고, 사용자는 각 서버의 개별 IP 주소가 아닌 동일한 가상 IP를 통해 각 서버로 접근 합니다. 이 외에도 로드 밸런서는 각 서버의 서비스 상태를 체크해 서비스가 가능한 서버로만 사용자의 요청을 분산하므로 서버에서 장애가 발생하더라도 기존 요청을 분산하여 다른 서버에서 서비스를 제공할 수 있습니다.
계층별 로드 밸런서
로드 밸런서는 동작하는 계층에 따라 OSI 7계층 모델을 기준으로 보통 4계층과 7계층으로 나뉩니다.
L4 로드 밸런서
일반적인 로드 밸런서가 동작하는 방식입니다. TCP, UDP 정보(특히 포트넘버)를 기반으로 로드 밸런싱을 수행합니다. 이 때, 부하를 분산하는 기능 뿐만 아니라, TCP 계층에서의 최적화와 보안 기능을 함께 제공합니다. 그러나 최근 사용되는 로드 밸런서는 4계층과 7계층의 기능을 모두 지원하기 때문에 4계층 로드밸런싱만 제공하는 경우는 찾기 어렵습니다.
L7 로드 밸런서
HTTP, FTP, SMTP와 같은 애플리케이션 프로토콜 정보를 기반으로 로드 밸런싱을 수행합니다. 이 때 HTTP 헤더 정보나 URI와 같은 정보를 기반으로 프로토콜을 이해한 후 부하를 분산합니다. 일반적으로 이런 장비를 ADC(Application Delivery Controller)라고 부르며 리버스 프록시 역할을 수행합니다. 대부분의 L7 로드밸런서는 4계층에서 7계층까지 로드밸런싱 기능을 제공하며, 장애극복(Failover), 리다이렉션의 기능도 함께 수행합니다.
댓글