정의
"Web server"는 하드웨어, 소프트웨어 혹은 두 개가 같이 동작하는 것을 의미할 수 있습니다.
- 하드웨어 측면에서, web server는 web server의 소프트웨어와 website의 컴포넌트 파일들을 저장하는 컴퓨터입니다. (컴포넌트 파일에는 HTML 문서, images, CSS stylesheets, 그리고 JavaScript files가 있습니다.) Web server는 인터넷에 연결되어 웹에 연결된 다른 기기들이 웹 서버의 데이터(컴포넌트 파일들)를 주고받을 수 있도록 합니다.
- 소프트웨어 측면에서, web server는 기본적으로 웹 사용자가 어떻게 호스트 파일들에 접근하는지를 관리합니다. 이 문서에서 web server는 HTTP서버로 국한합니다. HTTP 서버는 URL(Web addresses)과 HTTP(당신의 브라우저가 웹 페이지를 보여주기 위해 사용하는 프로토콜)의 소프트웨어 일부입니다.
- 브라우저가 웹 서버에서 불려진 파일을 필요로 할때, 브라우저는 HTTP를 통해 파일을 요청합니다. 요청이 올바른 웹 서버(하드웨어)에 도달하였을 때, HTTP 서버(software)는 요청된 문서를 HTTP를 이용해 보내줍니다.
- 웹 사이트를 공개하기 위해서는, 우리는정적 혹은 동적 웹 서버가 필요합니다.
- 정적 웹 서버 혹은 스택은 HTTP 서버 (소프트웨어)가 있는 컴퓨터(하드웨어)로 구성되어 있습니다. 서버가 그 불려진 파일을 당신의 브라우저에게 전송하기 때문에, 저희는 그것을 "정적"이라고 부릅니다.
- 동적 웹 서버는 정적 웹 서버와 추가적인 소프트웨어(대부분 일반적인 애플리케이션 서버와 데이터베이스)로 구성되어 있습니다. 애플리케이션 서버가 HTTP 서버를 통해 당신의 브라우저에게 불려진 파일들을 전송하기 전에, 애플리케이션 서버가 업데이트하기 때문에 우리는 이것을 동적이라고 부릅니다.
- 예를 들어, 우리가 브라우저에서 보는 최종 웹페이지들을 생성하기 위해, 애플리케이션 서버는 데이터베이스로 온 컨텐츠들로 이루어진 HTML 템플릿을 채웁니다. MDN 혹은 Wikipedia와 같은 사이트들은 수 천개의 웹페이지들을 가지고 있지만, 그것들은 실제의 HTML 문서가 아니라 약간의 HTML 템플릿과 엄청 큰 데이터베이스로 되어있습니다. 이 구성은 내용들을 전달하고 관리하기 쉽고 빠르게 만들어 준다는 이점이 있습니다.
- 웹서버의 가장 중요한 기능은 클라이언트가 요청하는 HTML 문서나 각종 리소스를 전달하는 것.
- 웹 브라우저나 웹 크롤러가 요청하는 리소스는 컴퓨터에 저장된 정적인 데이터이거나 동적인 결과가 될 수 있다.
동작환경
- 클라이언트인 웹 브라우저의 URL에서 나타내는 HTML 문서 및 각종 정보를 HTTP로 송신한다.
- 대부분 클라이언트의 웹 브라우저와의 사이에 다수의 커넥션을 연결하여 HTML문서 및 기타 파일(이미지 파일 등)을 병렬로 전송하여 처리시간을 단축하는 서비스를 제공한다.
- HTML 문서 처리를 위한 프로그램으로 CGI 스크립터나 자바 서블릿(Java Servlet) 등을 사용하여 웹 화면에 연동되는 동적 처리를 수행한다. CGI 처리를 위해 펄, 루비, PHP 등의 스크립트 언어가 많이 개발된 상태이다.
- 자바 서블릿은 웹 프로그램을 동작하기 위해 작성된 자바 스펙으로 초기 CGI의 문제점인 대용량 처리의 문제점을 극복한 언어이다. 따라서, 대용량 처리를 필요로 하는 기업환경에서는 많이 사용되고 있다.
- 대규모 웹 시스템을 구성하는 경우, 같은 서비스를 제공하는 웹 서버를 병렬로 설치하고, 웹 서버의 앞쪽에 로드밸런스라는 분산처리하는 네트워크 장비(L4 스위치 등)를 통해 웹 서버에 처리를 분배하는 방식을 사용하고 있다. 이러한 방식을 통해 웹 시스템의 가용성과 신뢰성을 보장하고 있다.
호스팅 파일들
- 웹 서버는 처음에 HTML 문서라고 불리는 웹 사이트의 파일들과 이미지, CSS 스타일시트, JavaScript 파일, 폰트, 비디오를 포함한 관련된 것들을 저장해야합니다.
- 그 파일들을 불러올수 있지만, 그것들을 전담하는 웹 서버에 저장하는것이 훨씬 더 편리합니다. 전담하는 웹서버는 다음과 같은 특징이 있습니다:
- 항상 실행 중입니다
- 항상 인터넷과 연결되어 있습니다
- 항상 같은 IP주소를 가지고 있습니다
- 제 3자에 의해 유지보수 됩니다
Http를 이용해 통신하기
- 웹 서버는HTTP (hypertext transfer protocol)을 지원합니다. 이름이 의미하듯이, HTTP는 어떻게 두 컴퓨터간의 hypertext(예를 들어, 연결된 웹 문서)를 전송하는지를 서술합니다.
- 프로토콜은 두 컴퓨터간의 통신를 위한 규칙의 집합입니다. HTTP는 문자로 된, 독립적인 프로토콜입니다.
- Stateless(독립적인) : 서버 혹은 클라이언트는 이전의 통신을 기억하지 않습니다. 예를 들어, HTTP에만 의존하면, 서버는 당신이 입력한 비밀번호나 당신이 처리한 단계를 기억하지 못합니다. 당신은 그러한 일들을 위한 애플리케이션 서버가 필요합니다.
HTTP는 어떻게 클라이언트와 서버가 통신을 하는지 명확한 규칙을 제공합니다.
- 오직 클라이언트만이 HTTP 요청을 만들 수 있으며, 서버에게만 보낼 수 있습니다. 서버는 오직 클라이언트의 HTTP 요청에 응답할 수 있습니다.
- HTTP를 통해 파일을 요청할때, 클라이언트는 반드시 URL 파일들을 제공해야 합니다.
- 웹 서버는 반드시 최소한의 에러 메시지를 포함하여 모든 HTTP 요청에 응답해야합니다.
웹 서버에서, HTTP 서버는 들어오는 요청들에 대해 응답하고, 처리해야 합니다.
- 요청을 받으면, HTTP 서버는 먼저 요청받은 URL이 존재하는 파일과 매칭이 되는지를 확인합니다.
- 만약 매칭된다면, 웹 서버는 그 파일 내용을 브라우저에게 되돌려줍니다. 만약 그렇지 않다면, 애플리케이션 서버는 필요한 파일을 구축합니다.
- 만약 위 둘의 과정이 불가능하다면, 웹 서버는 브라우저에게 에러 메시지를 반환합니다, 대부분의 에러 메시지는 "404 Not Found" 입니다.
정적 vs 동적 컨텐츠
- 대략적으로 말하자면, 서버는 정적 혹은 동적 컨텐츠 모두 제공할 수 있습니다.
- "정적"은 "있는 그대로 제공되는 것(served as-is)"를 의미합니다.
- "동적"은 서버가 컨텐츠를 처리하는 것, 심지어는 컨텐츠를 데이터베이스로부터 생성하는 것을 의미합니다. 이 방법은 더 많은 유연성을 제공하지만, 기술적 스택이 더 다루기 힘들어지고, 웹사이트를 구축하는 것이 훨씬 더 복잡해집니다.
참조
웹 서버란 무엇일까? - Web 개발 학습하기 | MDN (mozilla.org)
웹 서버란 무엇일까? - Web 개발 학습하기 | MDN
여기서 우리는 웹 서버가 무엇인지, 어떻게 동작하는지, 왜 중요한지를 알아볼 것입니다.
developer.mozilla.org
[웹기초 BE_Servlet] 4. 웹 서버의 기능, 종류,역할 / WAS란, 종류, 웹서버와의 차이점 / DBMS / 미들웨어 (tistory.com)
[웹기초 BE_Servlet] 4. 웹 서버의 기능, 종류,역할 / WAS란, 종류, 웹서버와의 차이점 / DBMS / 미들웨어
핵심 개념 Apache Nginx HTTP 클라이언트 (Client) 서버 (Server) 웹 서버란? 웹 서버는 소프트웨어(Software)를 보통 말하지만, 웹 서버 소프트웨어가 동작하는 컴퓨터를 말합니다. 웹 서버의 가장 중요한 기
0ver-grow.tistory.com
'백엔드 > 웹 서버' 카테고리의 다른 글
Web Server와 WAS의 차이 (0) | 2022.10.26 |
---|---|
도메인 입력부터, EC2 서버까지 요청 과정 (0) | 2022.02.17 |
AWS 인스턴스 사용자, 포트포워딩 5000번을 80번으로 바꾸는 것이 잘 되지 않을 때 (0) | 2021.12.17 |