독서,검색/기타

230110 웹서버와 WAS의 차이

NOG 2023. 1. 10. 08:36

 

 

정적 컨텐츠 (Static)

누가 언제 서버에 요청하더라도 동일하게 내용을 보여주는 것 

Html, Css, Js, Image 같은 요소들로 이미 만들어진 결과물을 사용자에게 보여주는 것

쿠팡의 상단 카테고리바, 유튜브 로고 등

 

 

동적 컨텐츠 (Dynamic)

누가 언제 어떻게 서버에 요청했는지에 따라 다른(변화하는) 내용이 보여지는 것

어떤 사용자가, 언제, 어떤 기기로 접속했는지에 따라 웹페이지가 달라지는 데이터

PHP, JSP 파일등 데이터의 처리가 필요하다.

쿠팡의 장바구니, 유튜브 맞춤 채널 등 

 

 

'''

정적파일, 정적 페이지, 동적 페이지 등  비슷한 개념으로 이해함.

'''

 

웹서버

클라이언트가 요청한 정적인 콘텐츠를 HTTP 프로토콜을 통하여 제공해주는 서버

1.정적인 콘텐츠 제공

2. 동적인 요청클라이언트로부터 들어왔을 때, 해당 요청을 웹 서버에서 처리할 수 없기 때문에 컨테이너(Container)로 보내주는 역할

 

Apache, Nginx,  IIS 등이 있음.

 

컨테이너

동적인 데이터들을 처리하여 정적인 페이지로 생성해주는 소프트웨어 모듈

동적으로 처리해야 하는 부분을 웹서버 대신 처리해서 웹 서버에 정적인 파일로 만들어서 보내주는 모듈

 

JSP,Servlet 구동 환경을 제공해 주어 컨테이너라고 불림, 

(JSP, servlet을 실행시킬 수 있는 소프트웨어 = 서블릿 컨테이너  = 웹 컨테이너)

 

'''

자바 서블릿(Java Servlet)은 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램

서블릿 컨테이너는 서블릿을 관리해주는 것 : 서블릿 객체를 생성, 초기화, 호출 종료하는 생명 주기를 관리, 웹서버와의  손 쉬운 통신 지원 등 을 함.

'''

WAS (Web Application Server)

 

이러한 웹 서버와 컨테이너를 붙여놓은 서버라고 보면 됨.

WAS는 웹서버와 컨테이너의 기능을 다 할 수 있다.

웹서버 혼자서 처리할 수 없는 데이터베이스 조회나 다양한 로직 처리가 필요한 동적 컨텐츠 제공함.

 

 

 

Tomcat, Jeus, JBoss 같은 것들이 있다

 

'''

Tomcat은 아파치의 기능도 포함하여 Apache Tomcat 이라고도 불림

'''

 

Web Service Architecture

 

웹 서비스는 아래와 같이 다양한 구조를 가짐.

 

(1) Client -> 웹 서버 - > DB

(2) Client -> WAS -> DB

(3) Client -> 웹 서버 -> WAS -> DB

 

서버 부하 방지, 보안 강화를 위해 웹서버와 WAS를  분리하여 구성한다.

WAS는 DB 조회나 다양한 로직을 처리에 집중하고 단순한 정적 컨텐츠는 웹 서버에 맡긴다.

 

 

(3) 의 웹서비스 구조

 

Clinet가 웹 서버에 HTTP 요청을 보내면 웹 서버는 정적인 컨텐츠 요청은 바로 응답하고, 동적인 컨텐츠 요청은 WAS에게 넘겨서 처리하고 결과를 WAS에게 받아서 클라이언트에게 넘겨준다.

 

 

'''

알아보면서 추가적으로 찾은 것:

WAS의 사용언어는 PHP,JSP,ASP

쿼리는 DB에 정보조회를 요청하는 것

데몬은 유닉스(Unix) 운영체제에서 부팅 시 자동으로 켜져, 눈에 보이지 않는 백그라운드에서 계속 실행되는 프로세스(프로그램) ~d

'''

 

 

 

출처, 참고

https://melonicedlatte.com/web/2019/06/23/210300.html

https://code-lab1.tistory.com/199

https://hgney.com/1044

 

 

===== 추가

1. Client => React로 구성된 UI에서 특정한 폼에 데이터를 입력하여 백엔드 서버(Spring)로 API 요청이 시작된다.

 

2. Nginx는 정적 컨텐츠 제공해주고 동적 요청을  전달하는데 리버스 프록시로서 동작하여 적절한 백엔드 서버로 전달

 

/*

웹 서버 사용 이유 => 1. 보안 (예를 들면 프록시) 2. 로드밸런싱 (트래픽 분산)  3. 로깅(어떤 http 요청 해놓았는지 남기는 기능) 

flask 같은 경우 wsgi 서버와 함꼐 구성되어 사용

사용자인증, 결제 등등 기능별로 다양한 백엔드 서버가 구성될 수 있다.

*/

 

3. Tomcat 서버(Java 애플리케이션 호스팅 및 클라이언트 요청에 대한 로직 처리) 내에서 호스팅되는 Spring에서 처리하고 데이터베이스에 저장과 같은 로직들을 수행

 

/*

Tomcat은 Java 애플리케이션(Spring 등)을 직접 실행합니다. Tomcat 내부에서 Spring은 서블릿이나 컨트롤러 형태로 존재

*/

 

4. Spring이 Tomcat을 통해 Nginx로 반환하고 클라이언트에게 전달

 

5. React UI에서 사용자에게 표시된다.

 

/*

미들웨어는 서로 다른 서비스가 통신을 원활하게 하기 위해 중개 역할을 수행. 넓은 개념으로 쓰여 WAS를 포함하는 개념으로도 쓰인다. 예를 들면 메세지 큐를 이용하여 한번에 여러 요청을 동시에 처리할 수 있다.(비동기적 통신)

*/

'독서,검색 > 기타' 카테고리의 다른 글

230602 DMZ 와 NAT  (0) 2023.06.02
230523 서브넷 마스크  (0) 2023.05.23
230106 Xampp란  (0) 2023.01.06