필수 시청: https://youtu.be/6FAwAXXj5N0?si=eOYCxqige9Iki305

NGINX란 무엇이며, 어떻게 동작하나요?

<aside> 🌉 NGINX는 웹 서버, 리버스 프록시 서버, 로드 밸런서 및 HTTP 캐시로 사용되는 오픈 소스 소프트웨어입니다. 고성능, 안정성, 풍부한 기능, 간단한 설정 및 낮은 리소스 소비로 잘 알려져 있습니다. NGINX는 이벤트 기반 아키텍처를 사용하여 동시 연결을 효율적으로 처리하며, 이는 높은 트래픽 웹사이트에서 특히 유용합니다.

</aside>

NGINX에서 이벤트 기반 아키텍처를 사용한다는 것은

NGINX가 클라이언트로부터 요청이 올 때마다 해당 요청을 이벤트로 간주하고, 이 이벤트를 처리하기 위해 미리 정의된 핸들러(처리기)를 실행한다는 것을 의미합니다.

이벤트 기반 아키텍처의 특징

  1. 비동기 처리: 이벤트가 발생할 때마다 즉시 처리하는 대신, 이벤트를 큐에 넣고, 처리할 수 있는 상태가 되면 비동기적으로 처리합니다.
  2. 높은 동시성 처리: 여러 이벤트를 동시에 처리할 수 있어, 높은 동시성을 요구하는 상황에서 성능이 뛰어납니다.
  3. 리소스 효율성: 불필요한 리소스를 사용하지 않으며, 필요한 시점에만 리소스를 사용합니다.

NGINX는 비동기 I/O를 사용하여 I/O 작업(읽기, 쓰기)을 비동기적으로 처리합니다. 이는 이벤트 루프가 블로킹되지 않고 계속해서 새로운 이벤트를 감지하고 처리할 수 있게 합니다. 비동기 I/O의 주요 이점은 다음과 같습니다:

마스터 프로세스: NGINX의 메인 프로세스로, 설정 파일을 읽고, 워커 프로세스를 생성하고 관리합니다. 또한, 마스터 프로세스는 워커 프로세스가 비정상적으로 종료되었을 때 새로운 워커 프로세스를 다시 시작하는 역할도 합니다.

워커 프로세스: 클라이언트의 요청을 실제로 처리하는 프로세스입니다. 각 워커 프로세스는 단일 스레드로 동작하며, 비동기 이벤트 루프를 통해 여러 클라이언트의 요청을 동시에 처리할 수 있습니다.

Nginx : 웹서버

우리는 NodeJS로 웹서버를 이미 개발을 했는데, 왜 또 Nginx로 웹서버를 병행해서 쓰는가.