웹 서버는 무엇이고, 웹 서버의 기능 및 역할
웹 서버란?
웹 서버는 크게 하드웨어와 소프트 웨어로 나뉠 수 있지만 우리가 흔히 말하는 웹 서버는 웹 브라우저로부터 HTTP 요청을 받아들이고, HTML 문서와 정적 컨텐츠에 따라 HTT 응답을 해주는 프로그램.
하드웨어 측면
웹 서버는 웹 서버의 소프트웨어와 웹 사이트의 컴포넌트 파일(HTML문서, 정적/동적컨텐츠)을 저장하는 컴퓨터.
웹 서버는 인터넷에 연결되어 웹에 연결된 다른 기기들이 웹 서버의 데이터(컴포넌트 파일)를 주고 받을 수 있도록 함.
소프트웨어 측면
웹 서버는 웹 사용자가 어떻게 호스트 파일들에 접근하는지 관리.
HTTP 서버는 URL(web addresses)과 HTTP(나의 브라우저가 사용하는 프로토콜)의 소프트웨어 일부임.
아래 그림을 보면 브라우저가 웹 서버에서 불려진 파일을 필요로 할 때, 브라우저는 HTTP를 통해 파일을 요청함.
요청이 올바른 웹 서버(하드웨어)에 도달하였을 때, HTTP 서버(소프트웨어)는 요청된 문서를 HTTP를 이용해 보내줌.
웹 사이트를 공개하기 위해서는 정적/동적 웹 서버가 필요함.
웹 서버의 기능
웹 서버의 주 기능은 웹 페이지를 클라이언트에게 전달하는 것.
클라이언트와 서버와의 커뮤니케이션은 HTTP를 사용해 수행함.
웹 브라우저는 HTTP를 사용한 요청을 보내는 것으로 커뮤니케이션을 시작하며 서버는 해당 요청에 대한 응답을 제공함.
웹 서버의 공통된 기능
Virtual hosting : 하나의 IP 주소를 사용하는 많은 웹 사이트들을 지원.
Large file support : 32 bit OS에서 2GB 이상의 파일을 지원.
Bandwidth throttling : 네트워크의 포화상태를 방지하기 위한 응답속도 제한.
Server-side scripting : 웹 서버 단에서 실행되는 다이나믹 웹 페이지 생성 언어 지원.
웹 서버(web-server)와 WAS(Web Application Server)의 차이
웹 서버는 정적 컨텐츠를 제공하는 서버이고, WAS는 동적 컨텐츠를 제공하기 위해 만들어진 Application 서버임.
WAS는 프로그램 실행 환경과 DB 접속 기능을 제공하고, 여러 개의 트랜잭션을 관리 가능, 그리고 비지니스 로직 수행 가능.
웹 서버에는 Apache, NginX 등이 있음.
WAS에는 Tomcat, JBoss, WebSphere 등이 있음.
웹 서버와 WAS는 분리해야하는 이유
1. 서버 부하 방지
WAS와 웹 서버는 분리하여 서버의 부하를 방지해야 한다. WAS는 DB 조회나 다양한 로직을 처리하고, 단순한 정적 컨텐츠는 웹 서버에서 처리해줘야 함. 만약 정적 컨텐츠까지 WAS가 처리한다면 부하가 커지게 되고, 수행 속도가 느려질 것임.
2. 보안 강화
SSL에 대한 암호화, 복호화 처리에 웹 서버를 사용 가능.
3. 여러 대의 WAS 연결 가능
로드 밸런싱을 위해 웹 서버를 사용할 수 있다. 여러 개의 서버를 사용하는 대용량 웹 어플리케이션의 경우 웹 서버와 WAS를 분리하여 무중단 운영을 위한 장애 극복에 쉽게 대응할 수 있음.
4. 여러 웹 어플리케이션 서비스 가능
하나의 서버에서 PHP, JAVA 애플리케이션을 함께 사용할 수 있음.
이러한 이유로 웹 서버를 WAS 앞에 두고 필요한 WAS들을 웹 서버에 플러그인 형태로 설정하면 효율적인 분산 처리가 가능하다.
웹 서비스 구조
웹 서비스는 다양한 구조를 가질 수 있음.
1. Client ▶ 웹 서버 ▶ DB
2. Client ▶ WAS ▶ DB
3. Client ▶ 웹 서버 ▶ WAS ▶ DB
참고 사이트
https://developer.mozilla.org/ko/docs/Learn/Common_questions/What_is_a_web_server
https://dataonair.or.kr/db-tech-reference/d-lounge/expert-column/?mod=document&uid=52353
https://code-lab1.tistory.com/199