본문 바로가기
스터디/IT 기초지식

웹 작동 원리/WAS(Web Application Server)

by Baekee 2021. 9. 4.
웹 서비스 구조(Web Service Architecture)
  • Client → Web Server → DB
  • Client → WAS → DB
  • Client → Web Server → WAS → DB

[웹 서비스 구조 예시]

 

1. Web Server는 웹 브라우저 클라이언트로부터 HTTP 요청을 받는다.
2. Web Server는 클라이언트의 요청(Request)을 WAS에 보낸다.
3. WAS는 관련된 Servlet을 메모리에 올린다.
4. WAS는 web.xml을 참조하여 해당 Servlet에 대한 Thread를 생성한다. (Thread Pool 이용)
5. HttpServletRequest와 HttpServletResponse 객체를 생성하여 Servlet에 전달한다.
   Thread는 Servlet의 service() 메서드를 호출한다.
   service() 메서드는 요청에 맞게 doGet() 또는 doPost() 메서드를 호출한다.
   protected doGet(HttpServletRequest request, HttpServletResponse response)
6. doGet() 또는 doPost() 메서드는 인자에 맞게 생성된 적절한 동적 페이지를 Response 객체에 담아 WAS에 전달한다.
7. WAS는 Response 객체를 HttpResponse 형태로 바꾸어 Web Server에 전달한다.
8. 생성된 Thread를 종료하고, HttpServletRequest와 HttpServletResponse 객체를 제거한다.

자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성 을 위해 Web Server와 WAS를 분리

Web Server를 WAS 앞에 두고 필요한 WAS들을 Web Server에 플러그인 형태로 설정 시,
                                                                                             더욱 효율적인 분산 처리 가능

 

* Web Server : 처리 요청/정적 데이터(html, css, javascript, image 등 컴퓨터에 저장되어 있는 파일) 처리

                                  -> 서버 부하 방지/보조 역할

                     HTTP 프로토콜 기반으로 하여 클라이언트의 요청을 서비스하는 기능 담당

                     항상 동일한 페이지 반환

                    파일 경로 이름을 받아 경로와 일치하는 파일 내용 반환

                    기능을 분리하여 서버 부하 방지

                    SSL에 대한 암복호화 처리에 사용

                    여러 대의 WAS 연결 가능 및 여러 웹 어플리케이션 서비스 가능

                    Ex) Apache Server, Nginx, IIS(Windows전용 웹 서버) 등

* Web Container : JSP, Servlet 구동 환경 제공/동적 데이터 처리(DB 접속, 외부 시스템과의 연동 등)

                                                                  => 서버에서 직접 처리하지 못하기 때문에 WAS에서 지원받아 처리

                        * JSP(Java Server Pages) : HTML 소스코드 내부에 Java 소스코드 작성(편리) 

                                                         컴파일 시, Servlet 파일로 변환되어 JSP 태그 분해 추출하여 HTML을 변환

                        * Servlet : 웹 페이지를 동적으로 생성하기 위한 서버  측 프로그램

                                     Java 기반, WAS 위에서 컴파일되고 동작됨

                                     Java 소스코드 내부에 HTML 소스코드(불편/효율성↓)

                                     doGet()/doPost()를 통해 구현

 

* WAS(Web Application Server) : 클라이언트/서버 환경보다 HTTP를 통해  웹 환경을 구현하기 위한 미들웨어

<Web Server + Web Container> 동적 처리를 하기위한 어플리케이션 서버

                                            Web Container/Servelet Container 라고도 불리움

                                                    * Container : JSP, Servlet을 실행시킬 수 있는 소프트웨어

                                          

데이터 접근 관리, 세션 관리, 트랜잭션 관리 등을 위한 라이브러리 제공

                                           Web Server 기능을 분산 처리하고자 하는 목적으로 분산 환경에서 사용

                                           HTTP 세션 처리를 위한 웹 서버 기능뿐만 아니라 필수 기업 업무까지 구현 가능

                                                                                                                   (Java, EJB 컴포넌트 기반)

                                           

 

                                           Ex) GlassFish : GlassFish Community에서 제공/NetBeans 개발 툴과 연동

                                               JBoss : Eclipse Foundation에서 제공, 빠른 처리 속도가 요구되는 경우 사용

                                               Jetty : RedHat, JBoss에서 제공, 오픈 소스 제품을 이용하는 경우 사용

                                               JEUS : TmaxSoft에서 제공, 대량의 안정적인 거래 처리가 요구되거나

                                                                                                적시의 기술 지원이 필요한 경우 사용

                                               Resin : Caucho Technology에서 제공, 빠른 처리 속도가 요구되는 경우 사용

                                               WebLogic : Oracle Corporation에서 제공,

                                                              대량의 안정적인 거래 처리가 요구되는 경우 사용

                                               WebSphere : IBM에서 제공, 대량의 안정적인 거래 처리가 요구되는 경우 사용

                                               apache tomcat(Tomcat)

 

* Apache Tomcat

    : 아파치 소프트웨어 재단에서 개발한 서블릿 컨테이너(또는 웹 컨테이너)만 있는 웹 애플리케이션 서버

     웹 서버와 연동하여 실행할 수 있는 자바 환경을 제공

     자바서버 페이지(JSP)와 자바 서블릿이 실행할 수 있는 환경 제공

     관리툴을 통해 설정을 변경할 수 있지만, XML 파일을 편집하여 설정할 수 있음

     HTTP 서버도 자체 내장하기도 함

     Apache Licence, Version 2를 채용한 오픈소스 소프트웨어

     자바서버 페이지이나 자바 서블릿를 실행하기 위한 서블릿 컨테이너 제공

    상용 웹 애플리케이션 서버에서도 서블릿 컨테이너로 사용하는 경우 많음

    버전 5.5 이후는 기본적으로 Java SE 5.0 이후와 대응

 

-  클라이언트가 요청하지 않으면 서버의 응답을 받을 수 없음

     => 그래서 만들어진 것이 Websocket


* Websocket : 하나의 TCP 접속에 전이중 통신 채널을 제공하는 컴퓨터 통신 프로토콜

                  반이중방식(HTTP 풀링)에 비해 더 낮은 부하를 사용하여 웹 브라우저(클라이언트 애플리케이션)과                           웹 서버 간의 통신 가능 및 서버와의 실시간 데이터 전송 용이하게 함 

                 서버가 내용을 클라이언트에 보내는 표준화된 방식 제공

                 연결이 유지된 상태에서 메시지들을 오갈 수 있게 허용

                 양방향 대화 방식은 클라이언트와 서버 간에 발생할 수 있음

                 통신은 TCP 포트 80(TLS 암호화 연결의 경우 443)를 통해 수행

                 방화벽을 통해 웹이 아닌 인터넷 연결을 차단하는 일부 환경에 도움이 됨

                 단순 양방향 브라우저-서버 통신은 코멧 등의 스톱갭(stopgap) 기술을 사용하는 비표준 방식으로 수행됨

 

                 Ex) 쇼핑몰 실시간 상담 채팅

 

 

 

출처 : 위키백과

        이기적 정보처리기사 필기 2021
        https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html

        https://javacpro.tistory.com/43

댓글