241116 Web Server, Web Application Server(WAS)

shy·2024년 11월 16일

내일이면 잊어버림

목록 보기
9/13
post-thumbnail

기존에 스프링 부트로 작업을 해온 나는 웹 서버나 WAS에 대해 잘 알지 못했다. 내장 톰캣만 사용했으니까.

공부할 때 AWS 서버로 배포하는 것도 배우긴 했지만, 뭘 가입하고 설치하는 등 매뉴얼만 따라서 해봤을 뿐 정확히 알고 넘어가진 못했다.

그래서 이번 기회에 한번 공부해보려 한다. 실제 설정이나 환경 구축까지는 어디서부터 봐야할지 감이 잡히지 않아서 못할지는 몰라도, 개념만큼은 확실히 하고 가보도록 하겠다!


웹 서비스 동작 원리


이해를 돕기 위해 간단한 구조도를 만들어 왔다.
이를 바탕으로 어떻게 굴러가는지 단계별로 살펴보자.

1. Client

우리가 어떤 사이트에 접속한다고 하자.
접속하기 위해 해당하는 주소를 주소창에 입력하고 엔터를 누르면,
클라이언트는 http 요청을 웹 서버에 보낸다.

2. Web Server

웹 서버는 이 요청을 받아서,

  1. 정적 웹 컨텐츠(HTML 페이지, 파일, 이미지, 비디오 등)라면 자신이 처리하여 클라이언트로 응답을 보낸다.
  2. 만약 자신이 처리할 수 없는 동적 컨텐츠나 수정, 삭제 등의 조작이 포함되어 있다면 해당 요청을 WAS로 전달한다.

3. Web Application Server(WAS) + Database

WAS는 DB와 연동하여 데이터를 처리하고 요청에 대한 응답을 웹 서버로 전달한다.
웹 서버는 이를 클라이언트에게 전달한다.


Web Server와 WAS의 차이점

1. Web Server

✔️ 역할

  • 클라이언트가 보낸 HTTP 요청을 받아 정적 컨텐츠 반환
  • 정적 파일(HTML, CSS, JS 등)을 빠르고 효율적으로 제공
  • WAS로 동적 요청 전달
  • 여러 WAS가 있을 때 요청 분산하여 트래픽 고르게 나눔(로드 밸런싱)
  • 자주 요청되는 컨텐츠를 캐싱(저장)하여 성능 최적화

✔️ 장점

  • 속도가 빠르고 정적 파일 처리에 최적화
  • WAS의 부하를 줄여줌
  • 보안 기능(SSL, 방화벽 등) 제공하여 외부 요청 필터링

✔️ 대표적인 Web Server

  • Apache HTTP Server
  • Nginx

2. WAS (Web Application Server)

✔️ 역할

  • 사용자가 요청한 작업(비즈니스 로직) 처리
  • DB와 연동하여 필요한 데이터를 조회하거나 저장
  • 세션 관리
  • 다른 서비스와 통신하거나 데이터를 주고받기 위한 API를 제공

✔️ 장점

  • 동적 컨텐츠 처리에 강력한 기능 제공
  • DB와 직접 연결하여 복잡한 작업을 처리 가능
  • 비즈니스 로직 실행 환경을 제공하여 개발자가 쉽게 애플리케이션을 개발할 수 있음

✔️ 대표적인 WAS

  • Apache Tomcat : Java 기반
  • WildFly(JBoss) : Java EE 기반
  • WebLogic, WebSphere : 대규모 엔터프라이즈 애플리케이션에서 주로 사용

Web Server와 WAS 비교

구분웹 서버WAS
역할정적 컨텐츠 제공동적 요청 처리, 비즈니스 로직 실행
주요 처리 내용HTML, CSS, JS, 이미지, 동영상 등DB 연동, 세션 관리, 로직 처리
대표 기술Nginx, ApacheTomcat, WildFly, WebLogic
확장성정적 요청 분산에 적합WAS 부하를 줄이는 구조와 함께 확장 가능
트래픽 관리캐싱, 로드 밸런싱 지원로직 처리에 집중

왜 분리해서 사용할까?🤔

1. 역할 분리로 성능 최적화
정적 컨텐츠는 처리 속도가 빠르고, 웹 서버에서 바로 응답할 수 있으므로 WAS의 부하를 줄이고, 전체 처리 속도를 향상시키기 위해 분리한다.
2. 보안 강화
웹 서버가 클라이언트와 직접 통신하는 역할을 하고, WAS는 내부 네트워크에서만 동작하도록 구성하여 WAS를 외부로부터 숨길 수 있다.
3. 확장성
웹 서버는 정적 파일 처리에 최적화된 추가 서버를 배포하고, WAS는 더 많은 동적 요청을 처리할 수 있도록 별도로 확장하는 등 각 계층을 독립적으로 확장할 수 있다.
4. 장애 분리
한쪽에서 문제가 생겨도 전체 서비스가 중단되지 않는다.
5. 캐싱 및 로드 밸런싱
웹 서버는 정적 콘텐츠를 캐싱하거나, 트래픽을 균등하게 분산하여 WAS의 과부하를 방지한다.


참고로 우리나라에선 WAS라고 하는데, 영어권에서는 Application Server(AS)로 불린다고 한다. 검색할 때 참고할 것!

참고자료

profile
과거의 끝에서 현대의 끝으로

0개의 댓글