1. 정적 웹 페이지(Static Web Page)와 동적 웹 페이지(Dynamic Web Page)
2. Web Server와 WAS(Web Application Server)
3. Web Service Architecture
4. Apache Tomcat
- 서버(Web Server)에 미리 저장된 파일(HTML, Image, JavaScript 등)이 그대로 전달되는 웹페이지
- 서버는 사용자 요청에 해당하는 저장된 웹 페이지를 보냄
- 사용자는 서버에 저장된 데이터가 변경되지 않는 한 고정된 웹 페이지를 보게 됨
- 모든 사용자는 같은 결과의 웹 페이지를 서버에 요청하고 응답 받음
Ex) image, html, css, javascript 파일과 같이 컴퓨터에 저장되어 있는 파일들
- 서버(Web Server)에 있는 데이터들을 스크립트에 의해 가공처리한 후 클라이언트에게 전송하는 웹페이지
- 사용자는 상황, 시간, 요청 등에 따라 달라지는 웹 페이지를 보게 됨
- 같은 페이지라도 사용자마다 다른 결과의 웹 페이지를 서버에 요청하고 받을 수 있음
- 우리가 보는 대부분의 웹페이지는 동적 웹 페이지
Ex) 네이버 블로그, 티스토리 등
정적 웹 페이지는 컴퓨터에서 저장된 텍스트 파일을 메모장으로 열어보듯이 저장된 그대로 보는 것이며, 동적 웹 페이지는 그런 내용들이 다른 변수들에 의해서 변경되어 보여진다. 우리가 보는 대부분의 페이지는 동적 웹페이지이다.
정적 웹페이지는 요청에 대한 파일만 전송하면 되기 때문에 빠르고 비용이 적다는 장점이 있다.
반면에, 저장된 정보만 보여줄 수 있으므로 서비스가 한정적이며 관리가 힘들다는 단점이 있다.
동적 웹 페이지는 다양한 정보를 조합하여 동적으로 정보를 제공하므로 다양한 서비스를 제공할 수 있으며 관리가 쉽다는 장점이 있다.
반면에, 사용자에게 웹 페이지를 전달하기 전에 처리하는 작업이 필요하므로 정적 웹 페이지보다 느리며 웹 서버 외에 추가 처리를 위한 WAS(Web Application Server)가 필요하다는 단점이 있다.
웹 브라우저를 클라이언트로부터 HTTP요청을 받아들이고 HTML 문서와 같은 웹 페이지를 반환하는 컴퓨터 프로그램
- 정적 컨텐츠 제공
- 동적 컨텐츠를 위한 요청 전달
웹 서버란 클라이언트가 웹 브라우저에서 어떠한 페이지 요청을 하면 웹 서버에서 그 요청을 받아 정적 컨텐츠를 제공하는 서버이다. 여기서 정적 컨텐츠란 단순 HTML 문서, CSS, JavaScript, Image 등 즉시 응답가능한 컨텐츠이다. 또한, 동적 컨텐츠 제공을 위한 요청 전달의 기능도 담당한다. 클라이언트의 요청을 WAS에 보내고, WAS가 처리한 결과를 클라이언트에게 전달한다.
인터넷 상에서 HTTP프로토콜을 통해 사용자 컴퓨터나 장치에 어플리케이션을 수행해주는 미들웨어로서, 주로 동적 서버 컨텐츠를 수행하는 것으로 웹 서버와 구별이 되며, 주로 데이터베이스 서버와 같이 수행
- DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 Application Server로 Web Server 기능들을 구조적으로 분리하여 처리하고자하는 목적으로 제시되었다.
- WAS = Web Server + Web Container
Ex) Tomcat
WAS는 웹 서버와 웹 컨테이너가 합쳐진 형태로서, 웹 서버 단독으로는 처리할 수 없는 데이터베이스의 조회나 다양한 로직 처리가 필요한 동적 컨텐츠를 제공한다. 덕분에 사용자의 다양한 요구에 맞춰 웹 서비스를 제공할 수 있다. WAS는 JSP, Servlet 등 구동환경을 제공해주기 때문에 웹 컨테이너 혹은 서블릿 컨테이너라고도 불린다.
자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성을 위해 Web Server와 WAS를 분리한다. Web Server를 WAS 앞에 두고 필요한 WAS들을 Web Server에 플러그인 형태로 설정하면 더욱 효율적인 분산 처리가 가능하다.
1. 기능을 분리하여 서버 부하 방지
WAS는 DB 조회나 다양한 로직을 처리하느라 바쁘기 때문에 단순한 정적 컨텐츠는 Web Server에서 빠르게 클라이언트에 제공하는 것이 좋다.
2. 물리적으로 분리하여 보안 강화
SSL에 대한 암복호화 처리에 Web Server를 사용
3. 여러 대의 WAS를 연결 가능
대용량 웹 어플리케이션의 경우(여러 개의 서버 사용) Web Server와 WAS를 분리하여 무중단 운영을 위한 장애 극복에 쉽게 대응할 수 있다. 예를 들어, 앞 단의 Web Server에서 오류가 발생한 WAS를 이용하지 못하도록 한 후 WAS를 재시작함으로써 사용자는 오류를 느끼지 못하고 이용할 수 있다.
4. 여러 웹 어플리케이션 서비스 가능
예를 들어, 하나의 서버에서 PHP Application과 Java Application을 함께 사용하는 경우
1. Client -> Web Server -> DB
2. Client -> WAS -> DB
3. Client -> Web Server -> WAS -> DB
2. Web Server는 클라이언트의 요청(Request)을 WAS에 보낸다.
3. WAS는 관련된 Servlet을 메모리에 올린다.
4. WAS는 web.xml을 참조하여 해당 Servlet에 대한 Thread를 생성한다. (Thread Pool 이용)
5. HttpServletRequest와 HttpServletResponse 객체를 생성하여 Servlet에 전달한다.
5-1. Thread는 Servlet의 service() 메서드를 호출한다.
5-2. service() 메서드는 요청에 맞게 doGet() 또는 doPost() 메서드를 호출한다.
5-3. protected doGet(HttpServletRequest request, HttpServletResponse response)
6. doGet() 또는 doPost() 메서드는 인자에 맞게 생성된 적절한 동적 페이지를 Response 객체에 담아 WAS에 전달한다.
7. WAS는 Response 객체를 HttpResponse 형태로 바꾸어 Web Server에 전달한다.
8. 생성된 Thread를 종료하고, HttpServletRequest와 HttpServletResponse 객체를 제거한다.
아파치는 월드와이드 웹 서버용 소프트웨어로, HTTP 아파치 서버라고도 불리는 HTTP 웹 서버이다. 리눅스나 윈도우 등 거의 모든 운영체제에서 사용할 수 있으며 구축이 쉽고, 다양한 추가기능을 가지고 있기 때문에 현재 가장 인기있는 웹서버로 이용되고 있다
apache는 소프트웨어 단체 이름으로, apache server라는 것은 이 재단에서 후원하는 오픈소스 프로젝트 커뮤니티에서 만든 http 웹 서버를 지칭하는 말이다. 한마디로, apache http server는 http 요청을 처리하는 웹 서버인 것이다. 클라이언트가 GET, POST, DELETE 등등의 메소드를 이용해 요청을 하면 이 프로그램이 어떤 결과를 돌려주는 기능을 한다.
아파치 톰캣(Apache Tomcat)은 아파치 소프트웨어 재단에서 개발한 서블릿 컨테이너(또는 웹 컨테이너)만 있는 WAS(Web Application Server)이다.
컨테이너 : JSP, Servlet을 실행시킬 수 있는 소프트웨어
서블릿(Servlet) : 클라이언트의 요청을 받고 요청을 처리하여 결과를 클라이언트에게 제공하는 자바 인터페이스
톰캣은 웹 서버와 연동하여 실행할 수 있는 자바 환경을 제공하여 자바서버 페이지(JSP)와 자바 서블릿이 실행할 수 있는 환경을 제공하고 있다. DB처리와 같은 동적인 기능들을 가공하여 HTML파일로 만들어 클라이언트에게 제공한다. (8080 포트)
기본적으로 Apache와 Tomcat의 기능은 나뉘어져 있지만 Tomcat 5.5버전부터 정적 컨텐츠 처리기능이 추가되고, Tomcat이 Apache의 기능을 포함하고 있기 때문에 Apache Tomcat이라고 부르고 있다.
https://blog.naver.com/insaweb/221650456057
https://titus94.tistory.com/4
https://codechasseur.tistory.com/25
https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html
https://ko.wikipedia.org/wiki/아파치_톰캣
https://namu.wiki/w/아파치%20HTTP%20서버
잘 정리되어 있는 글 잘 보고 갑니다!
추가로 작은 오타가 있어서 알려드립니다.
[Client -> Web Server -> WAS -> DB] 구조의 동작 과정
번호가 2부터 시작되네요