Ngnix 란?
요즘 어지간한 프로젝트를 보면 다들 Ngnix 를 사용하는것을 보았다. 약간 대세 일려나 무엇때문에 다들 많이 사용하는지 알기 위해 작성해본다.
Ngnix
웹서버 소프트웨어 이며 비동기 이벤트 기반 구조를 가지고 있다.
웹서버 이기 때문에 주로 정적콘텐츠를 처리한다.
Ngnix 를 사용하는 이유
Ngnix 가 처음 나왔을땐 지금만큼의 점유율을 가지지 못했다고 한다. 아파치의 점유율이 상당했다.
아파치는 개발이 쉽고 확장성이 좋다는 이유로 사랑받았다. 이러한 아파치는 요청이 들어올때마다 커넥션을 생성해 프로세스를 내보냈다. 미리 프로세스를 만들어놓고 요청시 내보내고 부족하면 그때 생산하는 방식을 사용했다.
하지만 IT 열풍이 돌면서 웹사이트의 요청량은 급격히 증가하고 위에 방식을 사용하는 아파치의 방식으로는 대용량 트래픽을 감당할 수 없었다.
이때 Ngnix 가 주목받기 시작했다. 비동기 이벤트 기반 구조 이며 Master Process, Worker Process 로 프로세스를 구분한다. Master 가 요청을 받고 설정파일을 읽어 설정대로 Worker 를 만들어낸다.
Worker 의 갯수는 보통 Cpu 코어 갯수로 고정되며 추가 생산을 하지 않는다. 요청이 프로세스 갯수를 초과하면 커넥션 생성을 막고 요청은 큐에 담겨서 비동기 방식으로 대기를 한다.
프로세스 갯수가 정해져있기에 Context-Switching 비용이 들지 않기에 부하가 적다.
또한 로드 밸런싱, 리버스 프록시 기능을 제공한다.
Last updated