5.3 프록시
- 프록시가 응답을 위임하는 쪽(뒷단 서버)을 백엔드 또는 오리진이라고 한다.
- 도입 목적은 성능과 보안 향상이다.
- 예를 들어 HTTPS 요청을 받아 HTTP로 바꿔 백엔드에 보낼 수 있다(TLS 종료).
- 종류는 리버스 프록시와 포워드 프록시 두 가지다.
| 구분 | 리버스 프록시 | 포워드 프록시 |
|---|
| 설치 위치 | 서버 측 (웹 서버 바로 앞) | 사용자 측 네트워크 |
| 관리 주체 | 서버 시스템 관리자 | 사용자 조직(회사 등) |
| 주 목적 | 서버 보호, 부하 경감·분산 | 외부 통신 제어·감시 |
5.3.1 리버스 프록시
- 서버를 관리하는 쪽의 시스템 관리자가 서버 측 아키텍처의 일부로 설치·관리한다.
- 웹 서버 바로 앞에 둔다.
- L7 프로토콜을 처리하는 리버스 프록시는 요청을 전달하면서 다음 작업을 한다.
- 통신 내용 검사
- 허가/거부
- 내용 변환
- 예: SQL 인젝션, 명령어 주입 관련 요청 차단
- 유량 제어
- 레이트 리밋(Rate Limit)
- 서킷 브레이커(Circuit Breaker)
- 서버 부하 경감
- 대표 제품: Apache, Varnish, Nginx
5.3.2 포워드 프록시
- 사용자 측 네트워크에 설치한다.
- 회사 같은 조직에서 외부로 나가는 통신을 L7 수준에서 제어·감시한다.
- 콘텐츠 캐시도 할 수 있다.
5.4 리트라이
- 네트워크는 본질적으로 불확실성을 내재하고 있다.
- 리트라이는 어떤 처리가 실패했을 때 다시 실행하는 동작이다.
- 지수 백오프(Exponential Backoff): 재시도 간격을 1초, 2초, 4초…처럼 지수적으로 늘려 상대 서버의 부하를 줄인다.
- 지터(Jitter): 재시도 간격에 무작위 값을 더해, 여러 클라이언트의 재시도가 같은 시점에 몰리는 것을 막는다.
- 상태를 변경하는 처리는 재시도로 인한 중복 처리를 막아야 한다.
- 멱등 키(Idempotency Key) 를 이용해 처리 성공 여부를 기록해 둔다.
- 같은 키로 요청이 다시 오면 처리하지 않고 기록된 결과를 돌려준다.
5.5 OODA 루프