[소프트웨어 개발자 면접] 시스템 디자인 - 프록시 Proxies
면접에서 리버스 프록시와 로드 밸런서를 같은 것이라 답했다가 집중 추궁을 받은 경험을 정리합니다. Layer 4/7 차이, collapsed forwarding, 단일 장애점 문제까지 다룹니다.
프록시 서버는 클라이언트와 백엔드 서버 사이에 위치하는 중간 서버입니다. 하드웨어일 수도 있고 소프트웨어일 수도 있습니다. 포워드 프록시와 리버스 프록시 두 가지로 구분합니다.

포워드 프록시 - Forward Proxy
포워드 프록시는 사용자(클라이언트)가 서버에 직접 요청하지 않고 대리 서버(프록시)를 통해 인터넷을 사용하는 방식입니다. VPN이 대표적인 예입니다. VPN이라는 대리 서버를 거치면 백엔드 서버는 VPN의 IP만 보이므로 실제 사용자가 누구인지 알 수 없습니다.

리버스 프록시 - Reverse Proxy
이 글의 핵심 주제입니다. 이하 "프록시"는 모두 리버스 프록시를 의미합니다.
리버스 프록시는 내부 서비스를 중앙 집중화하고 클라이언트에게 통일된 하나의 인터페이스를 제공하는 웹서버입니다. 클라이언트의 요청을 받아 처리 가능한 서버에 전달하고, 그 응답을 클라이언트에게 돌려줍니다.

프록시는 요청을 필터링하거나 변환하는 데 사용됩니다. 헤더 추가·제거, 암호화·복호화, 압축 등이 대표적입니다. 여기에 더해 캐싱 기능이 있습니다. 여러 클라이언트가 동일한 리소스를 요청할 때, 프록시는 백엔드 서버에 매번 요청을 보내지 않고 캐시에서 응답을 반환합니다. 캐시 적중률이 70%라면 백엔드 서버로 가는 트래픽을 70% 줄인다는 의미이고, 동일 인프라로 3배 이상의 트래픽을 처리할 수 있습니다.
프록시의 또 다른 강점은 축소 전달(Collapsed Forwarding)입니다. 동일한 데이터에 대한 요청이 캐시에 없는 상태에서 여러 클라이언트가 동시에 들어오면, 프록시가 이 요청들을 하나로 합쳐서 백엔드 서버에 단 한 번만 요청을 보냅니다. 서버가 디스크에서 데이터를 읽는 횟수를 극적으로 줄일 수 있습니다. 특히 테라바이트 단위의 데이터에 대한 랜덤 액세스가 빈번한 환경에서 이 방식은 응답 시간을 크게 개선합니다.
공간 기반 요청 병합(Request Coalescing)도 유용합니다. 여러 서버가 파일1, 파일2, 파일3을 각각 요청한다고 할 때, 프록시가 이 요청들을 저장소 내 위치상 가까운 기준으로 묶어 하나의 큰 읽기 작업으로 처리합니다. 개별 랜덤 읽기 여러 번을 순차 읽기 한 번으로 전환하는 방식으로, 요청 대기 시간을 효과적으로 줄입니다.
로드 밸런서 vs 프록시
면접에서 제가 실수한 부분이 바로 이 지점이었습니다. "리버스 프록시와 로드 밸런서가 어떻게 다른가요?"라는 질문에 "기본적으로 같은 역할을 한다고 볼 수 있습니다"라고 답했다가 면접관에게 집중적으로 파고드는 질문을 받았습니다.
개념적 차이는 분명합니다. 로드 밸런서는 동일한 기능을 제공하는 여러 서버에 트래픽을 분산하는 것이 목적입니다. Layer 4(TCP/UDP) 수준에서 동작하는 경우가 많습니다. 반면 리버스 프록시는 단 하나의 서버 앞에 놓여도 캐싱, SSL 종료, 헤더 조작 등 HTTP 수준의 부가 기능을 제공합니다. Layer 7(Application) 수준에서 동작합니다. Nginx와 HAProxy 같은 솔루션이 둘 다 지원하기 때문에 혼동하기 쉽지만, 개념적으로는 해결하는 문제가 다릅니다.
- 로드 밸런서: 서버가 여러 대일 때 트래픽 분산에 유용합니다. 동일 기능의 서버군에 트래픽을 라우팅합니다.
- 리버스 프록시: 단 하나의 웹서버·애플리케이션 서버와 함께 사용해도 유용합니다.
- Nginx, HAProxy: Layer 7 리버스 프록시와 로드 밸런서 모두를 지원합니다.
프록시 단점
- 리버스 프록시를 도입하면 아키텍처 복잡도가 증가합니다.
- 단일 리버스 프록시는 단일 장애 지점(Single Point of Failure)입니다. 이를 방지하려면 멀티 리버스 프록시로 구성해야 하며, 그만큼 복잡도가 더 높아집니다.
면접 팁
대용량 트래픽을 처리하는 시스템을 설계할 때 프록시를 빠뜨리기 어렵습니다. 실제로 사용하지 않더라도 한 번쯤 언급하고 장단점을 정리한 뒤 자신의 판단을 이야기하면 면접에서 유리합니다. 단, "로드 밸런서와 같은 것"이라는 설명은 오히려 역효과입니다. Layer 4와 Layer 7의 차이, 캐싱과 트래픽 분산의 역할 구분, 단일 장애 지점 문제까지 함께 언급하면 프록시 하나로 시스템 설계에 대한 깊이를 보여줄 수 있습니다.