웹 서버란 무엇일까?

현재 번역은 완벽하지 않습니다. 한국어로 문서 번역에 동참해주세요.

여기서 우리는 웹 서버가 무엇인지, 어떻게 동작하는지, 왜 중요한지를 알아볼 것입니다.

선수 지식: 반드시 web page와 web site, web server, 그리고 search engine의 차이점에 대해 이해하고 인터넷이 어떻게 동작하는지를 알아야 합니다.
목표: web server가 무엇인지를 배우고, 어떻게 동작하는지에 대한 전반적인 이해를 얻을 것입니다.

요약

"Web server"는 하드웨어, 소프트웨어 혹은 두 개 모두를 의미할 수 있습니다. 

  1. 하드웨어 측면에서, web server는 website의 컴포넌트 파일들을 저장하는 컴퓨터입니다. ( 컴포넌트 파일에는 HTML 문서, images, CSS stylesheets,, 그리고 JavaScript files가 있습니다.) 그리고 이 파일들을 최종 소비자의 디바이스에 전달합니다. web server는 인터넷에 연결되어 있고, mozilla.org와 같은 domain name을 통해 접속될 수 있습니다.
  2. 소프트웨어 측면에서, web server는 최소한으로 HTTP server에서 어덯게 웹 사용자가 호스트 파일들을 접근하는지를 관리하는 여러 부분을 포함합니다. HTTP 서버는 URL(Web addresses)과 HTTP(당신의 브라우자거 웹 페이지를 보여주기 위해 사용하는 프로토콜)의 소프트웨어 일부입니다.

가장 기본적인 단계에서, 브라우저가 웹 서버에서 불려진 파일을 필요로 할때, 브라우저는 HTTP를 통해 파일을 요청합니다. 요청이 올바른 웹 서버(하드웨어)에 도달하였을 때, HTTP 서버(software)는 요청된 문서를 HTTP를 이용해 보내줍니다. 

Basic representation of a client/server connection through HTTP

웹 사이트를 공개하기 위해서는, 당신은 정적 혹은 동적 웹 서버가 필요합니다.

정적 웹 서버 혹은 스택은 HTTP 서버 (소프트웨어)가 있는 컴퓨터(하드웨어)로 구성되어 있습니다. 서버가 그 불려진 파일을 당신의 브라우저에게 전송하기 때문에, 저희는 그것을 "정적"이라고 부릅니다.

동적 웹 서버는 정적 웹 서버와 추가적인 소프트웨어(대부분 일반적인 애플리케이션 서버와 데이터베이스)로 구성되어 있습니다. 애플리케이션 서버가 HTTP 서버를 통해 당신의 브라우저에게 불려진 파일들을 전송하기 전에, 애플리케이션 서버가 업데이트하기 때문에 우리는 이것을 동적이라고 부릅니다.

예를 들어, 당신이 브라우저에서 보는 최종 웹페이지들을 생성하기 위해, 애플리케이션 서버는 아마 데이터베이스로 온 컨텐츠들로 이루어진 HTML 템플릿을 채울지 모릅니다. MDN 혹은 Wikipedia와 같은 사이트들은 수 천개의 웹페이지들을 가지고 있지만, 그것들은 실제의 HTML 문서가 아니라 오직 약간의 HTML 템플릿과 엄청 큰 데이터베이스로 되어있습니다. 이 구성은 내용들을 전달하고 관리하기 쉽고 빠르게 만들어 줍니다.

활발한 교육

아직 자료가 없습니다. 부디 기여하여주세요.

더 깊은 부분

웹 페이지를 가져오기 위해, 우리가 이미 말했듯이, 당신의 브라우저는 저장 공간에 있는 요청된 파일들을 찾는 웹 서버에게 요청을 보냅니다. 한번 좀더 자세히 알아봅시다. 

호스팅 파일들

웹 서버는 처음에 HTML 문서라고 불리는 웹 사이트의 파일들과 이미지, CSS 스타일시트, JavaScript 파일, 폰트, 비디오를 포함한 관련된 것들을 저장해야합니다. 

기술적으로, 당신은 컴퓨터에 있는 그 파일들을 불러올수 있지만, 그것들을 헌신하는 웹 서버에 저장하는것이 훨씬 더 편리합니다. 헌신하는 웹서버란: 

  • 항상 실행 중인것.
  • 항상 인터넷과 연결된 것
  • 항상 같은 IP주소를 가지고 있는 것(모든  ISPs가 홈 라인에 대해 고정된 IP주소를 제공하는 것은 아닙니다.)
  • 제 3자에 의해 유지보수 되는 것

이러한 이유들로, 좋은 호스팅 제공자를 찾는 것은 당신의 웹 사이트를 구축하는 것의 핵심 부분입니다. 다양한 서비스 회사들의 요청을 파 나가십시오 그리고 당신의 필요와 예산을 충족하는 하나를 선택하세요 (서비스는 무료부터 매달 수 천달러가 있을 수 있습니다.) 당신은 더 많은 자세한 사항을 여기서 찾을 수 있습니다.

