Web Server

Web Server(이하, 웹 서버) 는 클라이언트의 요청에 응하여 이미지, 파일, 텍스트와 같은 정적 데이터를 제공하는 소프트웨어 구성 요소이다.

웹 서버는 하드웨어, 소프트웨어 혹은 두 개가 같이 동작하는 것을 의미할 수 있다.

  • 하드웨어 측면 에서, 웹 서버는 웹 서버의 소프트웨어와 웹 사이트의 컴포넌트 파일 들을 저장하는 컴퓨터이다. 컴포넌트 파일에는 HTML 문서, 이미지, CSS stylesheets, 그리고 JavaScript 파일들이 있다. 웹 서버는 인터넷에 연결되어 웹에 연결된 다른 기기들이 웹 서버의 데이터(컴포넌트 파일들)를 주고받을 수 있도록 한다.

  • 소프트웨어 측면 에서, 웹 사용자가 어떻게 호스트 파일들에 접근하는지를 관리한다. 웹 사용자는 URL 을 통하여 HTTP 요청을 보내면, 웹 서버는 요청된 데이터를 HTTP 를 이용해 보내준다.

how web server works

작동 방식

웹 서버는 웹 사이트의 코드와 데이터를 호스팅하는 기술이다. 브라우저에 URL을 입력할 때 이 URL은 실제로 웹 서버의 주소 식별자이다.

브라우저와 웹 서버는 다음과 같이 통신한다.

  1. 브라우저는 URL을 사용하여 서버의 IP 주소를 찾는다.
  2. 브라우저는 정보에 대한 HTTP 요청을 보낸다.
  3. 웹 서버는 데이터베이스 서버와 통신하여 관련 데이터를 찾는다.
  4. 웹 서버는 HTTP 응답으로 HTML 페이지, 이미지, 비디오 또는 파일과 같은 정적 콘텐츠를 브라우저에 반환한다.
  5. 브라우저가 정보를 표시한다.

정적 파일들 호스팅

웹 서버는 HTML, 이미지, CSS 스타일시트, JavaScript 파일, 폰트, 비디오를 포함한 관련된 것들을 저장해야한다.

컴퓨터에 있는 그 파일들을 불러올수 있지만, 그것들을 전담하는 웹 서버에 저장하는것이 훨씬 더 편리하다. 전담하는 웹 서버의 특징은 다음과 같다.

  • 항상 실행 중이다.
  • 항상 인터넷과 연결되어 있다.
  • 항상 같은 IP주소를 가지고 있다.
  • 제 3자에 의해 유지보수 된다.

이러한 이유들로, 좋은 호스팅 제공자(전담 웹 서버 서비스를 제공하는) 를 찾는 것은 당신의 웹 사이트를 구축하는 것의 핵심 부분입니다.

정적 / 동적 Web Server

정적 웹 서버 는 HTTP 서버(소프트웨어)가 있는 컴퓨터(하드웨어)로 구성되어 있다. 정적 웹 서버는 HTML, CSS, JS 파일 과 같은 정적 데이터를 제공한다.

동적 웹 서버 는 정적 웹 서버와 추가적인 소프트웨어(대부분 일반적인 웹 애플리케이션 서버와 데이터베이스)로 구성되어 있다. 추가된 웹 애플리케이션 서버가 비즈니스 로직을 추가하여 웹 서버의 응답을 계산한다.

Web Application Server

Web Application Server(이하, 웹 애플리케이션 서버) 는 비즈니스 로직을 추가하여 웹 서버의 응답을 계산한다.

동적 콘텐츠 생성, 비즈니스 로직 및 다양한 리소스와의 통합을 지원하여 웹 서버의 기능을 확장한다. 애플리케이션 코드를 실행하고 메시징 시스템 및 데이터베이스와 같은 다른 소프트웨어 구성 요소와 상호 작용할 수 있는 런타임 환경을 제공한다. 따라서 웹 애플리케이션 서버는 비즈니스 로직을 활용하여 웹 서버보다 더 의미 있게 데이터를 변환한다.

작동 방식

  1. 브라우저는 URL을 사용하여 서버의 IP 주소를 찾는다.
  2. 브라우저는 정보에 대한 HTTP 요청을 보낸다.
  3. 웹 서버는 요청을 애플리케이션 서버로 전송한다.
  4. 웹 애플리케이션 서버는 비즈니스 로직을 적용하고 다른 서버 및 서드 파티 시스템과 통신하여 요청을 수행한다.
  5. 웹 애플리케이션 서버는 새 HTML 페이지를 렌더링하고 이를 응답으로 웹 서버에 반환한다.
  6. 웹 서버는 브라우저에 응답을 반환한다.
  7. 브라우저가 정보를 표시한다.

Web Server 와의 차이점

다루는 업무

웹 서버는 웹 사이트를 호스팅하고 간단한 요청에 대한 응답을 제공한다.

반면 웹 애플리케이션 서버가 다루는 업무는 더 복잡하다. 애플리케이션 서버는 동적 콘텐츠를 생성하는 비즈니스 로직을 처리한다.

사용되는 프로토콜

웹 서버에 사용되는 기본 프로토콜은 HTTP 프로토콜이며, FTP, SMTP 를 지원하기도 한다. 이 두 프로토콜은 파일 저장 및 전송과 이메일을 용이하게 한다.

웹 애플리케이션 서버는 웹 서버에 사용되는 프로토콜 외에도 추가 통신 프로토콜을 사용하여 다른 소프트웨어 구성 요소와 통신한다. 예를 들어 원격 메서드 호출(RMI) 및 원격 프로시저 호출(RPC)을 사용할 수 있다.

콘텐츠 유형

웹 서버는 대부분 정적 콘텐츠를 제공한다. 정적 콘텐츠는 전송 전에 서버에서 수정하거나 처리할 필요가 없는 콘텐츠입니다. 예를 들어 이미지 파일(예: PNG, GIF 및 JPEG), 다운로드 가능한 문서(PDF), 비디오 및 HTML 파일은 모두 정적 콘텐츠입니다.

웹 애플리케이션 서버는 대부분 동적 콘텐츠를 제공한다. 예를 들어 데이터베이스 결과 및 처리된 HTML, 개인화된 UI 등 은 모두 동적 콘텐츠이다.

멀티스레딩

대부분의 웹 서버는 멀티스레딩을 지원하지 않는다. 웹 서버는 이벤트 루프를 사용하여 대기열에서 새로 들어오고 나가는 요청을 모니터링한다. 효율성을 높이기 위해 Non-Blocking I/O 및 콜백을 사용하여 요청을 처리한다. Non-Blocking 작업 및 이벤트 기반 아키텍처를 통해 동시 연결을 처리할 수 있다.

Non-Blocking I/O 는 작업의 완료 여부와 상관없이 다음 작업을 계속 진행할 수 있게 하는 방식 을 의미한다.

웹 애플리케이션 서버는 멀티스레딩을 사용하여 높은 확장성과 효율성을 제공한다. 요청에 외부 리소스가 필요한 경우 웹 애플리케이션 서버는 별도의 스레드를 사용하여 이러한 상호 작용을 처리한다.

출처