본문 바로가기
Server/Web

Nginx, Apache, Tomcat 비교

by 얽디 2022. 1. 12.

-Web Server -

1.Nginx와 Apache비교

-Apache

Client단에서 요청 -->> Server -->> MPM (Multi Processing Module: 다중처리모듈)방식으로 처리되며

대표적으로 Prefork, Worker방식이 있다.

Nginx와 비교를 위해 알아보자.

 

사진 https://taes-k.github.io/2019/03/08/server-nginx-event-driven/

#Prefork mpm (왼쪽) 

프로세스를 복제하여 서비스 제공. 프로세스-쓰레드 개당 부여하는 형식으로 프로세스 간에 쓰레드 공유가 없다.

개별적으로 운영하는 방식은 메모리 공유가 없어서 안정적으로 서비스 할 수 있으나 프로세스가 많아지면 메모리가 부족해 과부하로 이어짐.

 

#Worker mpm 방식 (오른쪽)

프로세스가 각 여러 쓰레드를 사용하며 쓰레드들이 메모리 공유함.

Prefork 방식에 비해 메모리가 여유로울 수 있음.

 

* 확장성이 필요한 사이트는 worker 방식을 택하고

안정성과 오래된 소프트웨어와 호환성이 필요한 경우 Prefork방식을 사용한다.

-Nginx

Nginx 아키텍쳐

Event Driven 방식 사용.

요청이 들어오면 해당 요청에 대해 동작 방식을 호출하며 그 다음 다른 요청을 처리하는 방식.

apache와 달리 cpu 관계 없이 해당 방식으로 운영되어 동작에 흐름이 끊기지 않고 응답이 빠르게 진행.

1개의 프로세스로 아파치에 비해 더 빠른 동작이 가능함.

메모리 시점으로 보면 Apache에 비해  Nginx가 시스템 리소스를 더 적게 처리한다.

동시 접속 요청이 많아도 바로바로 처리하는 시스템이므로 Process 또는 Thread 생성 비용이 존재하지 않는다

 

- 정리 -

사용하는 서비스마다 장,단점이 존재하며 

Apache의 경우,

대규모 커뮤니티가 존재, 일반적인 문제를 탐색하는 데 도움이 많이됨.

안정성 또한 뛰어남.

Nginx보다 모듈이 다양하며 동적 컨텐츠 단독 처리가 가능하다. PHP 모듈 등 직접 적재 가능.

 

Ngingx의 경우,

Event Driven 방식 사용으로 속도가 향상될 수 있음.

많은 접속자에 대응이 가능하며 성능이 우세하다. 허나 동적 컨텐츠를 단독 처리가 불가능 하다.

 

 

-WAS(Web Application Server)

-DB 조회나 다양한 로직 처리를 요구하는 동적 컨텐츠 제공을 위해 만들어진 Application Server

-tomcat은 java기반으로 만들어졌으며 JSP, Servlet 구동 환경을 제공하고있다.

WAS와 Web Server를 분리하는 이유

1. 기능을 분리하여 서버 부하 방지

-WAS는 DB 조회나 jsp, Servlet을 처리하는 사이  단순한 정적 컨텐츠는 Web Server단에서 빠르게 제공하는 것이 효율적.(연동 목적)

-정척 컨텐츠 요청까지 WAS가 처리할 수 있음.하지만  정척 데이터 처리로 인해 부하가 커짐 -> 동적 컨텐츠 요청까지 지연됨. --> 속도 저하 원인이 될 수 있음.

-Tomcat

톰캣은 WAS(Web Application Server)이다.

Java 기반으로 만들어졌으며 Jsp와 Servlet을 구동하기 위한 서블릿 컨테이너 역할 수행하는 어플리케이션 서버

-Servlet : 클라이언트의 요청을 받고 처리, 결과를 클라이언트에게 제공 하는 서비스

-Container : 동적인 데이터 -> 정적 서비스로 바꿔주는 모듈

 

아파치 와는 다르게 DB연결, 다른 응용 프로그램과 상호 작용 등 독적인 기능들을 사용할 수 있음.

 

아파치 (웹서버)는 정적인 데이터를 처리하는 서버이며,

톰캣 (어플리케이션 서버)는 동적 데이터를 처리하는 서버이다.

 

톰캣으로 단독 웹서버 없이 운영을 하거나 아파치, 엔진엑스와 연동하여 사용할 수 있다.(위에서 언급했다시피 정적인 데이터 처리를 같이하면 부하 원인이 될 수 있음.서비스가 처리하는 데이터가 많을 경우 연동 추천)

*연동하여 사용 시 

:   웹서버 + was + db로 구성

 

(세가지 서비스 비교하여 검색 시 단독 사용 시 최신 버전에서는 별 차이가 없다는 후기도 있으며, 작은 서비스는 그냥 운영한다.라는 말도 있음. 서비스 규모에 따른 차이인 것 같다. 개발 단계에서 테스트 후 선택하여 구현하는 것이 맞다고봄.)

 

----------------------------------

 

Apache , tomcat , nginx  비교

 

Apache , Ngingx = https 정적 데이터 요청을  처리하는 웹서버 ->html, perl , php 처리 가능. (Web Server)

Nginx :  Apache를 보완하여 만든 웹서비스. 처리 속도가 아파치에 비해 더 빠름. 

Apache :  커뮤니티가 규모가 커 문제에 대해 다양한 피드백 검색 가능 및 여러 모듈을 추가하여 사용할 수 있음.

jsp사용하지 않고 php, html등으로만 구성할 경우 굳이 톰캣을 사용할 필요가 없음.

 

Tomcat =동적 데이터를 정적데이터로 변환하여 제공.Jsp, html 처리가능하나 php, perl 처리 불가능. (WAS Server)

jsp,html로만 구성하여 제공할 경우 톰캣 단독 사용해도됨.

 

jsp , html, php 모두 처리하고 싶을 경우 apahce(or nginx) + Tomcat 연동하여 사용하면 됨.

댓글