당신이 웹 호스팅 솔루션을 설정했다면, 그저 당신의 웹 서버에 파일들을 업로드 하시면 됩니다.

HTTP를 이용해 통신하기

두 번째로, 웹 서버는 HTTP (hypertext transfer protocol)을 위한 지원을 제공합니다. 이름이 의미하듯이, HTTP는 어떻게 두 컴퓨터간의 hypertext(예를들어 연결된 웹 문서)를 전송하는지를 서술합니다.

프로토콜은 두 컴퓨터간의 통신를 위한 규칙의 집합입니다. HTTP는 원문대로의, 상태가 없는 프로토콜입니다.

Textual(원문의)
모든 명령어들은 기본 문자이며 사람들이 읽을 수 있습니다. 
Stateless(상태가 없는)
서버 혹은 클라이언트는 이전의 통신을 기억하지 않습니다. 예를 들어, HTTP에만 의존하면, 서버는 당신이 입력한 비밀번호 혹 당신이 처리한 단계를 기억하지 못합니다. 당신은 그러한 일들을 위한 애플리케이션 서버가 필요합니다. ( 우리는 그러한 기술을 나중의 기사에서 다룰 것입니다.)

HTTP는 어떻게 클라이언트와 서버가 통신을 하는지 명확한 규칙을 제공합니다. 우리는 HTTP 그 자체를 나중에 technical article 에서 다룰 것입니다. 현재는, 이러한 것들을 기억해주세요.

  • 오직 클라이언트만이 HTTP 요청을 만들 수 있으며, 서버에게만 보낼 수 있습니다. 서버는 오직 클라이언트의 HTTP 요청에 응답할 수 있습니다. 
  • HTTP를 통해 파일을 요청할때, 클라이언트는 반드시 URL 파일들을 제공해야 합니다.
  • 웹 서버는 반드시 최소한의 에러 메시지를 포함하여 모든 HTTP 요청에 응답해야합니다. 

The MDN 404 page as an example of such error page웹 서버에서, HTTP 서버는 들어오는 요청들에 대해 응답하고, 처리할 책임이 있습니다. 

  1. 요청을 받으면, HTTP 서버는 먼저 요청된 URL이 존재하는 파일과 매칭이 되는지를 확인합니다.
  2. 만약 매칭된다면, 웹 서버는 그 파일 내용을 브라우저에게 되돌려줍니다. 만약 그렇지 않다면, 애플리케이션 서버는 필요한 파일을 구축합니다.
  3. 만약 위 둘의 과정이 처리가 불가능하다면, 웹 서버는 브라우저에게 에러 메시지를 반환합니다, 대부분의 에러 메시지는 "404 Not Found" 입니다.(이 에러는 너무 많이 발생하여 많은 웹 설계자는 404 error pages를 설계하는데 많은 시간을 소비합니다. 

정적 vs. 동적 컨텐츠

어림잡아서, 서버는 정적 혹은 동적 컨텐츠 모두 제공할 수 있습니다. 정적은 "served as-is"를 의미합니다. 정적 웹 사이트들은 설치하기 가장 쉽기때문에 우리는 당신이 첫 사이트를 정적 사이트로 만들기를 제안합니다.

동적은 서버가 컨텐츠를 처리하거나 심지어 데이터베이스로부터 오는 중에 생성하는 것을 의미합니다. 이 방법은 더 많은 융통성을 제공하지만, 웹 사이트를 구축하는데 지나치도록 복잡하게 만들면서, 전문적인 스택은 다루기 좀 더 힘들어집니다. 

당신이 지금 읽고있는 페이지를 예시로 잡으세요. 호스팅하고 있는 웹 서버에서는, 데이터베이스로부터 내용들을 받고, 형성하고 HTML 템플릿 안에 집어넣고, 당신의 결과에 보내는 애플리케이션 서버가 존재하고 있습니다. 이러한 경우, 애플리케이션 서버는  Kuma라고 불리고,  Python(Django 프레임워크를 이용한)으로 구축됩니다. Mozilla 팀은 MDN의 특수한 목적으로 Kuma를 만들었지만, 많은 다른 기술들위에서 만들어진 비슷한 애플리케이션이 존재합니다.

특별한 하나를 제안하기 힘든 애플리케이션 서버들이 많이 있습니다. 어떤 애플리케이션 서버는 블로그나 위키 혹은 전자 쇼핑 등CMSs라고 불리는 다른 것들(컨텐츠 관리 시스템) 같은 특수한 웹 사이트 분류에 서비스를 제공합니다. 만약 당신이 동적 웹 사이트를 구축한다면, 당신의 필요에 충족하는 도구를 선택하는 시간을 들이세요. 당신이 어떤 웹 서버 프로그래밍을 배우기를 원하지 않는 한(그 자체로도 흥미진진한 영역입니다!), 당신의 애플리케이션 서버를 생성할 필요가 없습니다. 그것은 휠을 다시 재발명 하는 것과 같은 일입니다.

다음 과정

이제 당신은 웹 서버에 익숙해졌습니다. 당신은:

문서 태그 및 공헌자

 이 페이지의 공헌자: woojin.jo
 최종 변경: woojin.jo,