웹서버
웹서버(web server)란 웹페이지가 들어 있는 파일을 사용자에게 제공하는 서버 프로그램이다. 시스템 소프트웨어의 일종이다. 웹서버는 웹브라우저로부터 HTTP 요청을 받아들이고, 클라이언트에게 웹페이지를 반환하는 프로그램 혹은 그 프로그램을 실행하는 서버컴퓨터이다. 실 등 다양한 서비스를 제공한다. 웹서버의 종류에는 아파치(Apache), 아이아이에스(IIS), 웹투비(WebtoB) 등이 있다.
개요
세계 최초의 웹서버는 1990년 팀 버너스-리(Tim Berners-Lee)가 만든 CERN HTTPd이다. 이후 미국 일리노이 대학교의 NCSA[1]에서 NCSA 웹서버를 개발했다.
웹서버의 주된 기능은 웹페이지를 클라이언트로 전달하는 것이다. 주로 이미지, CSS, 자바스크립트를 포함한 HTML 문서가 클라이언트로 전달된다. 흔히 웹브라우저 또는 웹크롤러로 부르는 클라이언트는 HTTP를 통해 리소스를 요청하며 서버는 해당 리소스를 반환하거나 처리할 수 없는 경우 에러 메시지를 전달한다. 이러한 리소스는 일반적으로 서버의 보조 기억 장치에 있는 실제 파일을 가리키지만 반드시 그런 것은 아니며 웹서버가 어떻게 수행하느냐에 따라 달라질 수 있다.
대다수의 웹서버는 ASP, PHP 등의 서버 사이드 스크립트 언어(Server-side scripting)를 지원한다. 이는 서버 소프트웨어의 변경 없이도 웹서버가 수행할 동작을 분리된 서버 사이드 스크립트 언어에 기술할 수 있다는 의미이다. 보통 서버 사이드 스크립트 언어를 통해 구현되는 기능이란 HTML 문서를 동적으로 생성하는 것을 말한다. 이렇게 동적으로 생성된 HTML 문서는 동적 컨텐트라 하는데 주로 데이터베이스의 정보를 조회해서 보여주거나 수정하기 위해 사용된다. 동적 컨텐트와 대비되는 개념으로 정적 컨텐트가 있는데 일반적으로 동적 컨텐트보다 더 빠르게 동작하고 쉽게 캐시될 수 있지만, 반환되는 컨텐트의 내용이 항상 동일하다.
웹서버는 WWW뿐만 아니라 프린터, 라우터, 웹캠과 같은 임베디드 장치이며 근거리 통신망(local network)에서도 사용된다. 시스템의 모니터링 또는 장치 관리를 위한 목적으로 사용되는데, 이렇게 웹서버는 클라이언트에 다른 소프트웨어의 설치 없이 대부분의 운영체제에 포함된 웹브라우저만으로 서비스를 제공할 수 있다.
종류
아파치 웹서버 |
아이아이에스(IIS) |
웹투비(WebtoB) |
아이플래닛(iPlanet) |
웹티어(WebTier) |
엔진엑스(NginX) |
- 아파치 웹서버(Apache Web Server) : 리눅스 기반의 무료 오픈소스 웹서버 프로그램이다. 아파치재단에서 관리하고 있다.
- 아이아이에스(IIS) : Internet Information Services의 약자로서, 미국 마이크로소프트(Microsoft)사의 윈도우 시스템에서 사용하는 웹서버 프로그램이다.
- 웹투비(WebtoB) : 한국의 ㈜티맥스소프트<--티맥스소프트, 티맥스 소프트-->가 개발한 웹서버 제품이다. 주로 와스(WAS) 제품인 제우스(JEUS)와 함께 사용된다.
- 아이플래닛(iPlanet) : 미국 오라클 회사가 제공하는 웹서버 제품이다. 미국 썬 마이크로시스템즈가 개발했고, 썬원(SUN one)으로 불리기도 했다. 2010년 오라클에 인수되었다.
- 웹티어(WebTier) : 미국 오라클 회사가 판매하는 웹서버 제품이다.
- 엔진엑스(Nginx) : 2004년 러시아의 이고르 시셰프(Игорь Сысоев, 영어: Igor Sysoev)가 개발한 무료 오픈소스 웹서버 프로그램이다. 2011년 엔진엑스 회사를 설립하여 유료 기술지원을 하고 있다.
- 구글 웹서버(GWS) : Google Web Server의 약자로서, 미국 구글이 만든 웹서버이다.
시장 점유율
제품 | 2019년 9월 | 퍼센트 | 2019년 10월 | 퍼센트 | 변화 |
엔진엑스(Nginx) | 422,048,243 | 32.69% | 427,719,289 | 32.88% | 0.19 |
아파치 웹서버 | 374,739,321 | 29.02% | 372,604,250 | 28.64% | -0.38 |
아이아이에스(IIS) | 189,991,312 | 14.71% | 183,224,187 | 14.08% | -0.63 |
구글 웹서버(GWS) | 33,058,930 | 2.56% | 34,861,968 | 2.68% | 0.12 |
기능
웹서버는 HTTP, HTTPS, 통신기록, 인증, 정적 콘텐츠 관리, 콘텐츠 압축, 가상 호스팅, 대용량 파일 지원, 대역폭 스로틀링 기능 등을 제공한다. 웹서버의 주된 기능은 웹페이지를 클라이언트에게 전달하는 것이다. 클라이언트와 서버와의 커뮤니케이션은 HTTP(Hypertext Transfer Protocol)을 사용하여 수행된다. 웹페이지는 대부분 HTML 문서 형태로 전달이 되며, HTML에는 각종 이미지들과 스타일 시트, 스크립트 등이 포함되어 있으며, 웹서버의 공통된 기능은 네 가지가 있다.[2]
- 가상 호스팅 : 하나의 IP주소를 사용하는 많은 웹사이트들을 지원
- 대용량 파일 지원 : 32비트 운영체제에서 2GB 이상의 파일을 지원
- 대역폭 조절 : 네트워크의 포화상태를 방지하기 위한 응답속도 제한
- 서버측 스크립팅 : 웹서버 단에서 실행되는 동적 웹페이지 생선 언어 지원
예시
80번 포트에 소켓을 열고 이 포트를 통해 들어오는 HTTP 요청을 받아, 다시 응답을 보내는 코드이다
import socket
listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) listen_socket.bind(('', 80)) # 80번은 웹의 일반적인 포트 listen_socket.listen(1) connection, address = listen_socket.accept() while True: connection.recv(1024) connection.sendall("""HTTP/1.1 200 OK Content-type: text/html <html> <body> <h1>hello, World!</h1> </body> </html>""") connectiom.close()
웹 애플리케이션 서버
웹 애플리케이션 서버(WAS; Web Application Server)는 웹 애플리케이션과 서버 환경을 만들어 동작시키는 기능을 제공하는 소프트웨어 프레임워크이다. 인터넷 상에서 HTTP를 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해 주는 소프트웨어 엔진으로 볼 수 있다. 데이터베이스 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 애플리케이션 서버이다.[3]
역할
웹 애플리케이션 서버(WAS)는 웹서버와 웹 컨테이너를 합쳐진 것이다. 여기서 컨테이너는 JSP, servlet을 실행시킬 수 있는 소프트웨어를 말한다. 또한 웹서버 기능들을 구조적으로 분리하여 처리하고자하는 목적으로 제시되며, 분산 트랜잭션, 보안, 메시징, 쓰레드 처리 등의 기능을 처리하는 분산 환경에서 사용된다. 주로 데이터베이스 서버와 같이 수행된다.
기능
- 프로그램 실행 환경과 데이터베이스 접속 기능 제공
- 여러 개의 트랜잭셩(논리적인 작업 단위) 관리 기능
- 업무를 처리하는 비즈니스 로직 수행
각주
- ↑ NCSA는 National Center for Supercomputing Application의 약자로서, 미국 일리노이 대학교에 있는 국립 슈퍼 컴퓨터 응용 프로그램 센터이다. 이 센터의 연구원이었던 마크 앤드리슨(Marc Andreessen)은 모자이크 웹브라우저를 개발했다.
- ↑ 황민, 〈[https://www.slideshare.net/MaxGauge_EXEM/wh-apm-58640962 웹 서버의 기능 및 역할〉, 《슬라이드쉐어》, 2016-02-24
- ↑ 권희정, 〈(Web) Web Server와 WAS의 차이와 웹 서비스 구조〉, 2018-10-27
참고자료
- 〈October 2019 Web Server Survey〉, 《넷크래프트》, 2019-10-24
- 〈웹 서버〉, 《위키백과》
- 숩은 아직 20대, 〈웹서버란 무엇인가〉, 2014-07-27
- 〈Web server〉, 《위키피디아》
- 황민, 〈[https://www.slideshare.net/MaxGauge_EXEM/wh-apm-58640962 웹 서버의 기능 및 역할〉, 《슬라이드쉐어》, 2016-02-24
- 권희정, 〈(Web) Web Server와 WAS의 차이와 웹 서비스 구조〉, 2018-10-27
같이 보기