일반적으로 말하는 Proxy는 Forward Proxy이다.
Forward Proxy는 클라이언트와 인터넷 사이에 위치하고 있다.
캐싱: 클라이언트가 요청한 내용을 캐싱 (Forward Proxy와 동일)
보안: 서버 정보를 클라이언트로부터 숨김
클라이언트는 요청을 할 때 서버들을 직접 알지 못하고, 클라이언트 입장에서 서버인 Reverse Proxy에게 요청을 보낸다.
Reverse Proxy는 클라이언트에게서 전달받은 요청을 자신이 알고 있는(클라이언트는 모르는) 서버에게 요청을 전달한다.
부하분산: 해야 할 작업을 나누어, 서버의 부하를 분산시키는 것을 의미한다.
아래 그림으로 설명하면, 왼쪽은 클라이언트, 오른쪽은 서버들이다. 각각의 원들은 요청을 의미한다.
바로 아래 사진에서는 하나의 요청이 서버 측에 전달되고 있다.
나머지 요청들을 서버 측에 나누어 전달하면 아래 그림과 같이 나타난다.
> [이미지 출처](https://www.youtube.com/watch?v=YxwYhenZ3BE)
로드 밸런서: 여러 대의 서버가 일을 분산(나누어) 처리할 수 있도록 요청을 나누어주는 서비스
로드 밸런서는 한 마디로 서버들에게 요청을 나누어 주는 역할을 한다.
부하가 없을 때
사용자도 1명, 서버도 1대 -> 모든 요청과 응답이 원활하게 잘 전송됨
부하가 생기기 시작
사용자가 늘어나면서, 서버 쪽에 부하가 생김
개발자들은 Scale Up 을 통해 문제 해결을 시도함
Scale Up: 서버 하드웨어의 성능을 높이는 것
Scale Up 이전
Scale Up 이후
부하가 급속하게 증가
Scale Up으로는 감당할 수 없는 수준으로 서버에 불이 남
이제 Scale Out을 통해 문제를 해결함
Scale Out: 여러 대의 서버가 나누어 일하게 하는 것
Scale Out 이전
Scale Out 이후 (로드 밸런서 도입)
https://www.sample.com/
로 접근시 서버 A, 서버 B로 로드 밸런싱(나눠줌)https://www.sample.com/
로 접근 시 /category
와 /search
를 담당 서버들로 로드 밸런싱(나눠줌)