본문으로 바로가기

공부를 하면서 세 용어를 계속 혼용해서 사용하다 보니.. 점점 헷갈리기 시작하였다.

이참에 제대로 이해하고 넘어가기 위해 정리해보려고 한다.

 

둘을 간단하게 정리한 내용은 다음과 같다.

 

https://jmxx219.tistory.com/45?category=1053819

 

[WEB] 웹 서버, 웹 애플리케이션 서버

웹 서버(Web Server) HTTP 기반으로 동작 정적 리소스 제공, 기타 부가기능 정적(파일) HTML, CSS, JS, 이미지, 영상 웹 애플리케이션 서버(WAS - Web Application Server) HTTP 기반으로 동작 웹 서버 기능 포함..

jmxx219.tistory.com

 

가장 헷갈렸던 부분은 Web Container와 WAS의 용어였다. 거기에 Servlet Container 까지 합쳐지면서 더 혼동 오기 시작한 것 같다.

 

 

Static vs Dynamic Pages

정적 페이지

  • DB에 정보를 가져오거나 별로의 처리가 없이, 동일하게 보여주는 페이지

 

동적 페이지

  • 요청에 따라 서버가 DB에서 정보를 가져와 일을 처리하고 결과가 포함된 파일을 보여주는 페이지

 

 

WAS(Web Application Server)

WAS = Web Server + Web Container

  • J2EE의 스펙을 구현하며, Servlet이나 Jsp로 작성된 애플리케이션을 실행하는 소프트웨어(구동 환경 제공)
  • WAS는 다양한 종류의 Web Container를 내장하고 있음(Servlet, JSP, EJB Container 등등)
  • ex) Tomcat, JBoss, Jeus, Web Sphere 등등

 

Tomcat은 Servlet Container이면서도 WAS의 역할을 하고 있다.
하지만 Tomcat은 J2EE 스펙을 모두 구현하고 있지는 않기 때문에 WAS라고 칭하기도, Servlet Container라고 칭하기도 하는 것 같다.
Tomcat에 대한 내용은 추가적으로 정리할 생각이다. 

 

Web Server

  • 클라이언트가 요청한 정적 콘텐츠를 HTTP 프로토콜을 이용하여 정적 페이지를 제공(응답)
  • 동적인 요청이 들어왔을 때, 해당 요청을 Web Container에 요청 전달
    • 이후 처리한 결과를 받으면 클라이언트에게 응답
    • Web Server는 동적 콘텐츠 처리 불가능
  • ex) Nginx, Appach HTTP Server, IIS

 

Web Container(Servlet Container)

  • WAS 내부에서 동적인 데이터들을 처리하여 정적인 페이지로 생성해주는 모듈
  • 웹 서버는 정적 콘텐츠만 클라이언트에게 보낼 수 있기 때문에 동적으로 처리해야하는 부분들을 담당
  • JSP, Servlet을 실행시킬 수 있는 소프트웨어

 

CGI(Common Gateway Interface)

웹 서버와 외부 프로그램 사이에서 정보를 주고 받는 인터페이스
웹 서버에서 동적인 데이터를 반환하기 위해서는 동적 데이터 처리를 위한 요청에 알맞은 프로그램과 그 프로그램에 알맞게 넘겨주는 중간자 역할을 하는 프로그램이 필요하다. 그 역할을 하는 것이 CGI이며 PHP, Perl, Python과 같은 언어는 Apache를 통해 CGI를 적용시키는 것이 가능하다.
하지만 Java는 CGI 적용이 불가능하여 같은 기능을 하는 컨테이너 즉, 서블릿이 필요하다.

 

서블릿

https://jmxx219.tistory.com/23?category=1011184 

 

[Servlet] 서블릿(Servlet)이란?

서버 쪽에서 실행되면서 클라이언트의 요청에 따라 동적으로 서비스를 제공하는 자바 클래스이다. 자바로 작동되어 있어 자바의 일반적인 특징을 모두 가지지만, 일반 자바 프로그램과 달리 독

jmxx219.tistory.com

 

Web Server와 WAS를 같이 사용 하는 이유 

WAS는 Web Server를 포함하고 있음에도 Web Server의 기능까지 수행하지 않고 따로 Web Server를 함께 사용하는 것일까?

 

  • 웹 페이지는 정적 컨텐츠와 동적 컨텐츠가 모두 존재 ➞ 요청에 맞게 적절하게 제공해야 함
  • 기능을 분리하여 서버 부하 방지
    • Web Server
      • 정적 콘텐츠만 처리하도록 기능을 분배하면 서버의 부담을 줄일 수 있음
      • 정적 콘텐츠는 WAS까지 가지 않아도 앞단에서 빠르게 클라이언트에게 제공 가능
    • WAS
      • 요청에 맞는 데이터를 DB에서 가져와 로직에 맞게 처리하고 결과를 제공 -> 자원을 효율적으로 사용
      • 정적 컨텐츠 요청까지 처리하면 부하가 커지고, 동적 컨텐츠의 처리가 지연되면서 수행 속도가 느려질 수 있음
  • 효율적인 리소스 관리 가능
    • 정적 리소스가 많이 사용되면 Web Server 증설
    • 애플리케이션 리소스가 많이 사용되면 WAS 증설
  • 논리, 물리적으로 분리하여 보안 강화
    • Web Server가 뚫려도 WAS는 같이 뚫리지 않음
  •  여러 대의 WAS 연결
    • Load Balancing
      • 서버에 가해지는 부하를 분산해주는 기술
      • WebServer를 WAS 앞에 두고 플러그인 형태로 설정하면 효율적인 분산 처리가 가능해짐
    • 대용량 웹 애플리케이션의 경우 무중단 운영을 위한 장애 극복에 쉽게 대응 가능

 

참고

https://velog.io/@waoderboy/%EC%9B%B9-%EC%84%9C%EB%B2%84-WAS-%EC%9B%B9-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88

https://inpa.tistory.com/entry/WEB-%F0%9F%8C%90-%EC%9B%B9-%EC%84%9C%EB%B9%84%EC%8A%A4-%EA%B5%AC%EC%A1%B0-%EC%A0%95%EB%A6%AC

 

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

[WEB] JWT 및 웹 보안 이해하기  (0) 2023.09.15
[WEB] 자바 백엔드 웹 기술 역사  (0) 2022.03.30
[WEB] HTML, HTTP API, CSR, SSR  (0) 2022.03.30
[WEB] 동시 요청 - 멀티 쓰레드  (0) 2022.03.29
[WEB] 서블릿  (0) 2022.03.29