Apache,  Nginx

Web Server – 아파치와 Nginx

Web Server란?

HTTP 서버 (소프트웨어)가 있는 컴퓨터(하드웨어)로 구성되어 있으며 클라이언트(Browser)에서 HTTP Request를 통해 요청해오면 요청에 대한 리소스를 보내주는 역할을 합니다.

리소스는 정적 컨텐츠 (HTML, CSS, JS, 이미지 등) 를 말합니다.

웹 서버는 기본적으로 정적이므로 서버에 미리 저장해두고 그저 응답만 해주면 되는 것들을 처리합니다.

웹 서버 위에 서버 어플리케이션을 사용하게되면 WAS (Web Server + CGI) 가 됩니다.

이번 시간은 대표적인 Web Server인 ApacheNginx에 대한 간단히 정리해보도록 하겠습니다.

Basic representation of a client/server connection through HTTP

APACHE

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

Nginx

nginx
  • 소개
    • 프록시 서버 기능이 특화된 Web Server 소프트웨어
    • 2004년 10월에 최초로 출시
  • 특징
    • 비동기 Event-Driven 기반 구조
    • 오픈 소스 기반의 무료
    • 프록시 기능 특화
    • 대부분의 코어 모듈이 Apache보다 적은 리소스로 더 빠르게 동작가능
  • 비동기 Event-Driven 방식이란?
    • 특징
      • 한 개 또는 고정된 프로세스만 생성
      • 비동기 처리 방식
    • 장점
      • 고정된 프로세스만 사용하기때문에 연결이 늘어나도 자원 사용량 증가가 적음
      • 비동기 처리 방식이기 때문에 이벤트 핸들러에서 요청을 받고 프로세스가 처리하는 중에도 지속적으로 요청을 받아내어 많은 양을 효율적으로 처리가 가능 (단일 쓰레드 멀티 커넥션)
    • 단점
      • 비동기 처리 방식이기 때문에 동적 컨텐츠 처리는 불가
  • Apache와 Nginx
    • 차이
      • Apache의 경우 Nginx에 비해 많은 요청을 효율적으로 처리하기는 더 힘드나 쓰레드가 한번에 하나의 연결을 처리하기때문에 동적 처리에 더 유리
    • 관심도 흐름
      • 과거 Apache HTTP Server가 Web Server의 표준으로 자리잡고 있었으나 최근들어 Nginx의 관심도 증가와 Apache에 대한 대체 사용 증가로 두 Web Server 소프트웨어의 차이가 줄어들고 있는걸 알 수 있습니다.
(구글트랜드) 2016 구글 데이터 시스템 개선 이후 아파치(red)와 nginx(blue)의 it 분야 관심도

댓글 한 개

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.