2020. 5. 19. 13:34ㆍ웹개발 개인공부
웹 서버는 다른 말로 HTTP server라고도 부르는데 서버 쪽에서 정보를 제공하는 소프트웨어를 의미한다.
다양한 웹 서버가 있지만 현재 웹 서버 시장에서 가장 인기 있는 웹 서버에 대해 알아볼 것이다.
2017년 10월 기준 실질적으로 작동하는 웹 사이트들에서 쓰이는 웹 서버 소프트웨어 순위는 아파치(44.89%), NGINX(20.65%), 구글 웹 서버(7.86%), 마이크로소프트 IIS(7.32%)순이다.
Apache는 오픈소스이며 무료로 사용할 수 있는 소프트웨어로 1996년 이래로 한 번도 1등의 자리를 놓친 적이 없다. 하지만 아파치는 오래전에 만들어진 소프트웨어이다. 그렇기 때문에 만들어질 당시의 요구사항이 이제는 유효하지 않은 것도 있고 새로운 요구사항과 충돌하는 것도 있을 것이다.
NGINX는 새로운 시대의 요청에 부응해서 만들어진 웹서버이다. 개발의 모든 목적이 높은 성능에 맞춰져 있다. 그리고 잘 사용하지 않는 기능은 과감하게 제외하였다.
먼저 아파치의 동작 방식에 대해 알아볼 것이다. 아파치는 클라이언트에서 요청을 받으면 MPM(Multi Processing Module : 다중처리 모듈)이라는 방식으로 처리를 하는데 대표적으로는 Prefork와 Worker방식이 있다.
- Prefork MPM
실행 중인 프로세스를 복제되어 처리가 된다. 각 프로세스는 한 번에 한 연결만 처리하고 요청량이 많아질수록 프로세스는 증가하지만 복제 시 메모리 영역까지 복제되어 동작하므로 프로세스 간 메모리 공유가 없어 안정적이라 볼 수 있다.
-Worker MPM
Prefork 동작 방식이 1개의 프로세스가 1개의 스레드로 처리가 되었다면 Worker 동작 방식은 1개의 프로세스가 각각 여러 스레드를 사용하게 된다. 스레드 간의 메모리를 공유하며 Prefork방식보다 메모리를 덜 사용하는 장점이 있다.
스레드 / 프로세스 기반 구조로 클라이언트 요청 하나당 스레드 하나가 처리하는 구조로 사용자가 많으면 스레드 생성, 메모리 및 CPU낭비가 심하다. ( 요청이 많을수록 CPU와 메모리 사용이 증가하기 때문에 성능이 저하될 수 있다.)
이에 비해 NGINX는 Event Driven 방식으로 동작한다. Event Driven방식은 요청이 들어오면 어떤 동작을 해야 하는지만 알려주고 다른 요청을 처리하는 방식이다. 그러다 보니 프로세스를 fork 하거나 스레드를 사용하는 아파치와는 달리 CPU와 관계없이 모든 IO들을 전부 Event Listener로 미루기 때문에 흐름이 끊기지 않고 응답이 빠르게 진행이 되어 1개의 프로세스로 더 빠른 작업이 가능하게 될 수 있다. 이 때문에 메모리적인 측면에서 NGINX가 자원을 적게 처리한다는 장점이 있다고 한다.
'웹개발 개인공부' 카테고리의 다른 글
PHP (0) | 2020.05.19 |
---|---|
CGI와 Perl (0) | 2020.05.19 |
입력할 내용이 많은 경우는 POST방식 (0) | 2020.05.17 |
사용자 입력을 통한 GET요청 (0) | 2020.05.15 |
기본값 사용하기 (0) | 2020.05.14 |