프록시, 리버스프록시 한 번에 쉽게 이해하기

Soonyoung·2024년 5월 25일
1

개요

프록시, 리버스프록시… 개발을 하면서 한 번쯤 들어본, 있어보이는 단어들이죠. 하지만 한번만 이해하면 개념은 전혀 어렵지 않습니다. 이해하고 외우기 쉽게 프록시와 리버스 프록시에 대해 배워봅시다.

Proxy 뜻을 보면 “대리”라는 뜻 입니다. 이것도 충분히 의미전달이 되지만 자고 일어나면 헷갈리더라구요. 프록시는 지역구의 시의원이 하는 일을 한다고 생각하시면 됩니다. 아래와 같이 외워볼까요?

프록시 ⇒ 풀어씨 ⇒ (수갑) 풀어 이씨… ⇒ 서장, 시장 ⇒ 우리 지역구의 시의원
(시의원님들 죄송합니다. 범죄 영화를 많이 봐서…)

프록시 (or 포워드프록시)

프록시 = 지역구 시의원

우리 지역구 시의원은 무슨일을 할까요? 바로 시민들의 불만사항을 지역을 대표해서 전달하고 처리하여 답변을 받아옵니다. 여기서 시민은 클라이언트 입니다. 즉, 프록시는 클라이언트들의 요청을 한번에 모아서 처리를 합니다. (시간적으로 모아서 처리한다는 아니고, “이곳을 통해서” 처리한다고 생각하면 됩니다.)

주요 기능

  1. 클라이언트의 IP 주소를 숨기고 보호

    시의원은 의견을 전달할 때, 의견을 낸 시민의 신변 알고 있지만 밝히지 않습니다. 각 기관에 우리는 이러한 점을 처리해달라고 전달할 뿐 입니다. 프록시도 클라이언트들의 IP주소를 알지만 외부에 밝히지 않습니다.

  2. 캐싱

    시의원은 자주 올라오는 민원, 그리고 이미 처리된 민원이라면 그 민원을 기관에 다시 제출하지 않고 바로 시민한테 답변을 알려줄 수 있습니다. 예를 들어, 경복궁은 언제부터 구경 가능합니까? 라는 질문을 많이 들었고 이미 처리한 민원이라면, 바로 언제 개장하는지 말해줄 수 있습니다. 프록시도 자주 요청되는 데이터를 캐싱하여 응답속도를 향상시킬 수 있습니다.

  3. 액세스 제어

    극단적인 경우, 어떤 사람이 지역감정을 부추기는 부적절한 의견을 낼 수 있습니다. 시의원은 이 의견을 전달하지 않을 수 있습니다. 프록시는 특정 웹사이트나 서비스에 대한 접근을 제어할 수 있습니다.

  4. 로깅 및 모니터링

    시의원은 발생했던 모든 민원들을 받고 처리하면서 모든 것을 기록합니다. 프록시도 마찬가지로 클라이언트들의 기록을 로깅하고 모니터링할 수 있습니다.

네트워크 관리자의 업무

프록시 (혹은 포워드프록시)는 클라이언트 입장이다보니, 서버 웹 개발자 입장에서 크게 고려할 부분은 아닙니다. 대신 기업 네트워크 관리자나 인터넷망 관련된 입장에서 고려해야하는 기술입니다. 따라서 웹 서비스 개발자가 아닌 네트워크 관리자나 보안 담당자가 주로 설정하게 됩니다. 그래서 그런가 저도 잘 몰라요...

어때요, 어렵지 않죠? 프록시, 풀어이쒸, (지역구) 시의원, …
리버스프록시는 같은 일을 하지만 위치가 반대입니다. 시민 입장이 아니라 기관 입장입니다. 각 회사의 대표자라고 생각하면 됩니다. Reverse 프록시, 프록시긴 한데 위치가 반대!
니벌서 풀었스? 드립도 있지만…. 참을게요.

리버스 프록시

리버스 프록시 = 회사 입장에서 시의원 = 회사 대표자

