2022-01-18-TIL

Today I Learned

Forward Proxy

클라이언트가 직접 접근하는 것이 아니라, 포워드 프록시 서버가 그 앞에서 요청을 받고 본 서버에 연결하여 결과를 클라이언트에 전달해주는 방식이다. 프록시 서버는 자주 사용하는 데이터라면 요청을 일일이 보내지않고 캐싱하여 가져올 수 있기 때문에 성능 향상이 가능하다.

Reverse Proxy

클라이언트가 인터넷에 데이터를 요청하면 리버스 프록시가 이 요청을 받아서 내부 서버에서 데이터를 받은 후 클라이언트에 전달한다. 클라이언트는 내부 서버에 대한 정보를 알 필요없이 리버스 프록시에만 요청하면 된다. 내부서버에 직접 접근한다면 DB에 접근이 가능하므로 중간에 리버스 프록시를 두고 클라이언트와 내부 서버 사이의 통신을 담당한다. 또한 내부 서버에 대한 설정으로 로드 밸런싱이나 서버 확장 등에 유리하다.

Nginx

Nginx란 하나의 웹 서버에 10,000개의 클라이언트 접속을 동시에 다룰 수 있는 기술적인 문제를 해결하기 위해 Event-Driven 구조로 만든 오픈 소스 소프트웨어이다. Apache는 클라이언트가 HTTP 요청을 보낼 때 MPM(Multi Processing Module)을 사용하여 처리한다. 즉, Apache는 접속마다 프로세스나 스레드를 생성하는 구조이다. 따라서 동시 접속 요청이 10,000개라면 그 만큼의 프로세스나 스레드가 생성되어 비용이 들 것이며, 이는 대용량 요청을 처리할 수 있는 웹서버로서의 한계를 드러낸다. 반면에, Ngnix는 Event-Driven 방식으로 동작하기 때문에 한 개 또는 고정된 프로세스만 생성하고, 그 프로세스 내부에서 비동기 방식으로 효율적으로 작업들을 처리한다. 따라서 동시 접속 요청이 많아도 프로세스 또는 스레드 생성 비용이 존재하지 않는다.

RabbitMQ

AMQP 프로토콜을 구현한 Messae Broker이다.

  1. Producer가 메시지를 전송한다 (Publish)

https://bcp0109.tistory.com/195?category=967798 https://bcp0109.tistory.com/230?category=967798