Published on

[ Network ] 웹 서버의 구조

Authors
  • avatar
    Name
    유사공대생
    Twitter

웹 서버란?

웹 서버는 클라이언트(일반적으로 웹 브라우저)의 요청에 응답하여 웹 페이지, 이미지, 파일 등을 전달하는 소프트웨어나 컴퓨터 시스템을 가리킨다. 주로 HTTP(HyperText Transfer Protocol)를 사용하여 정보를 주고 받는다.

정리하면, 웹 서버는 다음과 같은 역할을 수행한다.

클라이언트 요청 처리: 웹 브라우저로부터 HTTP 요청을 받아들이고, 요청된 파일(HTML 페이지, 이미지, 동영상 등)이나 데이터를 찾아서 클라이언트에게 응답한다.

정적 파일 제공: 주로 HTML, CSS, 이미지, JavaScript 파일과 같이 고정된 파일들을 제공한다. 이러한 파일들은 요청에 상관없이 동일한 내용을 제공한다.

동적 콘텐츠 처리: 일부 웹 서버는 동적인 콘텐츠를 생성하기 위해 서버 측 스크립트(예: PHP, Python, Node.js)를 실행하고 그 결과를 클라이언트에게 반환한다.

웹 애플리케이션 호스팅: 웹 서버는 웹 애플리케이션을 실행하고 관리하는데 사용된다. 이러한 애플리케이션은 데이터베이스와 상호작용하며 동적으로 콘텐츠를 생성하고 제공한다.

정적 페이지와 동적페이지

정적 페이지는 고정된 콘텐츠를 제공한다. 이는 서버에 이미 저장된 파일로, 사용자에게 동일한 내용을 제공한다. 수정이나 업데이트가 필요할 때는 해당 파일을 직접 수정해야 하며, 사용자의 상호작용에 따라 콘텐츠가 변경되지 않는다.

동적 페이지는 사용자의 요청에 따라 콘텐츠가 생성된다. 이는 실시간으로 서버에서 만들어지며, 사용자의 입력이나 다양한 데이터에 따라 콘텐츠가 변할 수 있다. 서버 측의 애플리케이션 로직이 실행되어 동적 콘텐츠를 생성하고 제공한다.

정적 페이지

image

초기 웹 서버는 페이지의 내용이 변하지 않는 정적 페이지만을 제공했다. 즉 파일의 내용이 변하지 않는 정적 리소스 (HTML, CSS, JS ··)만을 제공했다. 이 방식은 매우 쉽고 빠르지만 아래의 문제들이 발생한다.

  1. 페이지 수만큼의 정적 리소스가 웹 서버내에 저장되어야 한다. 만약 만 개의 페이지를 제공한다면 만 개의 HTML 파일이 존재해야한다. 저장 용량에 많은 부분을 차지할 뿐만 아니라 수정도 힘들다. 만약 홈페이지 로고를 바꾼다면 만 개의 HTML 파일을 모두 수정해야 하는 대작업이 벌어진다.
  2. 사용자가 페이지를 추가 할 수 없다. 사용자가 페이지를 추가하기 위해서는 웹서버 관리자에게 페이지를 구성하는 리소스를 줘야한다.

동적 페이지

이러한 문제를 해결하기 위해 웹 서버는 페이지의 내용이 변하는 동적 페이지를 제공한다. 즉 정적 리소스와 더불어 html을 동적으로 생성해 제공한다. 동적으로 리소스를 생성하는 과정에서 웹 애플리케이션 로직이 실행된다.

image

위 구조의 웹서버는 정적 리소스를 제공하고 웹 애플리케이션 로직을 수행하므로 너무 많은 일을 한다. 사용자가 많다면 아래와 같이 역할을 분담하는 편이 좋다.

image

아래와 같이 스케일 아웃도 쉽게 가능하다.

image

즉 웹서버와 WAS로 역할을 분담하면 아래의 이점을 가진다.

  • 서버 과부하 방지 : 웹 애플리케이션 로직을 수행하는 건 비용이 많이 드는 작업이다. 웹 애플리케이션 로직을 수행하는 서버와 정적 리소스를 제공하는 서버로 나눠 서버 과부하를 방지한다. 또한 웹서버의 로드밸런싱을 통해 서버 부하를 분리한다.

  • 보안 향상: 웹 서버는 DMZ에 두고 WAS는 내부망에 위치시킴으로써 외부에서 WAS로의 접근을 아예 차단한다.

  • 여러 웹 애플리케이션 실행 : 웹서버의 로드밸런싱을 통해 다양한 웹 애플리케이션을 실행할 수 있으며 요청 프로토콜에 따라 어떤 웹 애플리케이션이 동작할지 설정할 수 있다.

  • 출처

Web Server 구조