Proxy가 무엇인지에 대해서 먼저 이야기해보자.
프록시는, 영어 뜻대로 네트워크에서 "대리" 역할을 수행한다
네트워크에서의 대리 역할이라함이 무엇인지 감이 잘 오지 않는데, 예를 들어보자.
인터넷과 인터넷이 통신하는데, 그 사이에 프록시가 끼어있다.
프록시는 저 사이에서 중계 역할을 통해 서버와 클라이언트가 통신을 수행할 수 있도록 돕는다.
프록시는 쓰임에 따라 네트워크 구조 어디든 배치될 수 있는데, 간단한 두 가지 예시를 들어보자면 Forward Proxy와 Reverse Proxy가 존재한다.
Forward Proxy란 클라이언트와 가까운 곳에 프록시가 존재하는 것으로, 클라이언트의 요청을 대신 서버에게 전달해주는 역할을 수행한다. 클라이언트의 요청을 대리 수행해준다는 말 안에 포함된 장점을 찾아보자. 우선, 클라이언트가 적절하지 않은 요청을 보냈을 때 프록시에서 필터링할 수 있다. (다들, 학교에서 "이용할 수 없는 사이트"라는 페이지를 많이 보았을 것이다.) 그리고 프록시는 인기있는 요청들을 캐싱(저장)해 두어 클라이언트에게 오는 요청을 서버까지 보내지 않고, 프록시에서 응답할 수 있어 네트워크 비용을 줄일 수 있다.
Reverse Proxy란 서버와 가까운 곳에 프록시가 존재하는 것으로, 서버의 응답을 대신 클라이언트에게 전달해주는 역할을 수행한다. Forward Proxy와 마찬가지로 Reverse Proxy는 어떤 장점을 가질 수 있을까? 사실 '서버의 응답을 대신 클라이언트에게 전달해준다'라는 말은 프록시의 대리역할을 빛내기 위해 요약한 설명이지, 반대로 생각하자면 프록시는 클라이언트에게 온 요청을 여러 서버 중 적절한 서버에게 전달해주는 로드 밸런서 역할을 할 수 있다. 또한 요청에서 개인 정보를 파악할 수 있는 헤더를 제거하고 서버에 요청을 보냄으로서 익명성을 보장해줄 수 있다. 그리고 서버 앞단에 놓여있기 때문에 실제 서버에 대해 알 수 없도록, 보안을 높일 수도 있다.
위에서 로드 밸런서 역할을 수행한다고 했는데, 로드 밸런서는 어떤 역할을 하는지 알아보자.
Load Balancer란 분배하는 역할을 수행한다. 무엇을 분배하냐면, 요청을 적절한 서버로 분배한다. 즉, 하나의 인터넷 서비스가 발생하는 트래픽이 많을 때 여러 대의 서버가 분산처리하여 서버의 로드율 증가, 부하량, 속도저하 등을 고려하여 적절히 분산처리하여 해결해주는 서비스이다.
클라이언트의 수가 굉장히 많이 늘어나, 서버의 하드웨어를 고성능으로 높여도 해결되지 않을 경우에 이용할 수 있다. (물론 하드웨어를 안높이고 바로 서버의 개수를 증설한 뒤 로드밸런서를 배치해도 된다.)