💡 학습 목표
1. 웹 서버에 대한 개념을 이해하자. 2. 웹 애플리케이션 서버(WAS) 대한 개념을 알자.
웹 서버란? - 정적 콘텐츠 제공자
웹 서버는 클라이언트(주로 웹 브라우저)로부터 HTTP 요청을 받아 정적인 HTML 파일, 이미지, CSS 파일 등을 제공하는 서버입니다. 웹 서버는 요청된 리소스를 클라이언트에게 그대로 반환합니다. 웹 서버는 일반적으로 특정 폴더(웹 루트 디렉토리)에 정적 콘텐츠를 저장합니다. 클라이언트의 요청이 들어오면, 웹 서버는(컴퓨터) 이 폴더에서 요청된 파일을 찾아서 클라이언트에게 전달합니다. 가장 유명한 웹 서버로는 아파치 HTTP 서버(Apache HTTP Server)와 Nginx가 있습니다.
도서관에서 사서에게 특정 책을 요청하면, 사서는 책장에 있는 책을 찾아서 여러분에게 그대로 전달합니다. 사서가 직접 책을 쓰거나 내용을 변경하지는 않습니다.
즉, 인터넷에 연결된 컴퓨터에서 누구나 접근할 수 있는 규칙을 정한 특정 폴더 안에 넣어둔 정적인 파일들을 제공해주는 프로그램입니다. 이 프로그램을 웹 서버라고 하며, HTML 파일, 이미지, CSS 파일 등과 같은 정적인 콘텐츠를 클라이언트(웹 브라우저)에게 제공합니다.
웹 서버의 주요 기능
- HTTP 요청 처리: 클라이언트로부터 HTTP 요청을 받아 처리합니다.
- 정적 콘텐츠 제공: HTML 파일, 이미지, CSS 파일 등 정적인 리소스를 제공하는 역할을 합니다.
- 요청된 리소스 반환: 클라이언트가 요청한 리소스를 찾아서 그대로 반환합니다. ( index.html 파일을 요청하면, 웹 서버는 웹 루트 디렉토리에서 index.html 파일을 찾아 클라이언트에게 전달합니다.)
웹 애플리케이션 서버(WAS)란? - 동적 콘텐츠 제공자
웹 애플리케이션 서버(WAS)는 동적인 웹 애플리케이션을 실행시키기 위한 서버입니다. WAS는 서블릿, JSP와 같은 동적 콘텐츠를 처리하고 비즈니스 로직을 실행합니다. WAS는 주로 데이터베이스와 연동하여 동적인 데이터를 생성하고 클라이언트에게 반환합니다. 유명한 WAS로는 Apache Tomcat, JBoss, WebSphere 등이 있습니다.
레스토랑 주방장 손님이 메뉴를 주문하면, 주방장은 그 주문을 받아서 재료를 사용해 요리를 만듭니다. 주방장은 단순히 주문을 받아 전달하는 것이 아니라, 주문에 따라 직접 요리를 만들어 제공하는 역할을 합니다.
즉, 웹 서버로부터 오는 동적인 요청을 처리하는 서버를 말합니다. 웹 서버와 컨테이너를 붙여놓은 서버라고 생각할 수 있습니다.
WAS의 주요 기능
- 동적 콘텐츠 생성 (서블릿, JSP 등)
- 비즈니스 로직 처리
- 데이터베이스와 연동
- 세션 관리 및 트랜잭션 관리
웹 서버와 WAS의 차이점
항목 웹 서버 웹 애플리케이션 서버 (WAS)
주요 기능 | 정적 콘텐츠 제공 | 동적 콘텐츠 생성 및 비즈니스 로직 처리 |
예시 | Apache HTTP Server, Nginx | Apache Tomcat, JBoss, WebSphere |
비유 | 도서관 사서 | 레스토랑 주방장 |
함께 사용하는 이유
웹 서버와 WAS는 보통 함께 사용됩니다. 웹 서버는 클라이언트로부터의 모든 요청을 받으며, 정적 콘텐츠에 대한 요청은 직접 처리하고, 동적 콘텐츠에 대한 요청은 WAS로 전달합니다. 이는 시스템의 성능과 보안을 향상시키는 데 도움이 됩니다.
도서관(웹 서버)에서는 책(정적 콘텐츠)을 직접 제공하고, 도서관에서 운영하는 카페(WAS)에서는 주문한 음료나 음식(동적 콘텐츠)을 만들어 제공합니다. 두 시설은 서로 협력하여 방문객의 다양한 요구를 충족시킵니다.
정리
- 웹 서버: 정적 콘텐츠를 제공하는 서버. 클라이언트의 요청을 받아 HTML 파일, 이미지 등을 반환합니다. 예를 들어, Apache HTTP Server, Nginx 등이 있습니다.
- 웹 애플리케이션 서버 (WAS): 동적 콘텐츠를 생성하고 비즈니스 로직을 처리하는 서버. 서블릿과 JSP를 실행하고 데이터베이스와 연동하여 데이터를 처리합니다. 일반적으로 WAS는 웹 서버와 통합되어 동작하며, 클라이언트의 요청을 처리하여 직접 응답하거나, 필요한 경우 웹 서버를 통해 클라이언트에게 응답을 전달합니다. 예를 들어, Apache Tomcat, JBoss, WebSphere 등이 있습니다.