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 등을 웹 서버에서 처리하도록 할 수 있습니다.