CS 및 면접 질문

Nginx를 사용하는 이유

ho-bolt 2022. 6. 19. 22:19

이미지 출처 :https://jp-hosting.jp/centos7-%EC%97%90-nginx-%EC%84%A4%EC%B9%98/

🤪Nginx란 무엇일까?

  • Nginx는 경량 웹서버이다.
  • 클라이언트로부터 요청을 받았을 때 요청에 맞는 정적 파일을 응답해 주는 HTTP Web Server로 활용된다
  • Reverse Proxy Server로 활용하여 WAS 서버의 부하를 줄일 수 있는 로드 밸런서로 활용되기도 한다.

😝Nginx 프로세서

  • nginx는 Event-Driven 구조로 동작하기 때문에 한 개 또는 고정된 프로세스만 생성하여 사용한다.
  • 비동기 방식으로 요청들을 Concurrency 하게 처리할 수 있다
  • 위 그림에서 보면 요청이 들어오더라도 새로은 프로세스와 스레드를 생성하지 않는다.
  • 따라서 프로세스와 스레드 생성비용이 없다.
  • 적은 자원으로도 효율적인 운영이 가능하다.
  • 단일 서버에서도 동시에 많은 요청을 처리할 수 있다.

🚩 Nginx는 트래픽이 많은 웹사이트의 확장성을 위해 설계한 비동기 이벤트 기반 구조의 웹서버 소프트웨어이다.

😎Nginx 사용 이유

  • Nginx는 비동기식 이벤트 처리 중심의 아키텍처를 사용한다.
  • 프론트엔드 서비스가 성장하면서 웹 기반의 동시 처리가 중요하게 되었다.
  • Nginx는 경량의 자원 활용과 물리적인 하드웨어로 쉽게 처리할 수 있다.
  • 동적 처리를 별도로 담당하는 소프트웨어 스택들과 연계해서 고성능 서버를 제공하는 데 적합하다
  • Nginx는 프록시 서버 기능도 제공한다.

😗Apache vs Nginx

Apache 의 특징

  • 스레드/프로세스 기반 구조로 요청 하나당 스레드 하나가 처리하는 구조
  • 사용자가 많으면 많은 스레드 생성, 메모리, CPU 낭비가 심함
  • 하나의 스레드는 하나의 클라이언트 구조

Nginx

  • 비동기 event-driven 구조
  • 다수의 연결을 효과적으로 처리가능
  • 대부분의 코어 모듈이 Apache보다 적은 리소스로 더 빠르게 동작 가능
  • 더 작은 스레드로 클라이언트의 요청들을 처리 가능

답변

 

Event-driven구조와 캐시기능이 있어 성능이 좋기 때문이다.

Nginx는 아파치의 프로세스, 스레드 구조로 인한 병목 현상을 해결하기 위해 Event-driven 구조로 만들어졌기 때문에 다중 접속에 대한 성능이 높다. 또한 cpu 코어별로 worker를 지정해 이벤트 처리 효율에 최적화 되어있다. 또한 캐싱을 하도록 구성이 가능하고, event 처리 기반이라 Tomcat, Apahce보다 처리하는 리소스 비용이 적다. 그래서 Nginx를 프론트에 배치해 앞단의 요청을 받아 병목을 해소하고, worker를 통해 들어오는 이벤트를 Tomcat으로 처리한다.

 

두 번째는 보안상 이유와 로드 밸런싱 때문이다.
Nginx는 리버스 프록시로 설정하는 게 가능합니다. 리버스 프록시로 설정하게 된다면 이 서버는 인터넷과 서버 사이에 위치해 실세 서버의 ip가 노출되지 않아 보안상으로 안전합니다. 또한 로드 밸런싱으로 서버들의 요청을 나누어 주어 부하가 생기는 걸 방지할 수 있습니다.

 

 

참고
https://velog.io/@jjhstoday/NginX-NginX%EB%9E%80
https://asecurity.dev/entry/%EC%99%9C-NGINX%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%A0%EA%B9%8C

728x90