Docker/Docker 실습&연습

[Docker 실습] 3. 도커로 웹서버 구축하기(1) - Apache와 Nginx 웹서버 이해하기

Fletcher 2024. 8. 17. 22:57

 

반갑습니다!

이번 포스트에서는 실습을 위해서

웹 서버에 대해서 이해해보는 시간을 갖겠습니다

 

 

웹 서버란, HTTP 요청을 읽어서 응답을 해주는 프로그램입니다!

보통 웹 서버 프로그램을 서버 상에 설치하여서

특정 HTTP 요청에 따라 서비스를 제공해주는 방식으로 웹 서비스를 구현합니다

상용으로 많이 쓰이는 프로그램들이 있는데요

Apache와 Nginx가 있습니다 ^^

 

 

 

1. Apache

해당 프로그램은 오픈소스 프로젝트로 가장 유명한 프로그램 중 하나입니다

수십년간 웹 서버 프로그램 시장을 장악하다시피 했었죠 ^^

 

 

Apache의 구동 방식은 크게 두 가지가 있습니다

 

① Prefork MPM(Multi Processing Module) 방식

: HTTP 요청이 올 때마다 프로세스를 복제하여서

각각 별도의 프로세스에서 해당 HTTP 요청을 처리

 

② Worker MPM(Multi Processing Module) 방식

: 하나의 HTTP 연결 후 여러 요청을 처리하기 위해서

복제된 프로세스 내에서 여러 쓰레드를 생성하여 여러 HTTP 요청을 핸들링

 

 

 

 

2. Nginx

Nginx의 구동 방식은 다음과 같습니다

 

Event Driven 방식

(1) 하나의 프로세스로 동작하며, HTTP 요청을 event로 비동기식 처리

→ 대부분의 HTTP 응답은 결국 HTML 파일을 제공하는 것이므로 IO작업임

→ 따라서 IO 작업으로 event를 포워딩하고, 요청 순서가 아닌 요청 작업이 끝난 순서로 처리함

 

(2) HTTP 요청마다 프로세스든 쓰레드든 생성이 필요 없으므로

시스템 자원 관리에 장점이 있다

 

(3) 보통 많은 접속자가 있을 경우 시스템 자원 관리에 대한 효율성 때문에

Nginx가 일반적으로는 성능이 더 좋을 수 있다

→ HTML 파일 사이즈, 어떤 추가 기능을 쓰는가 등 다양한 조건이 있으므로

무조건 해당 프로그램이 성능이 우수하다라고 단정지을 수는 없음

 

 

 

※ 참고 ※

단, 웹서버는 다양한 추가 기능과 함께 동작하므로

종합적인 성능에 있어서 큰 차이가 두드러지지는 않는다

ex) PHP 언어 지원을 위해서 Apache와 Nginx는 추가 모듈 등이 필요하고

해당 모듈의 성능 또한 종합 성능에 영향을 끼친다