
Apache Tomcat은 Apache Software Foundation에서 개발한 Java 기반의 서블릿 컨테이너이다.
JSP, Spring으로 개발을 한다면 톰캣이 내장되어있기 때문에 사용하고 있을 것이다.
WS(Web Server)는 웹 서버를 의미하며, 가장 쉽게 떠올릴 수 있는 예로는 Apache HTTP Server와 NginX가 있다.
웹 서버는 프로그램 아키텍처 중 제일 앞단에 위치하여 클라이언트의 HTTP 요청을 처리한다.
WAS(Web Application Server)는 웹 애플리케이션 서버이다.
클라이언트의 HTTP 요청은 웹 서버(WS)에서 처음 받아 정적인 콘텐츠를 처리하며, 동적인 콘텐츠는 WAS로 넘긴다.
WAS는 JSP, 서블릿 등 동적인 웹 애플리케이션을 실행할 수 있는 환경을 제공한다.
Apache Tomcat은 대표적인 WAS 중 하나로, JSP와 서블릿을 지원하며, Spring 애플리케이션의 실행 환경으로도 자주 사용된다.
특히, Spring Boot는 내장된 Tomcat 서버를 포함할 수 있어 별도의 WAS 설정 없이도 애플리케이션을 쉽게 실행할 수 있는 특징이 있다.
스프링을 사용하여 개발된 애플리케이션은 WAS에 배포되어 실행될 수 있으며, 스프링 부트는 이러한 배포 과정을 간소화하고 내장 Tomcat 서버를 통해 빠르게 실행할 수 있도록 돕는다.
이를 통해 개발자는 보다 효율적으로 애플리케이션을 개발하고 배포할 수 있다.
Tomcat은 Java 기반의 웹 애플리케이션을 실행하기 위한 강력하고 유연한 WAS이다.
서블릿과 JSP 지원, 경량성과 간편한 설치, 확장성, 내장형 사용 가능, 안정성과 성능, 활발한 커뮤니티와 지원, 보안 기능, 기업 환경에서의 검증 등 다양한 이유로 널리 사용되고 있다.
이러한 장점들 덕분에 개발자와 기업 모두에게 매우 유용한 도구로 자리 잡고 있다.
Express.js와 NestJS는 둘 다 Node.js를 기반으로 하는 웹 프레임워크이다.
이 프레임워크들은 Java의 서블릿 컨테이너인 Tomcat과 같은 전통적인 웹 애플리케이션 서버(WAS)를 사용하지 않는다.
대신, Node.js 자체가 웹 서버의 역할을 한다.
그렇기에 내가 학습할 때 멘토분께서 해주신 말씀으로는 익스프레스와 NestJS 자체를 WAS라고 말씀해주셨던게 기억에 남는다.
→ 이는 사전적 정의로 옳지 않을 수는 있지만 사실상 이렇게 생각한다고 들은 것 같다. (확실하지 않음!)
Node.js는 자체적으로 HTTP 서버 기능을 제공하기 때문에, 별도의 WAS 없이도 웹 애플리케이션을 실행할 수 있다.
http 모듈을 통해 HTTP 서버를 생성하고 요청을 처리할 수 있다.