회사 대표자는 무슨일을 할까요? 회사로 들어온 업무들을 각각 부서에 적절히 분담해서 일을 시킵니다. 일이 다 되면 회사를 대표해 의뢰자한테 전달해줍니다. 여기서 각 부서는 서버 입니다. 즉, 리버스 프록시는 요청을 각각의 서버에 전달하고 처리를 합니다.

주요 기능

  1. 로드 밸런싱

    회사 대표는 업무가 들어오면 제일 한가해 보이는 사람한테 일을 줍니다. 바빠보이는 사람은 넘어가겠죠. 리버스프록시도 여러 서버에 트래픽을 분산시켜 서버 부하를 줄일 수 있습니다.

  2. 보안 강화

    회사의 대표는 회계 업무는 누가 처리했고, 개인정보는 누가 다루고 … 등을 알지만 알릴 필요가 없습니다. 그냥 처리해서 주면 되죠. 리버스 프록시는 서버의 IP 주소와 구조를 외부로부터 숨길 수 있습니다.

  3. SSL 종료

    회사 대표가 직접 일을 받기 때문에, 각각의 부서는 수상한 사람이 찾아올 것을 걱정 안 해도 됩니다. 이 사람의 신분증 검사를 각각 부서에서 안 해도 되기 때문에 부서마다 경비원을 둘 필요가 없습니다. 리버스 프록시 서버에서 SSL 암호화 작업을 처리하여 실제 서버의 부담을 줄일 수 있습니다.

  4. 캐싱

    시의원과 마찬가지로, 매일 답변을 주었던 문제라면 대표님 선에서 바로 답변을 줄 수 있습니다. 클라이언트 요청에 대한 응답을 캐싱하여 응답 속도를 향상시킬 수 있습니다.

  5. 압축 및 최적화

    어떤 부서에서 보고서를 받았는데, 신입이 작성했나봐요. 오타가 많고 종이 낭비가 심하네요. 대표로서 오타를 고치고 종이를 이면지로 바꿨습니다. 클라이언트에게 전달하기 전에 응답 데이터를 압축하거나 최적화할 수 있습니다.

웹 서버 개발자의 업무 (혹은 시스템 관리자)

리버스 프록시는 서버 측 (서비스 제공자 네트워크)에서 고려해야할 부분입니다. 적절한 리버스프록시를 사용함으로써 로드 밸런싱, 보안 강화, 캐싱, SSL 종료, 압축 등을 하여 클라이언트의 요청을 빠르고 정확하고 안전하게 처리 가능합니다. 대표적인 구현 방법으로는 Nginx, Apache 등을 이용하는 것이 있습니다.

요약

  • 프록시

    "포워드 프록시는 우리 지역구 의원 같아요. 지역 주민들이 민원을 의원에게 전달하면, 의원은 각 기관에 직접 전달합니다. 또한, 주민들의 신원을 보호하면서 민원을 전달하고, 자주 반복되는 민원에 대해서는 미리 기억해 두었다가 빠르게 처리할 수 있어요."

  • 리버스프록시

    "리버스 프록시는 회사의 부서 대표자 같아요. 각 부서의 대표자가 외부에서 들어오는 요청을 받아 직원들에게 분담하고, 처리된 결과를 다시 외부로 전달해 줍니다. 또한, 요청을 직원들에게 고르게 분배해 업무 부하를 줄이고, 외부로부터의 요청이 안전하게 처리될 수 있도록 보안 기능도 강화합니다."

정리하며

개발자의 입장에서 리버스 프록시 기능을 알고 쓰는 것과 모르고 쓰는 것은 차이가 있다고 생각합니다. 글을 읽고 나서 프록시의 개념에 대해 안 까먹길 바랍니다. (나 포함….) 프록시, 리버스프록시 구성도만 봐도 무슨 장단점이 있는지, 왜 그 기술이 필요한지 등에 대해 생각해낼 수 있으면 좋겠습니다.

0개의 댓글