학교 공부

[Spring] Web Architecture- 동적 페이지 / 정적 페이지

연듀 2021. 8. 30. 12:47

 

Static Pages(정적 페이지)

 

 

Web server(80)을 사용한다.

 

과정


1. Client(브라우저, 모바일 앱)가 HTTP라는 프로토콜을 이용해서 페이지를 요청한다.(GET /path/index.html)
   이 때 index.html은 누가 요청해도 항상 동일한 정적인 페이지이다.


2. 웹 서버가 요청을 받고 FileSystem에서 읽어 들여 client에 던져준다.

 


=> 웹서버가 pathname을 읽고 해당하는 파일을 client에 돌려줌ex) html, img, video

 

 

 

 

 

Dynamic Pages(동적 페이지)

Web Application Server(8080)을 활용한다.

 

과정


1. uid 인자가 다른 HTTP를 Web Application Server(WAS)에 보낸다.
(GET /srv/pkg.Servlet?uid=Alice)


2. WAS가 가지고 있는 Servlet은 동적인 처리를 담당하는 클래스이다. 자바기반의 언어로, JVM위에서 동작한다.
servlet에 doGet(req,res)라는 메서드를 보내는데 사용자가 입력한 정보(Alice)를 req라는 인자로 받아
데이터베이스에 보낸다.


3. 데이터베이스의 정보를 바탕으로 동적인 페이지를 생성해 client에게 보여준다.

 

 

=>사용자의 정보에 따라 사용자마다 다른 페이지를 보여준다. 

ex) 은행(사용자마다 계좌 정보가 다름) 

 

 

 

 

Three Tier Architecture

 

1. Client(브라우저, 모바일앱)에서 request를 받아

정적인 페이지일 경우 Web Server에서 모두 처리를 하고,

동적인 페이지일 경우 WAS에게 전달을 한다.

 

 

2. WAS에서는 JSP, Servlet을 수행해 동적인 처리를 한다.

 

 

3. 데이터베이스에 정보를 보낸다.

 

 

*웹서버가 없더라도 WAS가 정적인 페이지를 서비스 해줄 수도 있다.

하지만 기본적으로 WAS는 동적인 페이지를 서비스 하기 때문에

정적인 페이지의 양이 많다면 부하를 받아 동적페이지에 지연이 가는 성능상 문제가 발생할 수 있다.

이럴 경우에는 Web Server를 별도로 두는 것이 바람직하다. 

 

 

 

 

Web Server/ Web Application Server 

 

Web server

 

(e.g the Appach http server)

정적 페이지를 서비스 한다.(HTML, images, audio, text)

load balancing 기능도 수행한다.

 

 

 

Web Applicaiton Server

 

 

(e.g the Tomcat)

동적 페이지를 서비스 한다.

사용자가 많아지면 그에 따라 많은 WAS들이 필요하다.

Servlet Container라고도 부른다. 하나의 Web App에 다수의 Servlet이 존재한다.

Multi-threading - request가 들어올때마다 Thread를 만들고 그 쓰레드는 service() 함수를 호출한다.

많은 request가 들어오면 많은 thread가 발생하고 시스템 부하가 일어날 수 있기 때문에 

Thread Pool을 만들어 미리 제한적인 개수만큼 처리하기도 한다.

 

 

 

 

설치해야할 소프트웨어

 

 

WAS - Apache Tomcat

 

JDK installation

tomcat을 설치할 경우 JDK도 설치 해야 한다.

 

MySQL(데이터베이스)

 

IDE - Eclipse (or intellij) (통합개발환경)

 

 

 

 

 

 

=> 톰캣이라는 Web Aplication Server 위에서 Spring이라는 프레임워크를 사용한다.