WAS (Web Application Server)
- 웹 어플리케이션을 구동하기 위해 사용하는 소프트웨어
- 클라이언트의 요청을 받아 비즈니스 로직을 처리하고 동적인 웹 콘텐츠를 제공하는 미들웨어
- 웹 서버, 데이터베이스, 백엔드 시스템 사이 중간 매개체로 작동하며 웹 애플리케이션이 안정적이고 효율적으로 동작할 수 있도록 지원
- 클라이언트의 요청을 처리하고 비즈니스 로직을 실행하며 데이터 접근과 트랜잭션 관리, 보안, 세션 관리 등 담당
- 대표적인 WAS : Apache Tomcat
주요 기능
- 요청 처리 : 클라이언트로부터 전달된 HTTP 요청을 받아 적절한 비즈니스 로직 수행
- 비즈니스 로직 수행 : 서버측에서 동작하는 애플리케이션 로직을 실행해 필요한 데이터 처리
- 트랜잭션 관리 : 데이터베이스와의 연결 시 트랜잭션을 관리하여 데이터의 일관성과 무결성 유지
- 보안 및 세션 관리 : 사용자 인증, 권한 관리 및 세션 관리를 통해 보안 강화
- 자원 관리 : 메모리, 스레드 등의 시스템 자원을 효율적으로 관리하여 성능 최적화
장점
- 확장성 : 부하가 증가해도 여러 인스턴스를 클러스터링하는 방식으로 확장 가능
- 유지보수 용이 : 비즈니스 로직과 데이터 처리, 보안 기능 등을 한 곳에서 관리
- 통합 관리 : 다양한 애플리케이션 컴포넌트와 서비스 통합 관리
웹 서버
- 클라이언트로부터의 HTTP/HTTPS 요청을 받아 정적인 웹 콘텐츠(HTML, CSS, Image, JS)를 제공하는 소프트웨어
- 요청 수신 및 응답 전송 : 클라이언트가 보낸 요청을 수신하고 요청한 리소스를 찾아 응답으로 전송
- 정적 콘텐츠 제공 : 주로 정적 파일 제공(HTML, CSS, Image, JS)
- 보안 및 연결 관리 : TLS를 통한 보안 연결 지원
- 대표적인 웹 서버 소프트웨어 : Apache HTTP Server, Nginx, Caddy
주요 기능
- 캐싱 : 자주 요청되는 리소스를 캐싱하여 응답속도 개선
- 로드밸런싱 : 다수의 서버에 트래픽을 분산시켜 서버 부하를 줄이고 안전성 강화
- 로그 관리
- 모듈 확장성
차이점
기본 역할
- 웹 서버
- 정적 콘텐츠 제공, HTTP 요청 처리, 간단한 동적 처리
- WAS
- 동적 콘텐츠 생성(요청에 따라 DB조회, 비즈니스 로직 실행)
- 비즈니스 로직 실행
- 통합 기능 지원
구조 및 성능
- 웹 서버
- 경량화 및 빠른 응답 : 정적 파일 전송에 특화되어 있어 오버헤드가 적음
- 단순 아키텍처
- WAS
- 복잡한 처리와 오버헤드 : 다양한 기능을 수행하기 때문에 상대적으로 처리 오버헤드 발생
- 미들웨어 역할 : 여러 시스템 간의 통합 지원
활용 환경 및 사용 사례
- 웹 서버
- 정적 웹 사이트, 블로그, 이미지 호스팅 등 단순한 콘텐츠 제공이나 빠른 응답이 중요한 서비스에 적합
- WAS
- 복잡한 비즈니스 로직과 데이터 처리가 필요한 환경에서 주로 사용
WAS도 정적 컨텐츠를 제공할 수 있는데 웹 서버가 따로 필요한 이유는 무엇인가요? 🤔
WAS가 너무 많은 역할을 담당하면 과부하될 수 있습니다. 웹 서버를 따로 분리하면 WAS는 중요한 애플리케이션 로직에 집중할 수 있으며, 웹 서버는 정적 리소스를 처리하면서 업무 분담이 가능합니다. 또한, 시스템 리소스를 효율적으로 관리할 수 있습니다. 정적 컨텐츠가 많이 사용되는 경우에는 웹 서버를 증설하고, 애플리케이션 자원이 많이 사용되면 WAS를 증설하면 됩니다. 이외에도 로드 밸런싱을 하거나, 캐싱 및 압축, HTTPS 등을 웹 서버에서 처리하도록 할 수 있습니다.