WAS와 웹서버 차이 정리

2021. 9. 10. 16:50·Web/정리글

스프링 부트 웹 애플리케이션을 실행시키면 내장 서블릿 컨테이너인 웹서버 톰캣을 사용해서 애플리케이션이 구동된다. 이 톰캣은 "아파치 톰캣"이라는 이름을 갖고 있다. 아파치란 무엇이고, 톰캣이란 무엇인지, 웹서버의 역활은 무엇인지 알아본다.

 

Aapach

흔히 부르는 아파치는 Aapache HTTP Web Server를 의미한다. 이는 오픈 소스 소프트웨어 그룹인 아파치 소프트웨어 재단에서 만든 HTTP 웹 서버 프로그램이다. 

 

http 웹 서버는 http 요청을 처리할 수 있는 웹서버이고, 아파치 http 웹 서버는 아파치에서 만든 http 요청을 처리하는 웹 서버인 것이다. 클라이언트가 GET, PUT, UPDATE, DELETE 등의 요청을 보내면 프로그램이 그에 적절히 응답하는 기능을 한다. 현대 네트워크는 TCP/IP 프로토콜 기반에서 http 통신이 이뤄지므로 http web server는 web server라 보면 된다.

 

고로, 아파치 == 웹 서버이다.

 

Tomcat

아파치 톰캣은 아파치 채단에서 개발한 서블릿 컨테이너만 있는 웹 애플리케이션 서버이다.

 

이 톰캣을 흔히 WAS (Web Application Server)라고 말한다. WAS는 웹서버와 웹 컨테이너가 결합된 구조로 다양한 기능을 컨테이너에 구현하여 다양한 역활을 수행하는 서버를 말한다.

 

클라이언트의 요청이 있을 때 내부의 프로그램을 통해 응답 내용을 만들어서 반환하고, 이것을 클라이언트에 다시 전달해주는 역활을 하는 것이 웹 컨테이너이다.

 

아파치 웹서버는 이러한 웹 컨테이너가 없으므로 당연히 이러한 동적 요청을 처리할 수 없다.

웹서버와 WAS의 차이를 정리

웹 서버 : 정적인 HTML, 이미지를 제공하는 서버이다. 동적 서버 콘텐츠를 수행하지 못한다.

WAS : 웹서버의 역활 + 동적인 처리를 담당하는 서버이다.

 

Q. 그렇다면 WAS는 왜 웹서버를 따로 빼서 사용하는 것일까?

웹 서버는 정적인 데이터를 처리하는 서버이고, WAS는 동적인 데이터를 처리하는 서버이다. 즉 서로 하는 역활이 다르므로 Apache Tocat으로 같이 사용하는 것이다.

 

이미지나 단순 html파일과 같은 리소스를 제공하는 서버는 웹서버를 통하게하고, DB와 연결되어 데이터를 주고받거나 프로그램으로 데이터 조작이 필요한 경우 (동적 요청) WAS를 사용해야한다.

 

Servlet Container

클라이언트로 부터의 http 요청을 받아서 서블릿 (개발자가 구현한 서비스 로직)을 동작하게 한다. 톰캣의 역활을 했었던 부분으로, 서블릿 컨테이너에게 개발자가 만든 서블릿, 필터 등을 등록하는 행위가 배포 행위이다.

 

Servlet

비지니스 로직이라고 생각하면 편하다. 개발자가 직접 구현해야하는 부분이다. 스프링 부트에서 @RestControlle + @PostMapping 과 같은 애노테이션을 특정 클래스에 명시하고 해당 클래스에서 비지니스 로직을 정의하는데, 이때 작성하는 비지니스 로직이라고 생각하면 된다.

반응형
저작자표시 (새창열림)

'Web > 정리글' 카테고리의 다른 글

DB 트랜잭션 정리  (0) 2021.10.04
Exception & Transaction rollback 정리  (0) 2021.09.23
스프링 AOP 정리  (2) 2021.09.08
스프링 부트 Exception - Caused by: java.net.SocketException: Permission denied 해결  (0) 2021.09.07
JPA - 영속성 컨텍스트 정리  (0) 2021.09.06
'Web/정리글' 카테고리의 다른 글
  • DB 트랜잭션 정리
  • Exception & Transaction rollback 정리
  • 스프링 AOP 정리
  • 스프링 부트 Exception - Caused by: java.net.SocketException: Permission denied 해결
구름뭉치
구름뭉치
구름의 개발일기장
    반응형
  • 구름뭉치
    구름 개발일기장
    구름뭉치
  • 전체
    오늘
    어제
    • ALL (284)
      • 프로젝트 (23)
        • 토스페이먼츠 PG 연동 시리즈 (12)
        • JWT 방식 인증&인가 시리즈 (6)
        • 스우미 웹 애플리케이션 프로젝트 (1)
        • 스프링부트 기본 보일러 플레이트 구축 시리즈 (2)
        • 마이크로서비스 아키텍쳐 시리즈 (1)
      • 스프링 (43)
        • 스프링부트 API 설계 정리 (8)
        • 스프링부트 RestAPI 프로젝트 (18)
        • 스프링부트 WebSocket 적용기 (3)
        • 스프링 JPA 정리 시리즈 (5)
        • 스프링 MVC (5)
        • 스프링 배치 (2)
        • 토비의 스프링 정리 (2)
      • 기술 학습 (29)
        • 아파치 카프카 (9)
        • 클린 코드 (4)
        • 디자인 패턴의 아름다움 (2)
        • 모던 자바 인 액션 (7)
        • JVM 스레드 딥다이브 (7)
      • Web (25)
        • 정리글 (20)
        • GraphQL 정리글 (2)
        • Jenkins 정리글 (3)
      • 취업 (6)
      • CS (77)
        • 네트워크 전공 수업 정리 (11)
        • OSI 7계층 정리 (12)
        • 운영체제 정리 (19)
        • 데이터베이스 정리 (5)
        • MySql 정리 (17)
        • GoF의 Design Pattern 정리 (12)
      • 알고리즘 (70)
        • 백준 (56)
        • 프로그래머스 (12)
        • 알고리즘 정리본 (1)
      • 기초 지식 정리 (2)
      • 일상 (8)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    마우스
    류블라냐
    동유럽
    mx master s3 for mac
    레이저
    키보드 손목 받침대
    부다페스트
    크로아티아
    마우스 패드
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
구름뭉치
WAS와 웹서버 차이 정리
상단으로

티스토리툴바