[Web] Forward Proxy, Reverse Proxy, Load Balancer

Borahm·2021년 5월 17일
0

Web

목록 보기
3/5
post-thumbnail

Proxy

  • 일반적인 의미: 대리, 대리인
  • 즉, 남을 대신하여 일을 처리하거나 처리하는 존재

Proxy Server

  • 대신 일을 처리해주는 서버
  • 클라이언트와 서버 사이의 중계 서버로, 통신을 대리 수행하는 서버
  • 캐시 / 보안 / 트래픽 분산 등에서 여러 장점을 가질 수 있다.
  • 종류로는 Forward ProxyReverse Proxy가 있다.

이미지 출처

Forward Proxy

  • 일반적으로 말하는 Proxy는 Forward Proxy이다.

    • Proxy 서버 설정을 하고 어쩌구...
    • 인터넷 속도를 향상시키기 위해 Proxy 설정을 어쩌구..
    • 외국에서 접속하는 것처럼 테스트하기 위해 Proxy 설정을 어쩌구..
    • 개인정보를 빼돌린 해커 A씨는 IP 추적을 방지하기 위해 Proxy 설정을 어쩌구..
  • Forward Proxy는 클라이언트와 인터넷 사이에 위치하고 있다.

    이미지 출처

특징

  1. 캐싱: 클라이언트가 요청한 내용을 캐싱함
    • 클라이언트 A가 서버 측에 요청한 정보를 Proxy가 캐싱하고 있기 때문에 클라이언트 B가 동일한 정보를 요청했을 때 다시 서버를 거치지 않고 요청한 정보를 제공할 수 있다.
    • 전송 시간 절약
    • 불필요한 외부 전송 x
    • 외부 요청 감소 -> 네트워크 병목 현상 방지
  2. 익명성: 클라이언트가 보낸 요청을 감춤
    • 클라이언트가 요청을 보냈지만 Proxy를 거치면서 마치 Proxy가 보낸 것처럼 서버 측에 요청이 전달된다. 따라서 클라이언트의 정보(IP나 OS)를 대신해 Proxy의 정보가 서버 측에 전달된다.
    • 이 경우 서버는 요청을 누가 보냈는지 알지 못하게 된다. (서버가 받은 요청 IP = Proxy IP)

Reverse Proxy

  • Reverse Proxy는 인터넷과 서버 사이에 위치하고 있다.

    이미지 출처

특징

  1. 캐싱: 클라이언트가 요청한 내용을 캐싱 (Forward Proxy와 동일)

  2. 보안: 서버 정보를 클라이언트로부터 숨김

    • 클라이언트는 요청을 할 때 서버들을 직접 알지 못하고, 클라이언트 입장에서 서버인 Reverse Proxy에게 요청을 보낸다.

      이미지 출처

    • Reverse Proxy는 클라이언트에게서 전달받은 요청을 자신이 알고 있는(클라이언트는 모르는) 서버에게 요청을 전달한다.

    이미지 출처

    • 결국 클라이언트는 Reverse Proxy를 실제 서버라고 생각하여 요청을 보내고, 실제 서버의 IP는 클라이언트에게 노출되지 않는다.
    1. 로드 밸런싱(Load Balancing): 하는 경우도 있고, 하지 않는 경우도 있다(선택적임).

Load Balancer

Load Balancing

  • 부하분산: 해야 할 작업을 나누어, 서버의 부하를 분산시키는 것을 의미한다.

  • 아래 그림으로 설명하면, 왼쪽은 클라이언트, 오른쪽은 서버들이다. 각각의 원들은 요청을 의미한다.

  • 바로 아래 사진에서는 하나의 요청이 서버 측에 전달되고 있다.

    이미지 출처

  • 나머지 요청들을 서버 측에 나누어 전달하면 아래 그림과 같이 나타난다.

    > [이미지 출처](https://www.youtube.com/watch?v=YxwYhenZ3BE)

Load Balancer

  • 로드 밸런서: 여러 대의 서버가 일을 분산(나누어) 처리할 수 있도록 요청을 나누어주는 서비스

  • 로드 밸런서는 한 마디로 서버들에게 요청을 나누어 주는 역할을 한다.

    이미지 출처

Load Balancer가 나타난 배경

  • 왜 로드 밸런서를 사용하는 걸까?
  1. 부하가 없을 때

    • 사용자도 1명, 서버도 1대 -> 모든 요청과 응답이 원활하게 잘 전송됨

  2. 부하가 생기기 시작

    • 사용자가 늘어나면서, 서버 쪽에 부하가 생김

    • 개발자들은 Scale Up 을 통해 문제 해결을 시도함

      Scale Up: 서버 하드웨어의 성능을 높이는 것

    • Scale Up 이전

    • Scale Up 이후

  3. 부하가 급속하게 증가

    • Scale Up으로는 감당할 수 없는 수준으로 서버에 불이 남

    • 이제 Scale Out을 통해 문제를 해결함

      Scale Out: 여러 대의 서버가 나누어 일하게 하는 것

    • Scale Out 이전

    • Scale Out 이후 (로드 밸런서 도입)

이미지 출처

Load Balancer의 종류

  • OSI 7 Layer 기준으로 어떤 것을 나누는지에 밸런서의 역할도 달라진다. (L2, L3, L4, L7 를 생각해볼 수 있다)
  • L2 - MAC 주소를 바탕으로 로드 밸런싱
  • L3 - IP 주소를 바탕으로 로드 밸런싱
  • L4 - Transport Layer (IP & Port) 레벨에서 로드 밸런싱 (TCP/UDP)
    • 예) https://www.sample.com/ 로 접근시 서버 A, 서버 B로 로드 밸런싱(나눠줌)
  • L7 - Application Layer (User Request) 레벨에서 로드 밸런싱 (HTTP/HTTPS/FTP)
    • 예) https://www.sample.com/ 로 접근 시 /category/search를 담당 서버들로 로드 밸런싱(나눠줌)

Reference

0개의 댓글