ultra_dev
웹서버와 WAS의 차이 본문
Web Server란?
- 클라이언트의 request(요청)를 받아 정적인 컨텐츠(html, css, js)를 response(응답)하는 서버
WAS 란?
- Web Application Server
- 클라이언트의 request(요청)를 받아 DB 조회나, 어떤 로직을 처리해야하는 동적인 컨텐츠를 response(응답)하는 서버
웹서버는 정적, WAS는 동적
결론적으로 어떤 타입의 컨텐츠(동적, 정적)를 제공하냐는 것
웹 서버와 WAS는 각각 독립적으로 존재 가능
대부분의 WAS는 정적인 컨텐츠를 제공해주고 있기 때문에, 웹 서버 없이 WAS 만 존재할 수 있음
즉, WAS는 웹 서버를 포함하는 개념이라고 할 수 있음
그렇다면 WAS 외에 굳이 웹서버를 사용하는 이유는?
WAS가 해야할 일의 부담을 줄이기 위해서
- WAS 앞에 웹 서버를 둬서 웹 서버에 정적인 문서만 처리하도록하고, WAS는 애플리케이션의 로직만 수행하도록 기능을 분배해서 서버의 부담을 줄인다
WAS의 환경 설정 파일을 외부에 노출시키지 않도록 하기 위해서
- 클라이언트와 연결하는 포트가 직접 WAS에 연결이 되어 있다면 중요한 설정 파일들이 노출될 수 있기 때문에 WAS 설정 파일을 외부에 노출시키지 않도록 하기 위함
- 웹 서버와 WAS에 접근하는 포트가 다르기 때문에 WAS에 들어오는 포트에는 방화벽을 쳐서 보안을 강화할 수도 있다.
was는 웹서버+웹컨테이너 느낌..?
+
웹 컨테이너의 정의
- 웹 컨테이너는 Java 서블렛과 상호작용하는 WAS의 구성요소이다.
- 서블릿의 생명주기를 관리한다.
- ServerSocket 생성 등 통신을 지원한다.
- 선언적 보안 관리
- 보안에 관련된 내용을 서블릿, 자바 클래스 코드 안에 하드 코딩할 필요가 없다.
- 즉, 필요한 데이터나 값, 코드 등을 직접 타이핑해서 집어 넣는 일이 없다.
- 보안 관리는 배포 서술자(web.xml)에다가 기록하면 된다.
쉽게 말해 WAS 내부에서 개발자 대신 서블릿을 관리하는 녀석
WAS 별로 다양한 종류의 컨테이너를 내장하고 있으며, 이들 중 서블릿에 관련된 기능을 모아 놓은 것을 서블릿 컨테이너라 부른다.
+++
서블릿
Dynamic Web Page를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술
웹을 만들때는 다양한 요청(Request)과 응답(Response)이 있기 마련이고 이 요청과 응답에는 규칙이 존재
서블릿은 이러한 웹 요청과 응답의 흐름을 간단한 메서드 호출만으로 체계적으로 다룰 수 있게 해주는 기술
'Computer Science' 카테고리의 다른 글
절차지향 / 객체지향 / 함수형 프로그래밍이란 무엇이고 차이점은 무엇인가? (0) | 2023.04.04 |
---|---|
트랜잭션이란 (0) | 2023.04.03 |
TCP / UDP (0) | 2023.03.31 |
프로세스(Process)와 쓰레드(Thread)의 차이 (0) | 2023.03.31 |
Collection(List, Map, Set) (2) | 2023.03.30 |
Comments