📢 CI CD 를 구축하는 과정에서 리버스 프록시와 로드 밸런싱에 대한 개념이 필요하다고 느꼈다. 이 게시물에서는 이 둘의 개념을 알아보도록 하자!
리버스 프록시는 클라이언트의 요청을 받아 이를 대신하여 서버에 전달하고, 그 결과를 다시 클라이언트에게 반환하는 역할을 한다.
이렇게 하면 클라이언트는 마치 자신이 직접 서버와 통신하는 것처럼 느낄 수 있다.
✅ 리버스 프록시의 주요 용도:
보안:
리버스 프록시는 인터넷과 내부 네트워크 사이의 방화벽
역할을 할 수 있다. 외부 클라이언트가 직접 내부 네트워크의 특정 서버로 접근하는 것을 막고, 모든 요청을 리버스 프록시가 처리하도록 할 수 있다.
SSL Termination:
SSL 암호화/복호화 작업은 컴퓨팅 자원에 부담을 주므로 리버스 프록시에서 이 작업을 처리하면 실제 웹 서비스를 제공하는 서버의 부담을 줄여 준다. 나의 경우는 Nginx certbot을 이용하였다.
캐싱:
리버스 프록시는 자주 접근되는 콘텐츠를 캐싱하여 성능 향상과 백엔드 서비스 부하 감소에 도움을 준다.
정적 컨텐츠 제공:
리버스 프록시는 정적 컨텐츠(예: 이미지, CSS, JavaScript 파일 등)를 제공함으로써 백엔드 인스턴서브의 부하를 줄일 수 있다.
Certbot
은 Let's Encrypt
에서 제공하는 무료 SSL/TLS 인증서를 자동으로 설치하고 관리해주는 도구이다. Nginx와 같은 웹 서버에 쉽게 SSL/TLS 보안을 추가할 수 있게 해준다.
Nginx에서 Certbot를 사용하면, Nginx는 리버스 프록시
로 작동하면서 동시에 SSL Termination
역할도 수행한다. 클라이언트로부터의 암호화된 요청을 Certbot이 제공하는 SSL 인증서를 사용하여 복호화(SSL Termination)한 후, 해당 요청을 내부 네트워크의 다른 서버로 전달한다.
로드 밸런서(Load Balancer)는 여러 대의 서비스 인스턴스(서버)가 존재할 때, 이들에게 고르게 트래픽을 분산시키는 역할을 한다. 이를 통해 단일 서버에 부하가 집중되는 것을 방지하고, 전체 시스템의 가용성과 성능을 향상시킨다.
✅ 로드 밸런싱의 주요 용도:
부하 분산:
로드 밸런서는 들어오는 요청을 여러 서버에 분산시켜 각 서버의 부하를 줄이고 전체적인 처리 능력을 증가시킨다.
장애 복구:
한 서버에서 문제가 발생한 경우, 로드 밸런서는 자동으로 다른 건강한 서버로 요청을 리디렉션하여 시스템의 가용성을 유지한다.
확장성:
추가적인 트래픽 수용이 필요할 때, 로드 밸런서 뒤에 새로운 서버를 추가함으로써 시스템은 확장될 수 있다.
리버스 프록시
와 로드밸런싱
은 비슷해 보일 수 있으나, 그 목적과 기능에서 차이점이 있다. 하지만 실제 환경에서 이 두 기능은 종종 함께 사용되며, 많은 리버스 프록시 소프트웨어(Nginx 등)와 클라우드 기반 솔루션(AWS ELB 등)은 로드밸런싱 기능도 함께 제공한다.
👉 이 두가지에 대해 더 자세히 알아보고 싶다면 [ 로드 밸런싱(Load balancing) ] 과 [ 포워드 프록시(forward proxy) 와 리버스 프록시(Reverse Proxy) ] 를 확인하자 !