메뉴 닫기

Web Server Program : Apache vs Nginx

Web Server Program Apache vs Nginx


웹 서버(Web server) 프로그램은 웹 브라우저와 같은 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹 페이지를 반환하는 컴퓨터 프로그램 입니다.

이 포스팅은 웹서버 중 Apache와 Nginx를 비교 분석하여 소개합니다.

[개  요]

✅ 종    류 : 프로그램/툴 소개

✅ 난이도 : ⭐

✅ 내용요약 : Apache와 Nginx를 비교 분석

✅ 테스트환경 : CentOS7

✅ 관련직무 : 시스템&클라우드 엔지니어

[기초이론&용어설명]

  • 웹 서버(Web server) 프로그램 : 웹 브라우저와 같은 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹 페이지를 반환하는 컴퓨터 프로그램 <출처 :  위키백과>
  • Apache : 웹(월드와이드웹)서버용 소프트웨어
  • Nginx :웹(월드와이드웹)서버용 소프트웨어

[관련 기술자료]

 

 

웹 서버 프로그램(Web Server Program) 개요


우리가 자주 접하는 웹 사이트는 주로 웹 서버에 존재하는 파일 및 소스 코드를 기반으로 보여지는 화면입니다. 이런 웹 사이트를 제공하는 웹 서버는 반드시 하나 이상의 웹 서버 프로그램을 사용해야 클라이언트에게 사이트 화면을 제공할 수 있습니다. 흔히 알고 있는 Apache(httpd), nginx, IIS와 같은 프로그램을 웹 서버 프로그램(Web Server Program)으로 부르며, 주로 클라이언트로부터 HTTP/HTTPS 요청을 받아 정적으로 구성된 컨텐츠 리소스를 제공합니다.  웹 어플리케이션 서버(WAS)와는 따로 구분하지 않았으나 웹 사이트에서 점차 다양하고 복잡한 작업들을 제공하게 되면서 구분하게 되었습니다. 

 

✅웹 서버 프로그램의 특징

 – 웹 페이지를 클라이언트로 전달 : CSS, JSP, 그림 파일 등을 포함한 HTML로 작성된 문서, ASP 등

 – 정적 콘텐츠 제공 : 어느 사용자에게나 동일한 결과값을 보여줌

 – 클라이언트로 부터 콘텐츠 전달받는 기능 포함

 

✅웹 서버 프로그램의 종류

2017년까지는 Apache, Nginx, IIS가 전 세계에서 실질적으로 동작하는 웹 서버 프로그램 중 70% 이상의 점유율을 가지고 있으며, 그 뒤로 구글 웹 서버(Google Web Server), CloudFlare, Lighttpd 등이 나머지를 차지하고 있었습니다.

2019년 이후로는 Nginx가 Apache, IIS보다 점유율이 향상되는 등 꾸준히 업데이트를 진행하며 발전중에 있습니다.

[그림 1] 2022 웹 서버 프로그램 점유율 – Netcraft 


 

1)웹서버 프로그램(Web Server Program)별 특징


✅Apache

Apache 웹 서버는 1997년 인터넷을 통해 웹 콘텐츠를 제공하기 위해 개발되었습니다. 현재 아파치 소프트웨어 재단에서 소유 및 관리하고 있으며, 리눅스가 서버 OS의 점유율을 높여가며 자연스레 아파치도 높은 점유율을 유지하게 되었습니다. 현재 거의 모든 리눅스 배포판이 아파치를 지원합니다.

 Apache의 가장 큰 특징으로는 확장성이 높으며, Module로 다양한 기능을 덧붙일 수 있습니다. 다른 프로그램과의 연동도 Module을 통해 지원하며, Perl, PHP 등의 서버 사이드 프로그래밍 언어나 DBMS와 높은 호환성을 자랑합니다. Apache, PHP(Python/Perl), MySQL(MariaDB)로 이루어진 웹 서버를 APM(Linux를 포함하면 LAMP)이라고 부르는 명칭에서 간접적으로 확인이 가능합니다.

[그림 2] 아파치 로고

Apache Official Link : https://httpd.apache.org/

✅ Nginx

 ‘가볍고 강력한’ 프로그램을 모토로 삼으며, 러시아 개발자 이고르 시쇼브가 Apache의 문제점을 해결하기 위해 제작한 것으로 유명합니다. Apache와 마찬가지로 오픈소스이며, 모토에 충실한 가볍고 높은 성능을 무기로 2023년 현재 웹 서버 프로그램 중의 1위의 점유율을 자랑합니다. 

 Nginx의 장점이라면 Apache와 다르게 비동기 이벤트 기반으로 동작하며, 이에 따라 서버 부하시 성능 예측이 쉽습니다. 프로세스를 이용하지 않기 때문에 자원을 훨씬 더 적게 사용하며, 서드파티를 모듈로 사용 가능합니다. 추가로 리버스 프록시, 스트리밍 서비스와 같은 동시 접속에 특화되어 있다는 것 또한 많은 사용자들을 유치하는 것에 한 몫 하고 있습니다.

[그림 3] Nginx 로고

