안녕하세요.
오늘은 웹 서비스의 핵심 엔진이자 백엔드 개발자라면 반드시 이해해야 하는 WAS(Web Application Server)에 대해 공부해보겠습니다.
WAS 의 개념
WAS(Web Application Server)는 클라이언트의 요청을 받아 비즈니스 로직을 수행하고 그 결과를 동적으로 생성하여 반환하는 서버입니다.
단순히 저장된 파일을 보내주는 웹 서버와 달리, 데이터베이스와 연동하여 사용자마다 다른 결과를 실시간으로 만들어내는 역할을 담당합니다.
WAS는 단순한 요청 처리를 넘어 회원가입, 로그인, 결제와 같은 실제 서비스의 핵심 기능이 수행되는 영역이라고 볼 수 있습니다.
웹 서버 vs WAS 차이
웹 서버와 WAS는 서로 역할을 나누어 협력하는 구조를 가집니다.
웹 서버는 정적인 요청을 빠르게 처리하고 WAS는 동적인 요청을 처리함으로써 전체 시스템의 성능을 최적화합니다.
| 구분 | 웹 서버 | WAS |
| 주요 역할 | HTML, CSS, 이미지와 같은 정적 파일을 클라이언트에게 그대로 전달합니다. | 클라이언트 요청을 처리하고 비즈니스 로직을 수행하여 동적인 결과를 생성합니다. |
| 처리 방식 | 이미 만들어진 결과를 단순히 전달하는 방식으로 동작합니다. | 프로그램을 실행하고 DB와 연동하여 새로운 결과를 생성합니다. |
| 핵심 기능 | HTTP 요청 처리, 정적 리소스 제공, 로드 밸런싱을 수행합니다. | 비즈니스 로직 처리, DB 연동, 트랜잭션 관리 등을 담당합니다. |
웹 서비스 구조
일반적인 웹 서비스는 클라이언트 → 웹 서버 → WAS → 데이터베이스 구조로 동작합니다.
예를 들어 사용자가 로그인 요청을 보내면, 웹 서버는 해당 요청을 WAS로 전달합니다.
이후 WAS는 데이터베이스에서 사용자 정보를 조회하고 비밀번호 검증과 같은 비즈니스 로직을 수행한 뒤, 결과를 다시 클라이언트에게 반환합니다.
WAS 의 핵심 특징
| 특징 | 설명 |
| 웹 컨테이너 | Servlet, JSP를 실행할 수 있는 환경을 제공하며, 요청(Request)과 응답(Response) 객체의 생명주기를 관리합니다. |
| 스레드 풀 | 요청마다 새로운 스레드를 생성하지 않고 미리 생성된 스레드를 재사용하여 다수의 요청을 효율적으로 처리합니다. |
| 트랜잭션 관리 | DB 작업 중 오류 발생 시 롤백을 수행하여 데이터의 일관성을 유지합니다. |
WAS의 장점
| 장점 | 설명 |
| 성능 최적화 | 정적 리소스를 제외한 동적 리소스를 WAS가 처리하여 부담을 줄입니다. |
| 보안 강화 | 웹 서버를 외부에 두고 WAS를 내부에 위치시켜 외부 공격으로부터 보호합니다. |
| 확장성 | 여러 WAS를 두어 요청을 분산 처리할 수 있습니다. |
| 통합성 | 데이터 베이스, 메시지 큐 등 백엔드 시스템과 연동하여 통합하기 용이합니다. |
WAS의 단점
| 단점 | 설명 |
| 높은 자원 소모 | 웹 서버에 비해 메모리와 CPU 사용량이 많아 성능상 오버헤드가 발생할 수 있습니다. |
| 정적 파일 처리 효율 저하 | 이미지나 CSS와 같은 정적 파일 처리는 웹 서버에 비해 성능이 떨어져 처리 효율이 저하합니다. |
| 복잡한 설정 및 유지보수 | 설치 및 운영 환경이 복잡하여 설치, 설정, 유지보수가 어렵습니다. |
WAS의 종류
| 종류 | 설명 |
| Apache Tomcat | 가장 널리 사용되는 오픈소스 WAS로, Servlet과 JSP를 실행할 수 있는 경량 컨테이너입니다. Spring 기반 애플리케이션에서 많이 사용됩니다. |
| JBoss (WildFly) | Red Hat에서 제공하는 오픈소스 WAS로, Java EE(현재 Jakarta EE) 기반의 다양한 기능을 지원합니다. |
| WebLogic | Oracle에서 제공하는 상용 WAS로, 대규모 엔터프라이즈 환경에서 안정성과 성능을 위해 사용됩니다. |
| WebSphere | IBM에서 제공하는 상용 WAS로, 금융권과 같은 높은 안정성이 요구되는 환경에서 주로 사용됩니다. |
WAS 보안 관점에서의 역할
WAS는 단순한 로직 처리 서버가 아니라 사용자 인증과 권한 검증을 담당하는 보안의 핵심 영역입니다.
또한 웹 서버와 WAS를 분리하면 외부에서는 웹 서버만 접근 가능하고 WAS는 내부망에 숨길 수 있어 보안성이 더욱 강화됩니다.
| 보안 요소 | 설명 |
| 인증 | 사용자가 로그인한 사용자임을 확인하고, 세션이나 JWT를 통해 신원을 검증합니다. |
| 인가 | 사용자가 특정 기능이나 데이터에 접근할 수 있는 권한이 있는지 검사합니다. |
| 입력값 검증 | SQL Injection, XSS 등의 공격을 방지하기 위해 사용자 입력값을 검증합니다. |
| 세션 관리 | 사용자의 로그인 상태를 유지하고 세션 탈취를 방지합니다. |
마무리 정리
이번 글에서는 WAS의 개념과 역할, 그리고 웹 서버와의 차이에 대해 알아보았습니다.
WAS는 단순한 서버가 아니라 비즈니스 로직과 보안을 담당하는 핵심 엔진입니다.
웹 서버와 역할을 분리함으로써 성능, 보안, 확장성을 모두 확보할 수 있다는 점이 중요합니다.
읽어주셔서 감사합니다!
참조
- https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html
- https://codechasseur.tistory.com/25
- https://velog.io/@bky373/Web-%EC%9B%B9-%EC%84%9C%EB%B2%84%EC%99%80-WAS
- https://soso-hyeon.tistory.com/81
- https://story.pxd.co.kr/1647
- https://developer.mozilla.org/ko/docs/Learn/Common_questions/Web_server_vs_application_server
'Web' 카테고리의 다른 글
| Nginx (0) | 2026.05.07 |
|---|---|
| Proxy Server (0) | 2026.04.30 |
| JWT(JSON Web Token) (1) | 2026.04.27 |
