공부해봅시당

[쉽게 배우자! WEB] WEB Server와 WAS에 대해 알아보자 본문

STUDY/WEB

[쉽게 배우자! WEB] WEB Server와 WAS에 대해 알아보자

tngus 2021. 7. 26. 09:30

저번 시간까지 서버에 대해 알아보는 시간을 가졌다

 

이번 시간에는 Web Server와 WAS에 대해 알아보고자 한다.

 

이 두가지 개념은 헷갈리기 쉬운 개념이니 이번 기회에 정리하고 넘어가면 좋을 것이다.

 


Static Pages와 Dynamic Pages

(출처 : https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html)

 

위 사진은 Static Pages와 Dynamic Pages를 가장 잘 설명한 그림이다.

 

Web Server와 WAS를 알아보기로 했는데 Static Pages와 Dynamic Pages가 갑자기 등장한 것이 의외일 수도 있을 것이다.

 

하지만 Web Server와 WAS를 알아보는 데 있어서 가장 중요한 개념이기 때문에 꼭 알아야 한다.

 

Web Server가 Static Pages이고, WAS가 Dynamic Pages이기 때문이다.

 

쉽게 말해, Web Server가 정적으로 정해진 페이지를 보여주는 역할만 했다면, WAS는 동적으로 결과값을 바꿔서 각 사용자에 어울리는 동적 페이지를 보여준다는 것이다.

 

다음은 그 예시이다.

 

정적 페이지와 동적 페이지

위에서 정적 페이지는 Web Server를, 동적 페이지는 WAS를 가르킨다고 생각해도 된다.

 

그런데 정적 페이지가 Web Server이고, 동적 페이지가 WAS이면 왜 용어를 다르게 부르는 걸까?

 

다른 차이는 없는걸까?

 

물론 존재한다.

 

우리가 처음 이해할 때 쉽게 이해하기 위해 정적 페이지가 Web Server이고, 동적 페이지가 WAS라고는 했지만 사실 완전히 같은 의미는 아니다.

 

여기서 더 나아가서 Web Server와 WAS에 대해 알아볼 필요가 있는 것이다.

 

 


 

더 나아가기

 

(더 나아가기의 내용은 https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html 가 원문임을 명시함)

 

여기서 Web Server와 WAS의 차이를 개념, 기능, 예시를 통해 자세히 알아보도록 하자.

 

Web Server

  • Web Server의 개념
    • 소프트웨어와 하드웨어로 구분됨
      • 하드웨어
        • Web Server가 설치되어 있는 컴퓨터
      • 소프트웨어
        • 웹 브라우저 클라이언트로부터 HTTP 요청을 받아 정적인 컨텐츠(.html, .jpeg, .css 등)를 제공하는 컴퓨터 프로그램
  • Web Server의 기능
    • Http 프로토콜을 기반으로 하여 클라이언트(웹 브라우저 또는 웹크롤러)의 요청을 서비스하는 기능을 담당
    • 요청에 따라 아래의 두 가지 기능 중 적절하게 선택하여 수행함
      • 기능 1
        • 정적인 컨텐츠 제공
        • WAS를 거치지 않고 바로 자원 제공
      • 기능 2
        • 동적인 컨텐츠 제공을 위한 요청 전달
        • 클라이언트의 요청을 WAS에 보내고, WAS가 처리한 결과를 클라이언트에게 전달
          • 클라이언트는 일반적으로 웹 브라우저를 의미함
  • Web Server의 예
    • Apache Server, NginX, IIS 등

WAS(Web Application Server)

  • WAS의 개념
    • DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 Application Server
    • HTTP를 통해 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어(소프트웨어 엔진)
    • 웹 컨테이너(Web Container) 혹은 서블릿 컨테이너라고도 불림
      • Container란 JSP, Servlet을 실행시킬 수 있는 소프트웨어를 말함
      • WAS는 JSP, Servlet 구동 환경을 제공한다는 의미
  • WAS의 역할
    • WAS = Web Server + Web Container
    • Web Server 기능들을 구조적으로 분리하여 처리하고자하는 목적으로 제시됨
      • 분산 트랜잭션, 보안, 메시징, 쓰레드 처리 등의 기능을 처리하는 분산 환경에서 사용됨
      • 주로 DB 서버와 같이 수행됨
    • 현재는 WAS가 가지고 있는 Web Server도 정적인 컨텐츠를 처리하는 데 있어서 성능상 큰 차이가 없음
  • WAS의 주요 기능
    • 프로그램 실행 환경과 DB 접속 기능 제공
    • 여러 개의 트랜잭션 관리 기능
    • 업무를 처리하는  비즈니스 로직 수행
  • WAS의 예
    • Apache Tomcat, JBoss, Jeus, Web Sphere 등

 

여기서 우리가 눈여겨 볼만한 부분은 이 부분이다. 

 

WAS가 가지고 있는 Web Server도 정적인 컨텐츠를 처리하는 데 있어서 성능상 큰 차이가 없음

 

 

WAS는 위에서 이미 Web Server + Web Container라고 설명한 바 있다.

 

그렇다는 것은 WAS에서도 Web Server에서 제공하는 가장 중요한 기능은 '정적 컨텐츠 제공'을 할 수 있다는 이야기이다.

 

더해, WAS가 가지고 있는 Web Server도 정적인 컨텐츠를 처리하는 데 있어서 성능상 큰 차이가 없다고 하였다.

 

그런데 우리는 아직 Web Server와 WAS를 구분하여 사용하고 있다.

 

왜 그럴까?

 

