웹 서버와 WAS

백현균·2022년 2월 28일
0

1. Webserver

- 하드웨어 관점: 웹서버 소프트웨어가 동작하는 PC를 의미
- 웹서버의 가장 중요한 기능은 클라이언트의 요청에 따른 리소스를 전달하는 것이 가장 중요함
- 소프트웨어 관점: 클라이언트(웹브라우저, 크롤러)가 서비스에 대한 요청을 했을 경우 정적데이터 서비스를 제공
* 정적데이터
  - 이미지, html, css파일 등 변하지 않고 페이지에 웹페이지에 적용되는 데이터를 의미
  -  ex) path/index.html
  - 장점
     * 파일 전송만 하기때문에 추가 작업이 필요 없으므로 속도가 빠름
     * 웹 서버 하나만 구축하면 되므로 비용이 적음
  - 단점
     * 변하지 않는 데이터이기 때문에 서비스가 한정적임
     * 데이터의 추가, 삭제, 수정을 사람이 수동으로 작업을 해야하기 때문에 관리가 힘듦
* 동적데이터: 실시간 급상승 검색어와 같이 실시간으로 변환되어 웹페이지에 적용되는 데이터를 의미
  - ex) path/srb/pkg.Servlet?id=Test  -> Response: Test 데이터
  - 장점
     * 실시간으로 다양한 데이터를 조합하여 동적으로 생성하여 제공하므로 서비스가 다양함
     * 웹 사이트 구조에 따라 추가, 수정, 삭제 등의 작업이 용이하므로 관리가 쉬움
  - 단점
     * 실시간으로 데이터 가공, 조회 등의 작업 이후 웹페이지에 적용되기 때문에 상대적으로 속도가 느림
     * 웹서버외에 동적 데이터 가공 및 조회 등에 대한 작업 처리를 위한 별도의 어플리케이션 서버가 필요하므로 추가 비용이듦
* 웹서버 종류
  - 아파치 웹서버
     * 아파치재단에서 제공하는 웹서버이며 NCSA HTTPd 서버프로그램을 기반으로 만들어진 서버
     * 오픈소스이므로 무료이며, 다양한 서버 모듈을 제공
     * 커뮤니티가 강력하여, 자료들이 방대함
     * 운영체제에 대한 확장성이 뛰어나며, 보안수준이 좋음
     * 기능이 많아 느린측면이 있고, 오버헤드가 발생
  - MS IIS(Internet Information Service)
     * 마이크로소프트에서 제공하는 웹서버
     * ASP.NET, MSSQL등과 같은 MS 제품의 서비스와 쉽게 통합 가능
     * 간편한 UI 제공
     * 가격이 비싸며, 아파치와 Nginx에 비해 더디고 느림
   
  - 웹 서버에서 정적 vs 동적 데이터
     * 정적데이터 요청일 경우 WAS에 요청 정보를 전달하지 않고, 웹 서버내에서 정적 데이터를 전달
     * 동적데이터 요청일 경우 WAS에 요청 정보를 전달하고 WAS에서 처리된 동적 데이터 정보를 전달
   
   

2. WAS(Web Application Server)

 - 클라이언트가 웹서버에 DB조회 및 다양한 로직이 처리의 요구 등 동적인 데이터 처리 및 제공을 위해 만들어진 어플리케이션 서버
- container: 사용자 요청에 대한 처리된 동적 데이터를 정적 파일로 만들어주는 모듈
- servlet: 웹 서버에서 위임받은 클라이언트 요청을 처리하고 처리된 결과를 클라이언트에 전송
  - 라이프사이클
    * 컨테이너로 사용자 요청이 들어올 경우 init함수를 호출하여 servlet 초기화
    * service()함수에서 사용자 요청에 대한 처리를 진행
      - HTTP요청(Get,Post)을 처리하는, doGet, odPost 함수 등을 호출
    * 처리가 완료됐을 경우 destroy함수를 호출하여 servlet을 제거
  - WAS 동작 순서
    1) 웹 서버에서 사용자 요청을 컨테이너로 위임받음
    2) 컨테이너는 web.xml을 참조하여 servlet의 쓰레스 생성 및 필요 객체 생성(servlet을 메모리에 올림)
    3) 컨테이너는 서블릿을 호출하여, 서블릿의 작업 메소드를 이용하여 동적 데이터 페이지를 Response객체에 담아 컨테이너로 전달
    4) 컨테이너는 서블릿에서 전달받은 Response객체를 정적 데이터 페이지로 만들어 웹 서버로 전달
  
 

3. 웹서버와 WAS를 분리하는 이유

- 기능 분리를 하여 서버 부하 방지
  * WAS에서 정적 데이터, 동적 데이터 처리 등 모든 데이터에 대한 처리를 하게될 경우 서버의 부하가 커지게 되고, 동적 데이터 처리가 지연되므로 수행속도가 그 만큼 느려지기 때문에 단순한 정적 데이터는 웹 서버에서 동적 데이터는 WAS에서 처리하는 것이 바람직함
- 분리를 통하여 보안 강화
  * SSL에 대한 암호화,복호화 처리에 웹 서버를 사용하므로써 보안을 더 강화할 수 있음
- 로드 밸런싱 용도로 사용 가능
  * 대용량의 동적 데이터 요청일 경우, 웹 서버와 다수의 WAS를 연결하여, 하나의 WAS에서 오류가 났을 경우 다른 WAS를 사용하게 만듦으로써 오류에 대한 처리 가능
- 다양한 언어의 WAS 서비스 가능
  * 하나의 웹 서버에서 PHP, Java 어플리케이션 등 여러 언어를 함께 사용하는 웹 어플리케이션의 활용이 가능

0개의 댓글