NGINIX란 러시아의 한 개발자가 apache의 C10K 의 문제 ( 한 시스템에 동시 접속자 수가 1만명이 넘어갈 때 효율적인방안)를 해결하기 위해 Evnet Driven 구조로 만든 웹 서버 SW이다.
우리가 개발한 응용 프로그램이 OSI 7 Layer 중 application Level에서 동작하고 그 아래 Level에서 NGINX 같은 웹 서버가 HTTP 통신을 제공하게 된다.
NGINX는 Eventt-Driven 방식으로 동작한다. 한 개 또는 고정된 프로스세만 생성 하고, 그 프로세스 내부에서 비 동기 방식으로 효율적으로 작업들을 처리한다. 그래서 동시 접속자가 많아도 Process 또는 Thread 생성 비용이 존재하지 않는다.
위에서 비 동기 방식으로 효율적으로 작업을 처리한다고 언급했는데 조금 더 살펴보자. Event-Driven 방식에선 작업을하다 I/O , socket read / writre 등 CPU가 관여하지 않는 작업이 시작되면 기다리지 않고 바로 다른 작업을 수행한다. 진행중인 I/O 등의 작업들이 끝나면 아! 내가 아까 했던 작업을 다시 진행하면 된다는 이벤트가 발생하고 그 작업을 처리하게 된다.