WAS가 Web Server의 기능도 모두 수행하면 되지 않을까?

 

WAS와 Web Server를 분리하는 이유

  • 기능을 분리하여 서버 부하 방지
    • 기능 분리
      • WAS : DB 조회나 다양한 로직을 처리
      • Web Server : 단순한 정적 컨텐츠를 빠르게 클라이언트에 제공
    • 왜?
      • 만약 정적 컨텐츠 요청까지 WAS가 처리한다면 정적 데이터 처리로 인해 부하가 커지게 되고, 동적 컨텐츠의 처리가 지연됨에 따라 수행 속도가 느려짐
  • 물리적으로 분리하여 보안 강화
    • SSL에 대한 암복호화 처리에 Web Server를 사용
  • 여러 대의 WAS를 연결 가능
    • Load Balancing을 위해 Web Server를 사용
    • fail over(장애 극복), fail back 처리에 유리
    • 특히 대용량 웹 어플리케이션의 경우(여러 개의 서버 사용) Web Server와 WAS를 분리하여 무중단 운영을 위한 장애 극복에 쉽게 대응할 수 있다.
      • 예를 들어, 앞 단의 Web Server에서 오류가 발생한 WAS를 이용하지 못하도록 한 후 WAS를 재시작함으로써 사용자는 오류를 느끼지 못하고 이용할 수 있다.
  • 여러 웹 어플리케이션 서비스 가능
    • 예를 들어, 하나의 서버에서 PHP Application과 Java Application을 함께 사용하는 경우
  • 기타
    • 접근 허용 IP 관리, 2대 이상의 서버에서의 세션 관리 등도 Web Server에서 처리하면 효율적임

 

즉, 자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성 을 위해 Web Server와 WAS를 분리한다는 것이다.

 

Web Server를 WAS 앞에 두고 필요한 WAS들을 Web Server에 플러그인 형태로 설정하면 더욱 효율적인 분산 처리가 가능하다고 한다.

 

 

더 자세한 이야기는 아래 참고자료를 읽어보길 바란다.

 

 


참고자료

https://www.youtube.com/watch?v=NyhbNtOq0Bc 

https://www.youtube.com/watch?v=F_vBAbjj4Pk 

https://www.youtube.com/watch?v=mcnJcjbfjrs 

https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html

 

[Web] Web Server와 WAS의 차이와 웹 서비스 구조 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

https://codechasseur.tistory.com/25

 

[Web] 웹 서버와 WAS의 차이를 쉽게 알아보자

서버 개발에 있어서 가장 기초적인 개념인 '웹 서버'와 'WAS(Web Application Servier)'의 차이점을 다뤄보려고 한다. 💡 웹 서버 사전적 정의 "웹 브라우저 클라이언트로부터 HTTP 요청을 받아들이고 HTML

codechasseur.tistory.com

https://victorydntmd.tistory.com/121

 

웹 서버와 WAS( Web Application Server ) 차이

1. 웹 서버와 WAS( Web Application Server ) 웹 서버는 정적인 컨텐츠( html, css, js )를 제공하는 서버입니다. ex) Apache, Nginx WAS는 DB 조회나, 어떤 로직을 처리해야 하는 동적인 컨텐츠를 제공하는 서..

victorydntmd.tistory.com

https://jeong-pro.tistory.com/84

 

WAS 와 웹 서버 차이 (WAS,Web Server) 그리고 아파치, 톰캣

WAS와 웹 서버 - 웹 서버 (Web Server) 클라이언트가 서버에 페이지 요청을 하면 요청을 받아 정적 컨텐츠(.html, .png, .css등)를 제공하는 서버 클라이언트에서 요청이 올 때 가장 앞에서 요청에 대한

jeong-pro.tistory.com

https://github.com/gyoogle/tech-interview-for-developer/blob/master/Web/Web%20Server%EC%99%80%20WAS%EC%9D%98%20%EC%B0%A8%EC%9D%B4.md

 

gyoogle/tech-interview-for-developer

👶🏻 신입 개발자 전공 지식 & 기술 면접 백과사전 📖. Contribute to gyoogle/tech-interview-for-developer development by creating an account on GitHub.

github.com

https://pyoungt.tistory.com/71

 

웹서버와 WAS의 차이 ?

" 상황에 따라 변하는 정보를 제공할 수 있는가 ? " 웹서버 정적인 파일(html,이미지 파일 등)을 제공하기 위한 서버로 HTTP프로토콜에 의해 제공 WAS Web Application Server의 줄임말 JSP나 PHP등을 사용해

pyoungt.tistory.com

https://mo-world.tistory.com/entry/%EC%9B%B9%EC%84%9C%EB%B2%84-Web-Server-%EC%99%80-WAS%EC%9D%98-%EC%B0%A8%EC%9D%B4

 

웹서버 Web Server 와 WAS의 차이

[web server ] [Was] *정적데이타는 직접처리 //    web container 클라이언트요청을 컨테이너로 전송--->  //  동적데이타 처리 클라이언트에 전달 // 웹 서버 (Web Server) 클라이언트의 요청을 받아 정..

mo-world.tistory.com

https://helloworld-88.tistory.com/71

 

[기본] WEB 과 WAS 차이

 WEB, WAS 란? ■ 웹서버(WEB)란? 웹서버는 말그래도 작성된 html페이지 등을 네트워크망에 종속되지 않고, 웹서비스를 할 수 있도록 어플리케이션 - 웹 서버(소프트웨어): 웹 브라우저 클라이언트로

helloworld-88.tistory.com