network
현대 웹 애플리케이션 아키텍처에서 웹 서버(Web Server) 와 웹 애플리케이션 서버(WAS, Web Application Server) 의 역할을 명확히 이해하는 것은 고성능·고가용성 시스템을 설계·운영하는 데 필수적입니다. 두 서버는 종종 함께 사용되지만, 그 내부 기능과 책임 범위에는 분명한 차이가 있습니다. 본 글에서는 웹 서버와 WAS의 정의·구조·주요 기능·실제 구성 예시를 살펴보고, 어떤 상황에서 각각을 선택·조합해야 하는지에 대해 안내합니다.
Nginx 이벤트 모델 예시
worker_processes auto;
events {
worker_connections 1024;
}
http {
sendfile on;
gzip on;
server {
listen 80;
server_name example.com;
root /var/www/html;
}
}
NginxTomcat 서버.xml 예시 (Connector 설정)
<Connector port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="200"
minSpareThreads="25"
enableLookups="false" />
XML구분 | 웹 서버 | WAS |
---|---|---|
처리 대상 | 정적 콘텐츠 | 동적 콘텐츠(비즈니스 로직) |
프로토콜 핸들링 | HTTP(S) | HTTP(S) + 서블릿/JSP 스펙 |
주요 기능 | 파일 서비스, SSL, 로드밸런싱 | 서블릿 컨테이너, 트랜잭션, 세션, 보안 |
성능 특성 | 낮은 리소스, 높은 동시 처리 | 로직 실행 비용, JVM·스레드 풀 관리 필요 |
확장성 | 가볍게 수평 확장 쉬움 | 클러스터링·세션 복제로 수평 확장 가능 |
구성 예시 | Nginx → 정적 리소스 직접 전달 | Nginx → WAS 프록시 → 동적 처리 수행 |
server {
listen 80;
server_name www.example.com;
# 정적 리소스 처리
location ~* \.(jpg|png|css|js|html)$ {
root /var/www/html;
expires 7d;
}
# 동적 요청 프록시
location /app/ {
proxy_pass http://127.0.0.1:8080/app/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_buffering off;
}
}
NginxTomcat 쪽에는 server.xml 의 Connector 설정만으로 포트 8080을 열어두고, 애플리케이션을 배포하면 됩니다.
웹 서버는 정적 컨텐츠에 특화된 가볍고 빠른 처리 엔진이며, WAS는 동적 비즈니스 로직 실행·트랜잭션 관리 등 애플리케이션 실행 환경을 제공합니다. 대부분의 실무 환경에서는 두 서버를 적절히 조합(예: Nginx + Tomcat)하여, 정적 자원 서비스와 동적 로직 처리를 효율적으로 분리·최적화함으로써 높은 성능과 안정성을 달성합니다. 본 블로그의 구성 예시와 선택 가이드를 참고하여, 여러분의 시스템 요구사항에 맞는 최적의 서버 구성을 설계하시길 바랍니다.
HTTP 헤더(Header)란? HTTP(Header)는 클라이언트와 서버 간에 교환되는 메타데이터로, 요청(Request)과 응답(Response)에 부가적인 정보를 실어 나르는 역할을…
Readable Code: 읽기 좋은 코드를 작성하는 사고법Practical Testing: 실용적인 테스트 가이드 강의와 함께한 인프런 워밍업 클럽…
Readable Code: 읽기 좋은 코드를 작성하는 사고법Practical Testing: 실용적인 테스트 가이드 강의와 함께한 인프런 워밍업 클럽…
테스트 시 의존성 주입(Dependency Injection)과 Mockito Spring 애플리케이션을 개발하다 보면, 테스트 코드에서 실제 빈(Bean)을 사용하지…
들어가며 스프링 기반 프로젝트에서 좋은 설계 구조와 테스트 전략은 소프트웨어 품질과 유지보수성에 직결됩니다. 최근 학습한…
Readable Code: 읽기 좋은 코드를 작성하는 사고법Practical Testing: 실용적인 테스트 가이드 강의와 함께한 인프런 워밍업 클럽…