Nginx Official Link : https://www.nginx.com

 

✅IIS (Internet Information Services)

마이크로소프트 윈도우에서 사용 가능한 웹 서버 소프트웨어이며 NT 커널을 사용하는 모든 버전에서 무료로 제공됩니다. 윈도우 서버에 기본으로 내장되어 있는 만큼 윈도우 서버와의 높은 호환성이 최고의 장점입니다. 

✅GWS (Google Web Server)

 구글에서 자사 웹 서비스에 사용하고 있는 웹 서버 소프트웨어이며, 구글 웹 사이트 호스팅을 위해 Google 생태계에서만 독점적으로 이용되는 것이 특징입니다. 세계적인 구글에 비해 아쉽게도 GWS 관련 정보는 매우 적게 알려져있으나 웹 사이트의 성능을 분석하고 최적화하는 소프트웨어로 PageSpeed가 상대적으로 알려져 있습니다. 

 

2) Apache, Nginx 프로그램 비교 분석


 위의 프로그램 중 리눅스에서 웹 서버를 구동하고자 하는 이용자라면 어느 것을 이용하는 것이 좀 더 좋을지 고민해본 적이 있으실 것입니다. 동일 운영체제에서, 동일한 기능을 수행하며, 거의 비슷하게 서버 사이드 언어와 호환이 되는 두 가지 프로그램은 동작 방식의 차이로 각각의 특화된 장단점을 지니고 있습니다. 이번 게시글에서는 다음 내용에 대해 알아보도록 하겠으며, 사용된 프로그램 조건은 하단에 기술되었습니다.

 

  Apache Nginx
Version 2.4.56 1.23.4
CPU vCores 2 2
Memory 4GB 4GB
PHP 8.1 8.1
MariaDB 10.6 10.6
     

[표] Apache, Nginx 하드웨어 조건 및 버전 비교

 

1️⃣ 이론적 동작 방식 비교

  • Apache의 장점으로 연결당 Process/Thread로 접근되어 개별적인 연결이 진행되며, 웹 서비스 로직의 어느 지점에서나 새로운 모듈을 추가하거나, 수정하는 것이 쉽습니다. 오류가 발생했을 때 개발자는 해당 작업자 프로세스를 통해 코드를 수정할 수도 있습니다.
  • Apache의 단점으로 커넥션 형성 구조가 연결당 1개의 프로세스를 할당하여 커넥션이 증가할수록 메모리와 리소스가 부족해지는 현상이 발생하며, CPU 코어가 별도의 과정을 통해 부하를 얻는 상황이 빈번합니다.
  • Nginx의 장점으로, 태생적으로 Apache의 C10K 문제점을 해결하기 위해 탄생하여, 비동기적으로 연결을 진행하며 동시 커넥션의 부하를 분산시킬 수 있다. Apache와 동시에 실행될 수 있으며, 부하 분산을 목적으로만 사용이 가능하며 단일 프로그램으로 웹 서버를 운영할 수 있다는 장점이 있다.
  • 단점으로는, 정교한 아키텍처로 인해 서드파티 / 모듈 개발이 쉽지 않다는 점입니다. Nginx 개발자는 오류 없이 효율적이고 정확한 코드를 통해 복잡한 이벤트 기반의 커널과 상호작용을 위해 주의해야 합니다. 또한 Apache에 비해 Windows에서 안정성이 떨어진다는 특징도 가지고 있습니다.

 

2️⃣성능

 일반적으로 프로그램을 사용하는 기준에 있어서 필수적인 비교 요소는 성능입니다. 고성능의 프로그램이라면 웹 페이지의 정적 접근 속도, 동적 접근 속도, 자원 사용량을 확인하게 됩니다. 

측정방법은 PageSpeed Insight를 참조하였으며, 하기 테스트 결과는 측정시간, 참조된 웹페이지 등에 따라 결과가 달라질 수 있음을 미리 안내드립니다.

 

[그림] (좌) Apache 웹 서버, (우) Nginx 웹 서버

 

✅결 론

  • 정적 분석은 동작 방식 차이에 따라 Nginx가 유의미하게 속도가 빠른 점을 확인할 수 있었습니다
  • 동적 분석은 동일하게 PHP를 이용하여, 결과값이 테스트때마다 유사하게 나오는 점이 있습니다.

성능 상에서는 Nginx가 우위에 있으나, 개발 환경을 세부적으로 살펴 봤을때 Apache가 유리한 부분이 있으며

둘 다 Linux의 모든 배포판에서 이용가능하나 Windows 에서는 Nginx보단 Apache가, Apache보단 IIS가 더 유리합니다.

그리고 모두 보안 웹서버이며, 각각의 CCE/ CVE를 해결하기 위한 보안 업데이트가 지속적으로 제공되고 있습니다.

Web Server Program에서는 개발자, 엔지니어의 취향에 따라 본인에게 맞는 것을 선택하는 것을 추천드립니다.

 

👉출 처

[그림 1] : https://news.netcraft.com/archives/category/web-server-survey/

[그림 2] : https://httpd.apache.org

[그림 3] : https://www.nginx.com

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x