MSA/Kubernetes, Docker

[Kubernetes] Nginx 란 ?

이스트버드 2022. 8. 24. 15:37
반응형

Nginx

트래픽이 많은 웹사이트의 확장성을 위해 개발된 경량의 고성능 웹서버

  • 적은 자원으로 높은 성능과 높은 동시성을 추구하기 위해 개발됨
  • Nginx 가 등장하기 이전엔 Apache를 웹서버로 많이 활용하였으나, 늘어나는 네트워크 트래픽으로 인해 러시아의 Igor Sysoev 라는 개발자에 의해 Nginx가 2002년 개발 시작, 2004년에 릴리즈 됨

※ C10K 문제 : 하나의 웹 서버에 1만개 이상의 클라이언트 접속을 처리하지 못하는 문제

 

 


 

Nginx의 주요 구성

  • HTTP Server : 요청에 의해 정적 파일을 응답해주는 웹서버
  • Reverse Proxy Server : 요청으로부터 애플리케이션 서버에 로드밸런싱
  • Mail Proxy Server

 

Nginx 의 주요 특징

  • 비동기 Event-Drive로 요청하여 적은 자원을 사용하므로 CPU 소모가 비교적 적음
  • 다수의 클라이언트 연결을 효율적으로 처리 가능함
  • 문맥교환 (Context switching)의 비용이 적음
  • Apache에 비해 모듈이 다소 적음
  • 복잡한 처리가 필요한 요청의 경우 시스템 큐에 쌓이게 되어 성능이 저하될 수 있음
  • Nginx는 event driven으로 클라이언트 요청을 병렬 처리하는 구조임.
  • 싱글 프로세스이며, 클라이언트의 요청 이벤트를 reactor가 받는 형태임. 그리고 받은 이벤트는 handler를 통해 worker로 전달되어 처리됨

 

Apache의 주요 특징

  • 환경에 맞게 PreFork 방식 (요청마다 프로세스 생성), Worker 방식 (프로세스와 쓰레드 병행해서 사용) 선택 가능함
  • 안정성, 확장성, 호환성의 장점이 있음
  • 하나의 클라이언트 연결에 하나의 쓰레드만 부여됨
  • 클라이언트의 연결이 늘어남에 따라 프로세스가 계속 늘어나서 메모리 낭비가 심하고 문맥 교환 비용이 많이 듬
  • 프로세스가 차단되면 요청을 처리하지 못하고 이전 요청을 처리하기 전까지 대기상태가 됨

 

 

 

반응형