- Web Server: 정적인 콘텐츠(이미지, HTML 등)를 처리하고 클라이언트 요청에 직접 응답하는 서버.
- WAS(Web Application Server): 동적 콘텐츠(애플리케이션 로직 처리)를 수행하여 비즈니스 로직을 실행하고 결과를 Web Server에 전달하는 서버.
웹 서버 (Web Server):
- 클라이언트의 요청을 가장 먼저 받는 서버로, 클라이언트와 직접 통신함.
- 주요 역할은 클라이언트의 요청에 따른 정적 페이지 응답.
- 클라이언트로부터 HTTP 요청을 받아 정적인 웹 페이지를 제공하는 역할.
- 클라이언트가 웹 페이지를 요청하면 웹 서버는 해당 요청을 받아들이고, 요청에 따라 정적인 HTML, CSS, JavaScript 파일 등을 클라이언트에게 전송함.
- 만약 클라이언트가 회사 소개 페이지, 회사 로고, 약도 이미지 등과 같은 정적인 요청을 하면 웹 서버는 웹 애플리케이션 서버에 위임하지 않고 즉시 응답함.
- 웹 서버에서 직접 응답하는 대표적인 콘텐츠로는 웹 피이지(예. html, css, js), 이미지(예. png, jpg), 음악(예. mp3) 등이 있음.
- 클라이언트에서 정적 페이지 요청이 아닌 동적 페이지 요청이 있는 경우 웹 서버는 요청을 웹 애플리케이션 서버에 위임하는 역할을 함.
WAS (Web Application Server):
- 동적인 웹 애플리케이션을 실행하고 관리하는 역할.
- 클라이언트의 요청을 받아들이고, 해당 요청에 따라 동적인 콘텐츠를 생성하거나 데이터베이스와의 상호작용을 통해 데이터를 처리함.
- 웹 서버와 데이터베이스 사이에서 중개자 역할을 수행하여, 클라이언트의 요청을 처리하고 결과를 반환함.
- 애플리케이션 프로그램의 실행 결과를 웹 서버에 전달해주며, 웹 서버는 웹 애플리케이션 서버로부터 전달받은 응답 결과를 웹 클라이언트에 전송함.
웹 서버와 웹 애플리케이션 서버 구분
구분 | 역할 | 프로그램 명 |
웹 서버 | - 웹 클라이언트의 요청을 받아서 요청을 처리하고, 그 결과를 웹 클라이언트에게 응답함. - 주로 정적인 HTML, 이미지, CSS, 자바스크립트 파일을 웹 클라이언트에 제공할 때 웹 서버를 사용함. - 만약 동적 페이지 처리가 필요하다면 웹 애플리케이션 서버에 처리를 넘김. |
Apache httpd, Nginx, lighttpd, IIS 등 |
웹 애플리케이션 서버 | - 웹 서버로부터 동적 페이지 요청을 받아서 요청을 처리하고, 그 결과를 웹 서버로 반환함. - 주로 동적 페이지 생성을 위한 프로그램 실행과 데이터베이스 연동 기능을 처리. |
Apache Tomcat, JBoss, WebLogic, WebSphere, Jetty, Jeus, mod_wsgi, uWSGI, Gunicorn 등 |
*정적 페이지 처리에 특화된 웹 서버는 정적 페이지만 처리하고, 웹 애플리케이션 서버는 동적 페이지만 처리하도록 역할을 분담하는 것이 웹 애플리케이션 서버에서 정적 페이지와 동적 페이지를 모두 처리하는 것보다 훨씬 더 많은 요청을 처리할 수 있음.
정적 페이지 vs 동적 페이지
- 정적 페이지
- 누가, 언제 요구하더라도 항상 같은 내용을 표시하는 웹 페이지.
- 정적 페이지들은 해당 웹 서비스의 제공자가 사전에 준비하여 서버 측에 배치한 것으로, 동일한 리소스(URL)의 요청에 대해서는 항상 동일한 내용의 페이지를 반환함.
- 주로 HTML, 자바스크립트, CSS, 이미지만으로 이루어진 페이지가 해당됨.
- 동적 페이지
- 동일한 리소스의 요청이라도 누가, 언제, 어떻게 요구했는지에 따라 각각 다른 내용이 반환되는 페이지.
- 예를 들면 현재 시각을 보여주는 페이지나 온라인 쇼핑 사이트에서 사용자마다 다른 카트 내용을 보여주는 페이지 등이 있음.
*정적(static), 동적(dynamic)이란 용어는 사용자가 페이지를 요청하는 시점에 페이지의 내용이 유지되는가 또는 변경되는가를 구분해주는 용어. 즉, 동적 페이지에는 프로그래밍 코드가 포함되어 있어서 페이지 요청 시점에 HTML 문장을 만들어내는 것임.
출처:
- 씨익북스 편집부, 『 백엔드 개발자 』, 씨익북스(2024), 72.
- 김석훈, 『 파이썬 웹 프로그래밍 』, 한빛미디어(2015), 36-40.
- 김명호, 『 올인원 스프링 프레임워크 』, 한빛아카데미(2023), 21-22.
'Back-End' 카테고리의 다른 글
MVC란? (0) | 2024.08.18 |
---|---|
템플릿 엔진이란? (0) | 2024.08.18 |
[Spring Boot] 컨트롤러(Controller)란? +템플릿 (0) | 2024.08.12 |
Maven, pom.xml의 개념 (0) | 2024.01.19 |