웹 서버

웹사이트나 애플리케이션을 호스팅하거나 제공하는 네트워크 컴퓨터

서버(Web server)는 다음의 두 가지 뜻 가운데 하나이다.

  1. 웹 서버: 웹 브라우저와 같은 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹 페이지를 반환하는 컴퓨터 프로그램
  2. 웹 서버 (하드웨어): 위에 언급한 기능을 제공하는 컴퓨터 프로그램을 실행하는 컴퓨터
세계 최초의 웹 서버

웹 서버(web server)는 HTTP 또는 HTTPS를 통해 웹 브라우저에서 요청하는 [HTML 문서나 오브젝트(이미지 파일 등)을 전송해주는 서비스 프로그램을 말한다. 웹 서버 소프트웨어를 구동하는 하드웨어도 웹 서버라고 해서 혼동하는 경우가 간혹 있다.

개요 편집

웹 서버의 주된 기능은 웹 페이지를 클라이언트로 전달하는 것이다. 주로 그림, CSS, 자바스크립트를 포함한 HTML 문서가 클라이언트로 전달된다.

흔히 웹 브라우저 또는 웹 크롤러로 부르는 클라이언트는 HTTP를 통해 리소스를 요청하며 서버는 해당 리소스를 반환하거나 처리할 수 없을 경우 에러 메시지를 전달한다. 이러한 리소스는 일반적으로 서버의 보조 기억 장치에 있는 실제 파일을 가리키지만 반드시 그런 것은 아니며 웹 서버가 어떻게 수행하느냐에 따라 달라질 수 있다.

주된 기능은 콘텐츠를 제공하는 것이지만 클라이언트로부터 콘텐츠를 전달 받는 것도 웹 서버의 기능에 속한다. 이러한 기능은 파일 업로드를 포함하여 클라이언트에서 제출한 웹 폼을 수신하기 위해 사용된다.

보통 대다수의 웹 서버는 Active Server Page(ASP), PHP 등의 서버 사이드 스크립트 언어(Server-side scripting)를 지원한다. 이는 서버 소프트웨어의 변경 없이도 웹 서버가 수행할 동작을 분리된 서버 사이드 스크립트 언어에 기술할 수 있다는 의미이다. 보통 서버 사이드 스크립트 언어를 통해 구현되는 기능이란 HTML 문서를 동적으로 생성하는 것을 말한다. 이렇게 동적으로 생성된 HTML 문서는 동적 컨텐트라 하는데 주로 데이터베이스의 정보를 조회해서 보여주거나 수정하기 위해 사용된다. 동적 컨텐트와 대비되는 개념으로 정적 컨텐트가 있는데 일반적으로 동적 컨텐트보다 더 빠르게 동작하고 쉽게 캐시될 수 있지만, 반환되는 컨텐트의 내용이 항상 동일하다.

웹 서버는 월드 와이드 웹 뿐만 아니라 프린터, 라우터, 웹캠과 같은 임베디드 장치, 그리고 근거리 통신망(local network)에서도 사용된다. 시스템의 모니터링 또는 장치 관리를 위한 목적으로 사용되는데, 이렇게 웹 서버는 클라이언트에 다른 소프트웨어의 설치 없이 대부분의 운영체제에 포함된 웹 브라우저만으로 서비스를 제공할 수 있다는 장점이 있다.

공통 기능 편집

웹 서버 프로그램들이 세세한 부분에서 다를지라도, 대부분의 프로그램들은 몇 가지 기본 공통 기능을 갖고 있다.

  1. HTTP
  2. 통신 기록

그리고 기본 공통 기능에는 포함되지 않지만 대다수 웹 서버는 다음과 같은 기능도 제공한다.

  1. 인증
  2. 정적 콘텐츠 관리
  3. HTTPS 지원
  4. 콘텐츠 압축
  5. 가상 호스팅
  6. 대용량 파일 지원
  7. 대역폭 스로틀링

시장 구조 편집

 
주요 웹 서버의 시장 점유율

아래 시장 점유율 목록은 2013년 5월 넷크래프트에서 조사한 결과이다.[1]

제품 제조업체 웹 사이트 수 백분율
아파치 아파치 359,441,468 53.42%
IIS 마이크로소프트 112,303,412 16.69%
nginx NGINX, Inc. 104,411,087 15.52%
GWS 구글 23,029,260 3.42%


동작환경 편집

클라이언트인 웹 브라우저의 URL에서 나타내는 HTML 문서 및 각종 정보를 HTTP로 송신한다. 대부분 클라이언트의 웹 브라우저와의 사이에 다수의 커넥션을 연결하여 HTML문서 및 기타 파일(이미지 파일 등)을 병렬로 전송하여 처리시간을 단축하는 서비스를 제공한다.

또한, HTML 문서 처리를 위한 프로그램으로 CGI 스크립터나 자바 서블릿(Java Servlet) 등을 사용하여 웹 화면에 연동되는 동적 처리를 수행한다. CGI 처리를 위해 (Perl), 루비(Ruby), PHP 등의 스크립트 언어가 많이 개발된 상태이다.

자바 서블릿은 웹 프로그램을 동작하기 위해 작성된 자바 스펙으로 초기 CGI의 문제점인 대용량 처리의 문제점을 극복한 언어이다. 따라서, 대용량 처리를 필요로 하는 기업환경에서는 많이 사용되고 있다.

대규모 웹 시스템을 구성하는 경우, 같은 서비스를 제공하는 웹 서버를 병렬로 설치하고, 웹 서버의 앞쪽에 로드밸런스라는 분산처리하는 네트워크 장비(L4 스위치 등)를 통해 웹 서버에 처리를 분배하는 방식을 사용하고 있다. 이러한 방식을 통해 웹 시스템의 가용성과 신뢰성을 보장하고 있다.

제품 편집

넷크래프트(Netcraft) 설문조사 Archived 2007년 11월 11일 - 웨이백 머신에서 2007년 9월에 조사한 웹 서버 사용 분포는 다음과 같다.

제작사 제품 사용 사이트 수
아파치 소프트웨어 재단 아파치 웹 서버 67,898,632
마이크로소프트 IIS 47,226,195
구글 GWS 6,616,713
썬 마이크로시스템즈 Sun Java System Web Server 1,997,150
Oversee Oversee 1,601,209
lighttpd lighttpd 1,515,963
기타 등등 - 8,296,292
- 135,152,154

같이 보기 편집

각주 편집