devnoong.log
article thumbnail
Published 2023. 4. 7. 14:22
[Nginx] Nginx 개념 WEB/BACKEND
728x90

1. Nginx 란?

NGINX 는 오픈 소스 웹서버 프로그램 중 하나로, Apache보다 동작이 단순하고 동시 접속을 처리하기에 특화된 서버이다. 동시접속자(700)이상이라면 서버를 증설하거나 Nginx 환경을 권장한다고 한다.

 

Nginx가 많이 사용되는 이유는 리버스  서버의 프록시로서의 역할을 수행하고 있기때문에 응용프로그램 서버 앞에  설치되어 사용되고 있다.

 

 

클라이언트가 서버에 요청(request)을 하게 되면, 맨 앞에 위치해있는 Nginx가 프록시 서버의 역할을 수행 해 리버스서버(응용프로그램 서버)에 전달해 데이터를 가져오는 기능을 제공한다.

 

리버스 서버의 프록시 역할을 수행한다고 해서 리버스 프록시라고 사용되는 편이다.

 

 

Q. 리버스 프록시 없이 응용프로그램으로 요청 할 경우에는?

 

프록시 서버를 사용하지 않고 응용프로그램 서버로 요청 할 경우에는 단일 스레드 혹은 단일 프로세스로 작동 (블로킹 방식)한다.

한번에 하나의 요청만 처리 할 수 있어 다른 요청이 들어오면 앞의 요청이 종료될때까지  응답대기상태가 될 수 밖에 없다.

 이러한 방식은 요청의 양이 적을 때는 괜찮지만 , 요청이 많아지거나 대규모 트래픽을 처리해야 하는 경우에는 성능 저하와 서버 부하가 발생한다.

 

Q. 리버스 프록시를 사용한다면?

 

Nginx는 다중 프로세스로 요청을 병렬로 처리(논블로킹 방식) 할 수 있다. 클라이언트의 요청을 처리할 응용 프로그램 서버에 전달하고, 응답이 반환 될때까지 다른 요청을 추가로 처리 할 수 있다.

 즉, 요청을 배분해주는 역할을 수행한다. 이를 통해 요청 처리 속도를 빠르게 하고, 응답 대기 시간을 최소화 할 수 있다.

 

 

Nginx는 다중 프로세스를 사용하는 것이 디폴트이지만, 비동기 이벤트 드리븐 방식으로 다중 요청 처리를 지원하기때문에 비동기 이벤트 드리븐 방식을 주요 처리 방식으로 사용한다. 
즉, 다중 프로세스 + 이벤트 드리븐 방식(단일 쓰레드) 이다.

 

 

이벤트 드리븐 방식은 비동기 프로그래밍의 한 형태로, 이벤트가 발생할때마다 이벤트에 대한 콜백 함수를 호출하여 처리하는 방식이다.

쓰레드나 프로세스를 생서하는 것이 아니라, 단일 쓰레드에서 이벤트를 처리하므로 리소스 사용을 최적화 할 수 있다.

이벤트가 발생하면 바로 처리가 가능하므로 대기 시간이나 처리 지연 시간이 적어진다.

 

 

따라서 비동기 처리방식을 사용함으로써 Nginx는 높은 성능과 안정성을 제공 할 수 있으며, 대규모 트래픽에서도 효율적으로 요청을 처리할 수 있다.

 


참고 사이트

 

https://whatisthenext.tistory.com/123

 

Nginx 이해하기 및 기본 환경설정 세팅하기

NGINX Nginx의 개요 엔진엑스(Nginx)는 Igor Sysoev라는 러시아 개발자가 동시접속 처리에 특화된 웹 서버 프로그램이다. Apache보다 동작이 단순하고, 전달자 역할만 하기 때문에 동시접속 처리에 특화되

whatisthenext.tistory.com

 

728x90