웹 서버란?

Kim Jin Seong·2022년 3월 24일
0

Django

목록 보기
4/10
post-thumbnail

본 포스팅은 Back-end 개발 입문과 홈페이지 제작 기술 기반 마련을 위한 공부자료입니다.
Django 공식 문서와 MDN web docs를 참고자료로 작성됐습니다.

https://www.djangoproject.com/
https://developer.mozilla.org/ko/docs/Learn/Server-side/Django


목표

  • Web Server가 무엇인지에 대한 이해
  • Web Server가 동작하는 방법에 대한 전반적인 이해

개요

  • Web Server
    • 하드웨어, 소프트웨어 혹은 두 개가 같이 동작하는 것을 의미할 수 있다.
  • 하드웨어 측면에서의 Web Server
    • 웹 서버의 소프트웨어와 웹 사이트의 컴포넌트 파일을 저장하는 컴퓨터이다. ( 컴포넌트: HTML 문서, CSS, Javascript 파일, Resource 등 )
  • 소프트웨어 측면에서의 Web Server
    • 기본적으로 웹 사용자가 어떻게 호스트 파일들에 접근하는지를 관리한다.
    • 현재 포스팅에는 HTTP 서버로 제한합니다.
    • HTTP 서버의 구성
      • URL( Web Addresses )
      • HTTP
        • 브라우저가 웹 페이지를 보여주기 위해 사용하는 프로토콜
  • 브라우저가 웹 서버에 있는 파일을 필요로 할때, 브라우저는 HTTP를 통해 파일을 요청하고, 요청이 올바른 웹 서버( 하드웨어 )에 도착했을 때, HTTP 서버( 소프트웨어 )는 요청된 문서를 HTTP를 이용해 보내준다.

  • 웹 사이트를 공개하기 위해서는, 정적 또는 동적 웹 서버가 필요하다.
  • 정적 웹 서버( 혹은 스택 )
    • HTTP 서버( 소프트웨어 )가 있는 컴퓨터( 하드웨어 )로 구성
    • 서버가 요청에 대한 파일만을 그대로 브라우저에 전송하기 때문에 정적이라 부른다.
  • 동적 웹 서버
    • 정적 웹 서버와 추가적인 소프트웨어( 일반적인 어플리케이션 서버와 데이터베이스 )로 구성
    • HTTP 서버를 통해 브라우저에서 요청받은 파일을 전송하기 전에, 애플리케이션 서버가 파일을 동적으로 가공하기 때문에 동적이라고 불린다.

호스팅

  • 웹 서버는 처음에 웹 사이트의 파일과 리소스를 저장해야 한다.
    • HTML 문서
    • 이미지, CSS, Javascript 파일, 폰트, 비디오 등
  • 이 리소스 관리를 용이하게 하기 위해 로컬 컴퓨터에서 불러오는 것 보다 해당 자원을 담당하는 웹 서버에 저장하는 것이 더 편리하다.
  • 이러한 작업을 보수를 받고 대신 처리해 주는 임대 서비스를 웹 호스팅이라고 한다.
  • 장점
    • 항상 실행 중이다.
    • 항상 인터넷과 연결되어 있다.
    • 고정된 IP주소를 갖고 있다.
    • 제 3자에 의해 유지보수 된다.
  • 이런 장점 때문에 좋은 호스팅 제공자를 찾는 것은 웹 사이트 구축의 핵심 부분이다.

HTTP( Hypertext Transfer Protocol )

  • 이름과 같이 두 컴퓨터 간 Hypertext를 전송하는 방법에 대한 통신 규칙의 집합이다.
  • 특징
    • Textual
      • 모든 명령어는 기본 문자이며 사람이 읽을 수 있다.
    • Stateless
      • 서버 / 클라이언트는 이전 통신과 연관되지 않는다.
      • HTTP만 이용한다면 서버는 이전에 처리한 단계를 기억하지 못하기 때문에 이런 프로세스가 필요하다면, 애플리케이션 서버를 구성해야 한다.
  • 기억해줘!
    • 오직 클라이언트만 HTTP 요청을 만들 수 있으며, 서버에게만 보낼 수 있다.
    • 서버는 오직 클라이언트의 HTTP 요청에 응답할 수 있다.
    • HTTP를 통해 정보를 요청할 때, 클라이언트는 반드시 URL 파일을 제공해야 한다.
    • 웹 서버는 반드시 최소한의 에러 메세지를 포함해 모든 HTTP 요청에 응답해야 한다.
  • 파일을 요청받았을 때, HTTP 서버 응답 과정
    1. 요청받은 URL이 존재하는 파일과 매칭이 되는지 확인
    2. 파일 전송
      1. 파일이 웹 서버에 있다면, 웹 서버는 파일의 내용을 브라우저에게 돌려준다.
      2. 그렇지 않다면, 애플리케이션 서버를 통해 필요한 파일을 구축한다.
    3. 오류 처리
      1. 파일이 웹 서버에 없거나 애플리케이션 서버를 통한 파일 구축이 불가능하다면?
      2. 브라우저에게 에러메세지 반환

정적 컨텐츠 vs 동적 컨텐츠

  • 서버는 정적 컨텐츠와 동적 컨텐츠 모두 제공할 수 있다.
  • 정적 컨텐츠
    • “있는 그대로 제공되는 것”을 의미
    • 구축하기 가장 쉬운 방법
  • 동적 컨텐츠
    • 서버가 컨텐츠를 처리하는 것
    • 또는 컨텐츠를 데이터베이스로부터 생성하는 것
    • 파일에 대한 유연성을 제공
      • but, 기술 스택을 다루기 힘들어지고, 웹사이트 구축이 복잡해진다.
  • 애플리케이션 서버는 다양하게 존재한다.
    • Django, JAVA Spring 등
  • 만약 동적 웹 사이트를 구축할 예정이라면 필요에 맞는 도구를 선택하는 시간을 가질 필요가 있다.

Reference

https://developer.mozilla.org/ko/docs/Learn/Common_questions/What_is_a_web_server

profile
Data Study

2개의 댓글

comment-user-thumbnail
2022년 3월 24일

HTTPS도 해주세요!

1개의 답글