톰캣(tomcat)이란?

임동혁 Ldhbenecia·2024년 5월 29일

SpringBoot

목록 보기
5/28
post-thumbnail

개요

Apache Tomcat은 Apache Software Foundation에서 개발한 Java 기반의 서블릿 컨테이너이다.
JSP, Spring으로 개발을 한다면 톰캣이 내장되어있기 때문에 사용하고 있을 것이다.


WS(Web Server)란?

WS(Web Server)는 웹 서버를 의미하며, 가장 쉽게 떠올릴 수 있는 예로는 Apache HTTP ServerNginX가 있다.

웹 서버는 프로그램 아키텍처 중 제일 앞단에 위치하여 클라이언트의 HTTP 요청을 처리한다.


WS(Web Server) 특징

  • HTTP 요청 처리: 클라이언트의 HTTP 요청을 제일 앞단에서 처리한다.
  • 정적인 콘텐츠 제공: HTML, CSS, 이미지와 같은 즉시 처리 가능한 정적인 콘텐츠를 제공한다.

WAS(Web Application Server)란?

WAS(Web Application Server)는 웹 애플리케이션 서버이다.
클라이언트의 HTTP 요청은 웹 서버(WS)에서 처음 받아 정적인 콘텐츠를 처리하며, 동적인 콘텐츠는 WAS로 넘긴다.
WAS는 JSP, 서블릿 등 동적인 웹 애플리케이션을 실행할 수 있는 환경을 제공한다.


WAS(Web Application Server) 특징

  • 동적 콘텐츠 처리: 프로그램의 동적 콘텐츠를 처리한다.
    이는 데이터베이스 조회나 다양한 로직 처리가 포함된다.
  • 애플리케이션 실행 환경 제공: JSP, 서블릿 등 동적인 웹 애플리케이션을 실행할 수 있는 환경을 제공한다.

Apache Tomcat은 대표적인 WAS 중 하나로, JSP와 서블릿을 지원하며, Spring 애플리케이션의 실행 환경으로도 자주 사용된다.
특히, Spring Boot는 내장된 Tomcat 서버를 포함할 수 있어 별도의 WAS 설정 없이도 애플리케이션을 쉽게 실행할 수 있는 특징이 있다.

스프링을 사용하여 개발된 애플리케이션은 WAS에 배포되어 실행될 수 있으며, 스프링 부트는 이러한 배포 과정을 간소화하고 내장 Tomcat 서버를 통해 빠르게 실행할 수 있도록 돕는다.
이를 통해 개발자는 보다 효율적으로 애플리케이션을 개발하고 배포할 수 있다.


Tomcat을 왜 사용할까?

  1. Tomcat은 Java Servlet과 JSP(JavaServer Pages) 기술을 구현하여, Java 기반의 웹 애플리케이션을 실행할 수 있는 환경을 제공한다.
    이는 표준 기반의 웹 애플리케이션 개발을 지원하며, 개발자가 서블릿과 JSP를 사용하여 동적 웹 페이지를 생성하고 요청을 처리할 수 있게 한다.
  2. 내장형으로 사용이 가능하다.
    실제로 스프링부트 내장 톰캣 서버로 사용되고 있으며, 가볍기 때문에 경량성 또한 증명된다.

결론

Tomcat은 Java 기반의 웹 애플리케이션을 실행하기 위한 강력하고 유연한 WAS이다.
서블릿과 JSP 지원, 경량성과 간편한 설치, 확장성, 내장형 사용 가능, 안정성과 성능, 활발한 커뮤니티와 지원, 보안 기능, 기업 환경에서의 검증 등 다양한 이유로 널리 사용되고 있다.
이러한 장점들 덕분에 개발자와 기업 모두에게 매우 유용한 도구로 자리 잡고 있다.


Express.js, NestJS는 어떤 WAS를 사용할까?

Express.js와 NestJS는 둘 다 Node.js를 기반으로 하는 웹 프레임워크이다.
이 프레임워크들은 Java의 서블릿 컨테이너인 Tomcat과 같은 전통적인 웹 애플리케이션 서버(WAS)를 사용하지 않는다.
대신, Node.js 자체가 웹 서버의 역할을 한다.

그렇기에 내가 학습할 때 멘토분께서 해주신 말씀으로는 익스프레스와 NestJS 자체를 WAS라고 말씀해주셨던게 기억에 남는다.
→ 이는 사전적 정의로 옳지 않을 수는 있지만 사실상 이렇게 생각한다고 들은 것 같다. (확실하지 않음!)

Node.js의 역할

Node.js는 자체적으로 HTTP 서버 기능을 제공하기 때문에, 별도의 WAS 없이도 웹 애플리케이션을 실행할 수 있다.

  • 내장 HTTP 서버: Node.js는 http 모듈을 통해 HTTP 서버를 생성하고 요청을 처리할 수 있다.
    이는 Node.js 애플리케이션이 직접 클라이언트의 HTTP 요청을 받아 처리할 수 있음을 의미한다.
profile
지극히 평범한 공대생

0개의 댓글