웹 서버란 무엇인지, 어떻게 작동하는지, 왜 중요한지 알아보자.
Summary
웹 서버라는 용어는 함께 작동하는 하드웨어나 소프트웨어, 또는 둘 다를 가리킬 수 있다.
- 하드웨어 측면에서 웹 서버는 웹 사이트의 구성 요소 파일(예를 들어, HTML 문서, 이미지, CSS 스타일시트, 자바스크립트 파일)을 저장하는 컴퓨터이다. 웹 서버는 인터넷에 연결되어 웹에 연결된 다른 장치와의 물리적 데이터 교환을 지원한다.
- 소프트웨어 측면에서 웹 서버는 웹 사용자가 호스트된 파일에 접근하는 방법을 제어하는 여러 부분을 포함한다. 이것은 최소한 HTTP 서버를 말한다. HTTP 서버는 URL(웹 주소)와 HTTP(브라우저가 웹 페이지를 보는 데 사용하는 프로토콜)을 이해하는 소프트웨어이다. HTTP 서버는 웹 사이트의 도메인 네임을 통해 접근할 수 있으며, 호스트된 웹 사이트의 콘탠츠를 최종 사용자의 장치로 전달한다.
가장 기본적인 단계에서, 브라우저는 웹 서버에서 호스팅된 파일이 필요할 때마다 HTTP를 통해 파일을 요청한다. 요청이 올바른 (하드웨어) 웹 서버에 도달하면, (소프트 웨어) HTTP 서버는 요청을 수락하고, 요청된 문서를 찾은 다음 HTTP를 통해 브라우저로 다시 보낸다. (만약 서버가 요청받은 문서를 찾지 못하면, 서버는 문서 대신 404 응답을 반환한다.)
웹 사이트를 게시하려면 정적, 또는 동적 웹 서버가 필요하다.
정적(static) 웹 서버 또는 스택은 HTTP 서버 (소프트웨어)가 있는 컴퓨터 (하드웨어)로 구성된다. 서버가 호스트된 파일을 그대로 브라우저에 보내기 때문에 "정적(static)"이라고 한다.
동적(dynamic) 웹 서버는 정적 웹 서버와 추가 소프트웨어, 가장 일반적으로 웹 애플리케이션 서버(WAS) 및 데이터베이스로 구성된다. 웹 애플리케이션 서버(WAS)가 HTTP 서버를 통해 브라우저로 내용을 보내기 전에 호스트 된 파일을 업데이트하기 때문에 이를 "동적(dynamic)"이라고 한다.
예를 들어, 브라우저에 표시되는 최종 웹 페이지를 생성하기 위해 웹 애플리케이션 서버(WAS)는 HTML 템플릿을 데이터베이스의 내용으로 채울 수 있다. MDN이나 위키피디아 같은 사이트에는 수천 개의 웹 페이지가 있다. 일반적으로 이러한 종류의 사이트는 수천 개의 정적 HTML 문서가 아닌 몇 개의 HTML 템플릿과 거대한 데이터베이스로 구성된다. 이 설정을 하용하면 콘탠츠를 더 쉽게 유지 관리하고 전달할 수 있다.
Deeper Dive
검토 : 웹 페이지를 가져오려면, 브라우저가 웹 서버에 request를 전송하고, 웹 서버는 자체 저장 공간에서 request 받은 파일을 검색한다. 파일을 찾으면 서버는 파일을 읽고 필요에 따라 처리한 다음 브라우저로 보낸다. 이러한 단계를 좀 더 자세히 살펴보자.
1. Hosting files
첫째, 웹 서버는 웹 사이트의 파일, 즉 이미지, CSS 스타일시트, 자바스크립트 파일, 글꼴, 비디오를 포함한 모든 HTML 문서와 관련 자산을 저장해야 한다.
기술적으로, 모든 파일을 자신의 컴퓨터에 호스팅할 수 있지만 다음과 같은 이유로 모든 파일을 전용 웹 서버에 저장하는 것이 훨씬 편리하다 :
- 일반적으로, 전용 웹 서버의 가용성이 더 높다. (작동 및 실행 중)
- 작동 중지와 시스템 문제를 제외하고, 전용 웹 서버는 항상 인터넷에 연결된다.
- 전용 웹 서버는 항상 동일한 IP 주소를 가질 수 있다. 이 주소를 전용 IP 주소라고 한다. (모든 ISP(Internet Service Provider)가 가정 회선에 고정 IP 주소를 제공하는 것은 아니다.)
- 전용 웹 서버는 일반적으로 타사에 의해 유지 관리된다.
이러한 모든 이유로 좋은 호스팅 공급자를 찾는 것은 웹 사이트 구축의 핵심 부분이다. 회사들이 제공하는 다양한 서비스를 검토하고, 당신의 요구와 예산에 맞는 것을 선택하라. (서비스는 한 달을 기준으로 무료에서 수천 달러까지 다양하다.) 자세한 내용은 이 기사에서 확인할 수 있다.
일단 웹 호스팅 서비스가 있으면 파일을 웹 서버에 업로드해야 한다.
2. Communicating through HTTP
둘째, 웹 서버는 HTTP(Hypertext Transfer Protocol)에 대한 지원을 제공한다. 이름에서 알 수 있듯이 HTTP는 두 컴퓨터 간에 하이퍼 텍스트(연결된 웹 문서)를 전송하는 방법을 규정한다.
프로토콜은 두 컴퓨터 간의 통신을 위한 일련의 규칙이다. HTTP는 텍스트 형식의 상태 비저장 프로토콜(Textual, Stateless)이다.
Textual
모든 명령은 일반 텍스트이며 사람이 읽을 수 있다.
Stateless
서버와 클라이언트는 모두 이전 통신을 기억하지 못한다. 예를 들어, HTTP에만 의존할 경우, 서버는 사용자가 입력한 비밀번호를 기억할 수 없거나 불완전한 트랜잭션에 대한 진행률을 기억할 수 없다. 그런 작업에는 웹 애플리케이션(WAS) 서버가 필요하다. (이러한 기술에 대해서는 다른 기사에서 다룬다.)
HTTP는 클라이언트와 서버가 통신하는 방법에 대한 명확한 규칙을 제공한다. HTTP 자체에 대해서는 나중에 다른 글에서 다룰 계획이다. 지금은 다음 사항에 주의해야 한다 :
- 일반적으로 클라이언트만 HTTP request를 만들고 서버에 요청한다. 서버는 클라이언트의 HTTP 요청에 응답한다. 서버는 또한 서버 푸시라는 메커니즘을 통해 요청되기 전에 미리 클라이언트 캐시에 데이터를 채울 수 있다.
- HTTP를 통해 파일을 요청할 때 클라이언트는 파일의 URL을 제공해야 한다
- 웹 서버는 최소한 오류 메시지로 모든 HTTP 요청에 응답해야 한다.
웹 서버에서 HTTP 서버는 들어오는 요청을 처리하고 응답하는 역할을 한다.
- 요청을 받으면 HTTP 서버는 요청된 URL이 기존 파일과 일치하는지 확인한다.
- 이 경우, 웹 서버는 파일 콘탠츠를 브라우저로 다시 보낸다. 그렇지 않은 경우, 서버는 요청에 대한 파일을 동적으로 생성해야 하는지 확인한다(3. Static vs. dynamic content 참조).
- 이러한 옵션 중 어느 것도 사용할 수 없는 경우, 웹 서버는 브라우저에 오류 메시지(가장 일반적으로 404 Not Found)를 반환한다. 404 오류는 너무 흔해서 일부 웹 디자이너들은 404 오류 페이지를 설계하는 데 상당한 시간과 노력을 쏟는다.
3. Static vs. dynamic content
대략적으로 말하면, 서버는 정적(static) 또는 동적(dynamic) 콘텐츠를 제공할 수 있다. 정적(Static)이라는 용어는 "있는 그대로 제공됨"을 의미한다는 것을 기억해야 한다. 정적 웹 사이트는 가장 쉽게 설정할 수 있으므로 첫 번째 사이트를 정적 사이트로 만드는 것이 좋다.
동적(dynamic)이라는 용어는 서버가 콘텐츠를 처리하거나 데이터베이스에서 즉시 생성하는 것을 의미한다. 이러한 접근 방식은 더 많은 유연성을 제공하지만 기술 스택이 더 복잡하기 때문에 웹 사이트를 구축하는 것이 훨씬 더 어렵다.
애플리케이션 서버 기술은 너무 많아서 특정한 것을 하나 제안하기는 어렵다. 일부 웹 애플리케이션 서버(WAS)는 블로그, Wiki(인터넷 사용자들이 내용을 수정·편집할 수 있는 웹사이트) 또는 e-commerce(전자 상거래)와 같은 특정 웹 사이트 범주를 지원한다. 다른 웹 어플리케이션 서버(WAS)는 더 일반적이다. 동적(dynamic) 웹 사이트를 구축하는 경우에는 시간을 들여 필요에 맞는 기술을 선택해야 한다. 웹 서버 프로그래밍(그 자체로 흥미로운 영역이다!)을 배우고 싶지 않다면, 자신만의 웹 애플리케이션 서버(WAS)를 만들 필요가 없다. 그것은 단지 바퀴를 재발명하는 것(재창조)이다.
Next Chapter : Overview of HTTP
See also next steps
how much it costs to do something on the web
various software you need to create a website
how to upload files on a web server
출처 : https://developer.mozilla.org/en-US/docs/Learn/Common_questions/What_is_a_web_server
'Computer Science > 인터넷' 카테고리의 다른 글
[Chapter 8] Web Server vs. WAS(Web Application Server) (0) | 2023.02.09 |
---|---|
[Chapter6] 도메인 네임 (0) | 2023.02.03 |
[Chapter5] URL은 무엇인가? (0) | 2023.01.24 |
[Chapter4] HTTP 정의 (0) | 2023.01.22 |
[Chapter3] 하이퍼링크는 무엇인가? (0) | 2023.01.19 |