Web Server – 아파치와 Nginx
Web Server란?
HTTP 서버 (소프트웨어)가 있는 컴퓨터(하드웨어)로 구성되어 있으며 클라이언트(Browser)에서 HTTP Request를 통해 요청해오면 요청에 대한 리소스를 보내주는 역할을 합니다.
리소스는 정적 컨텐츠 (HTML, CSS, JS, 이미지 등) 를 말합니다.
웹 서버는 기본적으로 정적이므로 서버에 미리 저장해두고 그저 응답만 해주면 되는 것들을 처리합니다.
웹 서버 위에 서버 어플리케이션을 사용하게되면 WAS (Web Server + CGI) 가 됩니다.
이번 시간은 대표적인 Web Server인 Apache와 Nginx에 대한 간단히 정리해보도록 하겠습니다.
APACHE

-
소개
- 아파치 소프트웨어 재단(Apache Software Foundation, ASF)에서 관리하는 HTTP Web Server 소프트웨어
- 1995년 4월에 최초로 출시
-
특징
- MPM (Multi Processing Module) 방식
- 오픈 소스 기반의 무료
- 오래된 역사를 가지고 있는만큼 다양한 모듈과 커뮤니티 보유
-
MPM (Multi Processing Module) 방식이란?
-
prefork
-
특징
- 프로세스가 요청을 담당
- 하나의 프로세스 당 하나의 쓰레드로 한번에 하나의 요청만 처리
- 부모 프로세스에서 자식 프로세스를 생성하여 들어오는 요청을 자식 프로세스를 통해 실행
-
장점
- 요청이 많아질수록 프로세스는 많이 복제되지만 메모리 영역에 따로 복제되므로 프로세스간 간섭이 없어 안정적
-
단점
- 요청이 많아질수록 메모리 영역에 복제되는 프로세스 증가 -> 메모리 증가
-
특징
-
worker
-
특징
- 쓰레드가 요청을 담당
- 하나의 프로세스 당 여러개의 쓰레드로 요청을 처리
- 요청량이 증가하여 한계치를 초과할 경우 자식 프로세스 생성
-
장점
- 쓰레드 간의 메모리 공유로 prefork보단 덜 부담스러움
-
단점
- 요청이 많아질수록 메모리 영역에 복제되는 프로세스 증가 -> 메모리 증가
-
특징
-
perchild
- 특징
- 쓰레드가 요청을 담당
- 하나의 프로세스 당 여러개의 쓰레드로 요청을 처리
- 고정적으로 프로세스 수를 지정
- 특징
-
prefork

Nginx

-
소개
- 프록시 서버 기능이 특화된 Web Server 소프트웨어
- 2004년 10월에 최초로 출시
-
특징
- 비동기 Event-Driven 기반 구조
- 오픈 소스 기반의 무료
- 프록시 기능 특화
- 대부분의 코어 모듈이 Apache보다 적은 리소스로 더 빠르게 동작가능
-
비동기 Event-Driven 방식이란?
-
특징
- 한 개 또는 고정된 프로세스만 생성
- 비동기 처리 방식
-
장점
- 고정된 프로세스만 사용하기때문에 연결이 늘어나도 자원 사용량 증가가 적음
- 비동기 처리 방식이기 때문에 이벤트 핸들러에서 요청을 받고 프로세스가 처리하는 중에도 지속적으로 요청을 받아내어 많은 양을 효율적으로 처리가 가능 (단일 쓰레드 멀티 커넥션)
-
단점
- 비동기 처리 방식이기 때문에 동적 컨텐츠 처리는 불가
-
특징

-
Apache와 Nginx
-
차이
- Apache의 경우 Nginx에 비해 많은 요청을 효율적으로 처리하기는 더 힘드나 쓰레드가 한번에 하나의 연결을 처리하기때문에 동적 처리에 더 유리
-
관심도 흐름
- 과거 Apache HTTP Server가 Web Server의 표준으로 자리잡고 있었으나 최근들어 Nginx의 관심도 증가와 Apache에 대한 대체 사용 증가로 두 Web Server 소프트웨어의 차이가 줄어들고 있는걸 알 수 있습니다.
-
차이

댓글 한 개
핑백 :