Web Server는 Client의 요청에 따라 웹 문서를 전달하는 서비스 프로그램으로 Appache, IIS, Nginx, GWS와 같은 다양한 종류의 웹 서버가 있다.
- Apache
- 아파치 재단이 주도하는 대표적인 오픈소스 웹 서버이다. 상당히 사용률이 큰 편이며 커뮤니티도 넓은 편이라고 생각한다. 사용자의 요청에 따라 별도의 프로세스 혹은 스레드를 생성하여 처리하는 것이 특징이며, Loadable Module 기능을 제공하여 서버의 동작을 확장할 수 있다.
- 리눅스, 윈도우, macOS 등 다양한 운영체제에 설치하여 사용할 수 있다
- Apache 1.x는 프로세스 기반으로 동작하여 사용자 요청마다 하나의 프로세스가 담당하였다. 그렇기에 동시 접속자 수가 증가하면, 시스템 성능에 영향을 준다.
- Apache 2.x는 Multi-Processing Module을 지원하여, 프로세스와 쓰레드를 이용하여 사용자 요청을 효과적으로 처리한다. MPM은 perwork와 worker의 두 가지 방식으로 클라이언트의 요청을 자식 프로세스에게 할당한다.
prefork | Apache 1.x와 같은 방식으로 하나의 프로세스가 하나의 쓰레드를 갖는다. 실행 중인 프로세스를 fork(복제)하여 미리 동작시킨 후 클라이언트의 요청을 처리한다. 쓰레드 간 메모리 공유를 하지 않기에 쓰레드 세이프하다고 할 수 있지만 시스템 메모리를 많이 사용하는 구조이다. 최대 1,024개의 자식 프로세스를 사용하며, 리눅스의 기본 설정 방식이다. |
worker | 프로세스당 여러 개의 쓰레드를 갖는 구조로, 각 쓰레드가 클라이언트 요청을 처리한다. 세팅 시 초기 구동할 프로세스의 수를 지정하며, 프로세스당 최대 쓰레드 개수는 64개이다. 이를 초과하면 새로운 프로세스를 생성하게 된다. |
- IIS
- 마이크로소프트가 개발 및 제공하는 웹 서버로, 마이크로소프트 ASP(Active Server Page)를 지원하며, GUI 기반의 관리 콘솔을 이용한 설정 및 관리가 편리하다.
- Nginx
- NGINX사가 개발 및 제공하는 웹 서버로 비동기 이벤트 방식으로 동작한다. 로드밸런스, HTTP 캐시, 리버스 프락시 등의 기능을 기본으로 제공한다.
- GWS
- 구글이 제공하는 웹 서버이다.
웹 서버는 동적페이지, 로그인 및 세션 관리, 다중 웹 호스팅, Quality of Service (QoS) 제한 등 다양한 기능을 자체적으로 제공하거나, 확장 모듈을 이용하여 제공한다.
'웹 프로그래밍 기초' 카테고리의 다른 글
Canvas (0) | 2021.10.17 |
---|---|
파일 다운로드 회고 (2) | 2021.09.08 |
[CSS3] overflow (0) | 2021.07.05 |
[HTML] Mark Up literal (0) | 2021.06.06 |
HTML/CSS 웹 프로그래밍 복습(2) (0) | 2021.05.19 |
댓글