HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🤩
개발
/네트워크(Network)/
🗽
Web 기본
/
🏏
웹 어플리케이션 서버 ↔ 웹 서버
웹 어플리케이션 서버 ↔ 웹 서버
🏏

웹 어플리케이션 서버 ↔ 웹 서버

[웹 어플리케이션 서버에 대한 심화 이해 ] →
🛢️
[J2EE] Container, Servlet
웹 서버 ↔ 웹 어플리케이션 서버웹 서버웹 서버의 한계웹 어플리케이션 서버(WAS = 웹 서버 + 웹 컨테이너)WAS 가 Web Server의 기능도 모두 수행하면 되지 않을까? → 자원 이용의 효율성, 장애 극복, 배포 및 유지보수의 편의성을 위해 둘 다 사용Tomcat

웹 서버 ↔ 웹 어플리케이션 서버

  • 정적 컨텐츠 ↔  동적 컨텐츠

웹 서버

https://mossgreen.github.io/Servlet-Containers-and-Spring-Framework/
http://setgetweb.com/p/WAS9/ae/tins_webplugins_mult_remotesa.html
  • Http, Https 요청을 받아서 응답을 주는 역할을 함. 정적컨텐츠를(Static content) 주로 제공함
  • 웹 서버를 앞단에 배치하여 proxy 같은 기능을 하기도 함. 브라우저와 다이렉트로 연결(WAS 앞단에)
    • 클라이언트가 리퀘스트를 주면 웹 서버에서 받아서 WAS로 전달(proxy)
  • 두 번째 firewall 안에 있는 애들은 데이터 보안이 중요하기 때문에 (인증, 인가, 고객정보) 보호를 해주는 것
  • 웹 서버(아파치, nginx 같은)를 플러그인 기능이 막강한 것들이 있어서 앞에다 두고 was를 뒤에 두는 식으로 배치를 많이 함

웹 서버의 한계

  • 동적 컨텐츠 반환 불가 : 정적인 컨텐츠를 반환하기에, 페이지에 현재 날짜, 시간 같은 동적인 내용을 포함할 수가 없음
  • 서버에 데이터 저장 불가 : user가 form data를 보냈을 때, 그 data를 파일이나 db에 저장하거나 사용하여 페이지 생성하기 위해서는 새로운 app이 필요함 → CGI Program & Servlets
  • CGI는 매 리퀘스트 마다 process를 만듬!! heavy하다
 

웹 어플리케이션 서버(WAS = 웹 서버 + 웹 컨테이너)

https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html
  • 비즈니스 로직을 담고 있는, 동적인 컨텐츠를 제공하기 위해 만들어짐
  • 자바에서는 Web Container를 서블릿 컨테이너라고 부름. WAS를 통해 JSP, Servlet을 구동시킴. Web Container안에서 DB에 연동, 데이터 만들고 해서 JSON으로 전달
  • WAS는 별도 서버(프로세스)로 구동됨. 오픈소스 : Tomcat, Jetty
    • WAS는 .war로 빌드 & 배포 하고 WAS가 프로젝트 로드해서 Web Container 구동 & 코드 동작 → 그러나 요즘은 Tomcat 같은 경우 embedded Tomcat, embedded servlet을 활용하여 jar 파일로 배포하는 것이 일반적
    • 핵심 : Tomcat에다가 우리가 만든 프로젝트를 로드
  • WAS의 예 : Tomcat, JBoss, Jeus, Web Sphere

WAS 가 Web Server의 기능도 모두 수행하면 되지 않을까? → 자원 이용의 효율성, 장애 극복, 배포 및 유지보수의 편의성을 위해 둘 다 사용

  1. 기능을 분리하여 서버 부하 방지
    1. WAS는 다양한 로직 처리하느라 바쁘기에 단순한 정적 컨텐츠는 Web Server에서 빠르게 클라이언트에 제공하는 것이 좋음
    2. 정적 컨텐츠 까지 WAS가 처리하면 정적 데이터 처리로 인한 부하가 커지게 됨
  1. 물리적으로 분리하여 보안 강화
    1. SSL에 대한 암복호화 처리에서 Web Server를 사용
  1. 여러 대의 WAS를 연결 가능
    1. Load Balancing을 위해 Web Server를 사용
    2. fail over(장애 극복), fail back 처리에 유리함
    3. 대용량 웹 어플리케이션의 경우 Web Server와 WAS를 분리하여 무중단 운영을 위한 장애 극복에 쉽게 대응가능
  1. 여러 웹 어플리케이션 서비스 가능
    1. 예를 들어, 하나의 서버에서 PHP Application과 Java Application 을 함께 사용하는 경우

Tomcat

  • 아파치는 HTTP Server의 역할이고, 톰캣은 서블릿 엔진으로써의 역할을 함
  • 아파치 톰캣(Apache Tomcat)은 아파치 소프트웨어 재단에서 개발한 서블릿 컨테이너(또는 웹 컨테이너)만 있는 웹 애플리케이션 서버이다.
  • 톰캣은 웹 서버와 연동하여 실행할 수 있는 자바 환경을 제공하여 자바서버 페이지(JSP)와 자바 서블릿을 실행할 수 있는 환경을 제공하고 있다. 톰캣은 관리툴을 통해 설정을 변경할 수 있지만, XML 파일을 편집하여 설정할 수도 있다. 그리고, 톰캣은 HTTP 서버도 자체 내장하기도 한다.
  • 아파치 톰캣에 내장된 웹 서버로만 웹 시스템을 구성할 수 있지만, 대규모의 사용자가 사용하는 시스템을 구축하려면 웹 서버와 연동하는 안정적인 시스템을 구축해야 한다
  • high performance의 web server를 의미하는 것은 아님, web server의 전형적인 특징들도 포함하고 있지 않음