forward proxy, reverse proxy, road balance
forward proxy, reverse proxy 에 대해 공부하고 사용하는 이유, 차이점에 대해서 설명
proxy
proxy 는 쉽게 대리 입니다. 무언가를 대신 해주는 녀석입니다.
프록시는 종류도 여러가지입니다. 저희가 주로 쓰는 spring 에도 spring proxy 가 있고, proxy 패턴도 있고 network proxy 가 있습니다. 제가 이번에 설명할 건 Network Proxy 가 되겠습니다!
network proxy는..
클라이언트와 서버 사이에서 대리해주는 녀석입니다.
network proxy 에는 두가지 방법으로 나뉘어집니다.
- Forward Prxoy
- Reverse Proxy
Forward Proxy
forward proxy 는 포워드 프록시 서버가 요청을 받아서 example.com 에 연결하여 그 결과를 클라이언트에 전달(Forward) 해줍니다
- Forward Proxy 는 캐싱을 해줘서 속도가 빠릅니다
- server 가 응답받은 요청을 누가 했는 지 모르게 익명성도 보장합니다.
캐싱 : 요청에 대한 응답 데이터를 proxy 에서 기억해두었다가 클라이언트가 똑같은 요청을 했을 때 서버에 다시 물어보지않고 저장해뒀던 응답값을 내보내줍니다.
캐싱 덕에 정해진 사이트만 연결하게 설정하는 등 웹 사용 환경을 제한할수 있으므로 기업 환경등에서 많이 사용합니다.
Reverse Proxy
클라이언트가 example.com 웹 서비스에 데이터를 요청하면 Reverse Proxy는 이 요청을 받아서 내부 서버에서 데이타를 받은후에 이 데이타를 클라이언트에 전달하게 됩니다.
내부 서버가 직접 서비스를 제공해도 되지만 이렇게 구성하는 이유중 하나는 보안때문입니다. WAS 는 보통 DB 서버와 연결되므로 WAS 가 최전방에 있으면 WAS 가 털릴 경우 DB 서버까지 같이 털리는 심각한 문제가 발생할 수 있습니다.
- Reverse Proxy 는 캐싱을 해줘서 속도가 빠릅니다
- Client 는 Reverse Proxy 를 실제 서버라고 알고있게해서 보안성을 높여줍니다.
Road Balancing
Road Balancing 은 쉽게 부하분산입니다. 하나의 서버가 할 일은 여러 서버가 나누어서 처리하는 것입니다.
왜요? 왜 나누는 거에요?
- 서버의 과부하를 막기 위해서 입니다. 적은 작업과 요청은 하나의 서버가 처리하기엔 비용도 적고 속도도 빠르겠지만 시간이 지날 수록 무거워지는 작업량과 많아지는 요청량에 하나의 서버는 버틸 수 없을 것입니다.
이 친구가 어떻게 일하는지 궁금해요
- 사용자가 예를 들어 https://eojin312.github.io/ 로 접근 시 서버 A 와 서버 B 로 Road Balancing 해줍니다
- 사용자가 https://eojin312.github.io/ 여기에서 /category, /profile 으로 접속하면 그 담당 서버들로 또 나눠줍니다.
결론
- Forward Proxy 는 캐싱덕에 속도가 아주 빠르다
- Reverse Proxy 는 보안이 아주 강합니다.
- Road Balancing 은 서버 과부하를 막기위해 작업과 요청을 여러 서버에서 처리한다.