Web Server vs WAS
https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html
정적 콘텐츠(Static Pages)
ex) image, html, css, javascript 등 파일과 같이 컴퓨터에 저장된 파일
- 항상 동일한 페이지 반환
- Web Server는 파일 경로 이름을 받아 경로와 일치하는 file contents를 반환
동적 콘텐츠(Dynamic Pages)
- 인자의 내용에 맞게 동적인 contents 반환
- 웹 서버에 의해 실행되는 프로그램을 통해 만들어진 결과물(Servlet) 위에서 돌아가는 Java Program
Web Server
◽ 하드웨어: 웹 서버 소프트웨어와 웹 사이트의 구성 요소파일을 저장하는 컴퓨터 ex) HTML 문서, 이미지, CSS 스타일 시트 및 JavaScript파일
◽ 소프트웨어: 클라이언트가 서버에 페이지를 요청(HTTP)하면 정적 콘텐츠를 제공하는 서버
클라이언트 요청을 가장 앞에서 처리
ex) Apache, nginx
Web Server 기능
- HTTP 프로토콜을 기반으로 클라이언트의 요청을 서비스
- 정적인 컨텐츠 제공 ▶ WAS를 거치지 않음
- 동적인 컨텐츠 제공을 위한 요청 전달
- 클라이언트의 요청(Request)을 WAS에 전달, WAS가 처리한 결과를 클라이언트에게 전달(Response)
WAS(Web Application Server)
다양한 로직 처리를 요구하는 동적 컨텐츠를 제공하기 위해 만들어진 Application Server (Web Server + Web Container)
- HTTP를 통해 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어(소프트웨어 엔진)
- 웹 컨테이너(Web Container) 또는 서블릿 컨테이너(Servlet Conatainer)라고도 불림
- Container: JSP, Servlet을 실행시킬 수 있는 소프트웨어 ▶ WAS: JSP, Servlet 구동 환경 제공
ex) Tomcat, Jeus, JBoss
WAS 기능
- 프로그램 실행 환경과 데이터베이스 접속 기능 제공
- 여러 개의 트랜잭션 관리
- 업무를 처리하는 비즈니스 로직 수행
- Web Service 플랫폼의 역할
WEB과 WAS의 차이점
동적 처리 유무 ▶ WEB은 정적O 동적X, WAS는 정적O 동적O
✔ WEB과 WAS를 나눈 이유
자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성을 위해
톰캣5.5 이상부터 httpd의 native 모듈 사용 ▶ 정적파일 처리 시, 아파치 Httpd만 사용하는 것과 성능이 비슷
1. WAS에서 정적 처리까지 같이 하면 부하가 많이 걸리기 때문
2. 여러 대의 WAS 연결
- Load Balancing
- 장애 극복에 쉽게 대응 ▶ fail over(장애 극복), fail back 처리에 유리
3. 물리적 분리를 통한 보안 강화 ex) SSL에 대한 암복화처리에서 Web server 사용
4. 여러 웹 어플리케이션 서비스 ex) 하나의 서버에 PHP와 JAVA 함께 사용
Apache Tomcat
👉 Apache와 Tomcat의 기능은 나뉘어져 있지만, 톰캣 안에 있는 컨테이너를 통해 일부 아파치 기능을 발휘하여 합쳐 부르기도 함
Apache(Apache HTTP Server)
apache 단체에서 후원하는 http웹서버 오픈소스 프로젝트
- http 웹서버: http 요청을 처리할 수 있는 웹서버
- 클라이언트가 GET, POST, DELETE 등 메소드를 이용하여 요청하면 프로그램이 결과를 돌려줌
- 80 port
Tomcat
apache 단체에서 후원하는 WAS 오픈소스 프로젝트
- Java EE 기반, JSP와 Servlet을 구동하기 위한 서블릿 컨테이너 역할
컨테이너
동적인 데이터들을 가공하여 정적인 파일로 만들어주는 모듈
서블릿
클라이언트의 요청을 받고 요청을 처리하여 결과를 클라이언트에게 제공하는 자바 인터페이스
- 서블릿 라이프사이클
init() ➡ service() ➡ destory()
서블릿 컨테이너(servlet container)
서블릿들을 모아 관리
새로운 요청이 들어올 때마다 새로운 스레드 생성
작업이 끝난 서블릿 스레드 자동 제거
- DB연결, 다른 응용 프로그램, 상호 작용 등 동적인 기능 사용
- 8080 port
'IT > CS' 카테고리의 다른 글
[Container] 쿠버네티스(kubernetes) (0) | 2021.06.08 |
---|---|
[OS] 프로세스와 스레드 (0) | 2021.06.04 |
[Network] TCP/IP 프로토콜 (0) | 2021.06.01 |
[Container] 가상 머신과 컨테이너(feat. Docker) (0) | 2021.06.01 |
[프레임워크] Vue.js (0) | 2021.05.31 |