Java

Java WAS(Web Application Server) 기본 개념

hyuk0309 2025. 12. 28. 00:28

WAS(Web Application Server) ?

 

Wiki

An application server is a server that hosts applications[1] or software that delivers a business application through a communication protocol.[2] For a typical web application, the application server sits behind the web servers.

An application server framework is a service layer model. It includes software components available to a software developer through an application programming interface. An application server may have features such as clustering, fail-over, and load-balancing. The goal is for developers to focus on the business logic.[3]

 

WAS는 특정 소프트웨어나 애플리케이션을 호스팅해서 사용자의 비즈니스 요청을 처리하고 전달하는 역할을 하는 서버다.

 

웹의 진화 과정을 알면 WAS가 나온 배경을 이해할 수 있다.

 

1. 1세대 (1990년대 초)

Web Server만 존재했다. 사용자가 요청하면 서버에 저장된 HTML 파일을 그대로 보여주는 형식이였다.

 

2. 2세대

웹에서 계산이나 데이터 처리를 하고 싶어지는 니즈에 따라 CGI(Common Gateway Interface) 규격이 등장했다.

이는 웹서버가 처리할 수 없는 요청이 들어오면, 별도의 외부 프로그램을 실행해 그 결과를 받아 응답하는 방식이다. 근데 이는 요청마다 프로그램을 실행해야 했기 때문에 대규모 서비스에는 부적합했다.

 

3. 3세대 WAS 탄생

CGI의 한계를 극복하기 위해 WAS 개념이 나왔다. 프로그램을 매번 새로 실행하는 대신, 메모리에 한 번만 올려두고 들어오는 요청을 스레드로 처리하는 방식이다.

 

4. 4세대 Java EE와 표준화

기업들이 웹을 본격적으로 비지니스에 사용하면서 안정적인 기업용 웹 표준의 필요성이 증가되었다. Sun Microsystems에서 이를 만족하는 Java EE 규격을 발표했다. 그리고 이를 구현한 제품들이 시장에 나오기 시작했다. (WebLogic, JEUS 등..)

 

5. 5세대

Spring의 등장으로 요즘 Java 진영에서는 Spring과 오픈소스 기반의 가벼운 컨테이너 WAS를 사용하는 형태로 바뀌었다.

 

 

Java WAS ?

WAS 종류

Java 진영에서 제공하는 WAS는 크게 오픈소스 기반의 가벼운 컨테이너와 기업용 대규모 시스템을 위한 풀스택 서버로 나뉜다.

 

[오픈소스 기반의 가벼운 컨테이너]

Tomcat, Jetty가 대표적인 예다. 두 WAS는 Servlet Container 이다. 즉, 웹 애플리케이션에 필요한 최소한의 기능들을 제공한다.

최소한의 기능은 Servlet과 JSP의 생명주기를 관리하고 실행하는 기능이다.

 

[기업용 대규모 시스템을 위한 풀스택 서버]

WildFly, JEUS, WebLogic이 대표적인 예다. 이런 서버들은 단순 웹 기능을 넘어 트랜잭션 관리, 메시징, 클러스터링 등 많은 기능들을 포함하고 있다.

 

WAS(Tomcat)을 이용한 간단한 서비스 만들기

Spring 없이 Tomcat을 이용해 간단한 서비스를 만들어보겠다.

1. Servlet 작성

2. Tomcat에 1에 작성한 Servlet 설정

3. Tomcat 시작

 

자세한 내용은 아래 저장소를 참고하기 바란다.

https://github.com/hyuk0309/play-ground/tree/main/was