본문 바로가기
Back-End/Server

[Web server] Apache vs NginX

by SeanK 2023. 9. 19.

안녕하세요 :)

오늘은 평소 업무와는 조금 색다른 Apache와 NginX 웹 서버에 대한 공부를 해보았습니다.

 

이번에 맡은 프로젝트의 경우 폐쇄망 내부 웹서버 설치가 필요해 이런저런 많은 시행착오를 거치고 있습니다.

웹 서버란?

웹서버는 사용자의 웹 브라우저로 웹 콘텐츠를 전송해 주는 World Widw Web의 근간이 되는 소프트웨어 애플리케이션 혹은 하드웨어 기기를 말합니다. 클라이언트-서버 모델에서 중요한 역할을 하며, 클라이언트는 이를 통해 웹 페이지와 다른 리소스를 받게 됩니다.

 

웹 서버 소프트웨어

흔히 사용되는 웹 서버 소프트웨어는 아래와 같습니다.

 

- Apache

- NginX

- Microsoft Internet Information Service

- LiteSpeed

- Lighttpd

 

Apache vs NginX

그중 많은 사람들이 애용하는 웹 서버 소프트웨어로 Apache와 NginX가 있습니다. 이용자가 많다는 건 그만큼 디버깅이 용이하다는 의미이므로 이번 프로젝트에서는 Apache와 NginX를 비교 분석 했습니다.

 

Apache-pefork

  • 복수의 프로세스를 생성해 병렬처리.
  • 가장 간단한 구조이며 구축이 쉽다.
  • 비교적 느리고 메모리 공간을 많이 차지한다.
  • Context switching 비용 발생.

Apache-worker

  • 복수의 프로세스안에 복수의 스레드로 병렬처리
  • Apache-prefork 방식에 비해 성능이 좋지만 다수의 유저가 한 번에 몰리는 게 아니라면 큰 차이는 없다.
  • 이벤트 방식에 비하면 여전히 느리고 메모리를 많이 차지한다.
  • Context switching 비용 발생.

NginX

  • 싱글 스레드 Master-Worker process 모델
  • 가장 메모리를 적게 차지한다.
  • Context switching overhead가 발생하지 않는다.
  • CPU를 효율적으로 사용한다.
  • 복잡한 구조.
  • 구축과 디버깅이 상대적으로 어렵다.

 

그렇다면 NginX가 항상 옳은 걸까요?

위 내용만 본다면 NginX가 항상 Apache보다 좋다고 느껴질 수 있습니다. 하지만 기타 어느 프로그램과 마찬가지로 상황에 따라 NginX가 적절할 수도 있고 부적절할 수도 있을 것 같습니다.

NginX의 구동방식을 한 줄로 요약하자면 이벤트 핸들러에 의해 싱글 프로세스 스레드가 non-blocking으로 작업을 처리합니다. 만약 시스템 콜을 해야하는 이벤트가 한꺼번에 많이 발생한다면 싱글 스레드이므로 모든 작업이 큐에 쌓이게 됩니다. I/O 작업의 경우 하드웨어의 성능에 영향을 받으니 해당 프로레스 시간이 오래 걸리면 성능저하가 발생할 수 있습니다.

 

따라서 단순히 적은량의 데이터를 주고받거나 캐싱을 하는 등의 역할을 맡는 서버에서는 그 성능을 제대로 발휘할 수 있습니다. 하지만 복잡한 CGI 프로세싱을 거쳐야 하거나, 영상 데이터 혹은 데이터베이스 프로세싱을 거치는 데에는 부적절하다고 볼 수 있습니다.

 

 

참조: https://brainbackdoor.tistory.com/28

 

Apache MPM 및 Nginx

Apache Web Server (html, css, js, img 등) 정적인 부분은 웹 서버에서 처리 MPM (Multi-Processing Module) : 여러 개의 프로세싱 모듈 기반의 서비스를 제공 병렬처리를 수행하지 않는 서버는 특정 클라이언트가

brainbackdoor.tistory.com

https://nesoy.github.io/articles/2018-11/Context-Switching

 

Context Switching이란?

 

nesoy.github.io

https://kscory.com/dev/nginx/install

 

'Back-End > Server' 카테고리의 다른 글

[CORS] Corse의 credentials: true의 의미  (0) 2022.01.03
Server App server VS Web server  (0) 2021.11.24