Back_End/Java
Web Application Server (WAS)
10Biliion
2024. 11. 28. 08:22

WAS(Web Application Server)는 클라이언트의 요청을 처리하고 동적인 웹 애플리케이션을 실행하기 위한 서버 소프트웨어입니다. WAS는 웹 서버와 애플리케이션 서버의 기능을 모두 포함하며, 주로 JSP, Servlet, Spring 등의 기술을 기반으로 동작합니다
WAS의 역할
- HTTP 요청 처리
- 클라이언트(주로 브라우저)로부터 HTTP 요청을 수신하고, 적절한 응답을 반환합니다.
- 동적 컨텐츠 생성
- 정적인 HTML 파일을 제공하는 웹 서버와 달리, 데이터베이스나 다른 비즈니스 로직을 이용해 동적인 데이터를 생성합니다.
- 애플리케이션 실행 환경 제공
- Java EE 표준을 기반으로 다양한 API와 서비스를 제공하여 웹 애플리케이션이 실행되도록 지원합니다.
- 로드 밸런싱 및 클러스터링
- 대규모 트래픽을 처리하기 위해 여러 서버에 요청을 분산하거나, 서버 장애 시에도 애플리케이션이 중단되지 않도록 고가용성을 제공합니다.
WAS 동작 원리
- HTTP 요청 수신
- 클라이언트의 요청은 웹 서버(예: Apache HTTP Server, Nginx)를 거쳐 WAS로 전달됩니다.
- 요청 분석 및 라우팅
- WAS는 URL, HTTP 메서드 등을 분석하여 어떤 애플리케이션이나 컴포넌트가 요청을 처리할지 결정합니다.
- 비즈니스 로직 처리
- 지정된 애플리케이션은 데이터베이스와의 상호작용, 계산, 파일 처리 등 비즈니스 로직을 실행합니다.
- 응답 생성 및 반환
- 요청 처리 결과를 기반으로 동적인 HTML, JSON, XML 등의 응답 데이터를 생성하고 클라이언트에 반환합니다.
WAS 아키텍처
- Servlet 컨테이너
- JSP와 Servlet을 실행하고 관리하는 핵심 모듈입니다. 요청과 응답 객체를 생성하고, 애플리케이션의 비즈니스 로직을 호출합니다.
- EJB 컨테이너
- 엔터프라이즈 자바 빈(EJB)을 관리하며, 트랜잭션, 보안, 분산 처리를 지원합니다.
- JNDI 서비스
- 애플리케이션에서 데이터베이스, 메시징 시스템 등의 자원을 쉽게 찾고 연결할 수 있도록 이름 기반 디렉터리 서비스를 제공합니다.
- JMS 서비스
- 메시지 기반의 비동기 통신을 지원하여 시스템 간 데이터 교환을 효율적으로 처리합니다.
- 트랜잭션 관리
- 데이터베이스 작업이 원자성을 가지도록 트랜잭션을 관리합니다.
- 보안 관리
- 인증과 권한 부여를 통해 애플리케이션과 데이터의 안전성을 보장합니다.
주요 WAS 종류
- Apache Tomcat
- Java Servlet과 JSP를 실행할 수 있는 경량 WAS로, 오픈 소스이며 높은 성능을 자랑합니다.
- JBoss EAP (WildFly)
- Red Hat에서 제공하는 오픈 소스 WAS로, Java EE 표준을 완벽히 지원합니다.
- WebSphere Application Server
- IBM에서 제공하는 상용 WAS로, 대규모 엔터프라이즈 환경에 적합합니다.
- Oracle WebLogic
- Oracle의 WAS로, 높은 안정성과 확장성을 제공합니다.
- GlassFish
- Java EE 참조 구현으로, 다양한 Java EE 기능을 테스트할 수 있는 WAS입니다.
WAS와 웹 서버의 차이
구분 | 웹 서버(Web Server) | WAS(Web Application Server) |
역할 | 정적 콘텐츠 제공 | 동적 콘텐츠 생성 |
기술 | HTML, CSS, JS | JSP, Servlet, EJB |
예시 | Apache HTTP Server, Nginx | Tomcat, WebLogic |
확장성 | 제한적 | 클러스터링, 로드 밸런싱 가능 |
WAS 설정 및 최적화
- JVM 튜닝
- 힙 메모리 크기, 가비지 컬렉션 설정 등을 최적화하여 성능을 향상시킵니다.
- 스레드 풀 관리
- 요청을 처리하는 스레드의 개수를 적절히 설정하여 리소스 낭비를 방지합니다.
- 커넥션 풀 관리
- 데이터베이스 연결을 재사용하도록 설정하여 요청 처리 속도를 높입니다.
- 캐싱 사용
- 정적 또는 자주 사용하는 데이터를 캐싱하여 응답 속도를 개선합니다.
- 보안 강화
- SSL 인증서 적용, 방화벽 설정, 보안 패치 업데이트 등을 통해 애플리케이션의 보안을 강화합니다.
