Sh개발일기

웹 서버와 WAS 본문

BoostCourse

웹 서버와 WAS

Sh4869 2020. 2. 2. 01:44

학습 목표

  1. 웹 서버의 기능에 대하여 알아봅니다.
  2. 웹 서버의 종류에 대하여 알아봅니다.
  3. WAS가 무엇인지 알 수 있다.
  4. WAS의 종류를 알아본다.
  5. 웹 서버와 WAS의 차이점을 설명할 수 있다.

핵심 개념

  • Apache
  • Nginx
  • HTTP
  • 클라이언트 (Client)
  • 서버 (Server)
  • WAS (Web Application Server)
  • Apache Tomcat

웹 서버란?

웹 서버란 일반적으로 소프트웨어를 의미하지만 웹 서버 소프트웨어가 동작하는 컴퓨터를 말하기도 한다. 웹 서버의 가장 중요한 기능은 Client(일반적으로 Browser)가 요청하는 HTML문서나 resource를 전달하는 것이다. 이렇게 전달하는 resource는 정적인 데이터나 동적인 결과가 될 수 있다.

웹 브라우저와 서버는 일반적으로 HTTP규약을 가지고 통신한다. 일반적으로 많이 사용되는 웹 소프트웨어로는 Apache, Nginx, Microsoft, Google 웹 등이 있다.

Apache웹 서버는 Apache Software Foundation에서 개발한 웹 서버로 오픈소스이며, 거의 대부분의 운영체제에서 설치 및 사용을 할 수 있다.

Nginx는 차세대 웹 서버로 불리며 더 적은 자원으로 더 빠르게 데이터를 서비스하기 위해 만들어진 서버이다. Apache와 마찬가지로 오픈소스이다.

WAS

WAS란 Web Application Server를 의미한다. WAS를 살펴보기에 앞서 우리가 알고있는 Client/Server구조를 살펴보겠다.

위와 같은 구조로 Client는 Server에 데이터를 요청하여 사용한다. 데이터베이스가 없던 시절에는 이러한 구조에서 전송되는 데이터를 파일의 형태로 보관하고 관리하였다. 하지만 데이터베이스와 DBMS(DataBase Management System)의 발달로 사용자들은 좀 더 쉽게 데이터를 보관/관리 할 수 있게 되었다.

DBMS의 발달로 다수의 사용자들이 DB내의 데이터를 접근할 수 있게 되었다. 그러나 DBMS를 Client에서 직접 연결되어 동작하는 방식으로 인해 Client쪽의 비즈니스 로직이 비대하게 되어 여러가지 문제점을 일으키게 된다. 이러한 문제점들을 해결하기 위해 미들웨어가 등장하게 된다.

미들웨어

Client쪽의 비즈니스 로직이 많아지면 Client배포를 위한 비용이 많이 발생하게 된다. 따라서 Client와 DBMS사이에 미들웨어 서버를 놓고 비즈니스 로직을 동작하도록 하여 Client는 입/출력만을 담당하도록 하였다.

WAS (Web Application Server)

WAS는 미들웨어의 일종으로 web client(browser)의 요청 중 웹 어플리케이션의 동작을 지원하는 목적을 가지고 있다. WAS의 등장으로 Client/Server구조는 다음과 같이 변화하게 된다.

일반적으로 정적 콘텐츠는 웹 서버에서, 동적 콘텐츠는 WAS에서 담당하게 된다. 대표적인 WAS의 기능은 다음과 같다.

 

  • 프로그램 실행 환경과 DB접속 기능 제공
  • 여러 개의 트랜잭션 관리
  • 업무를 수행하는 비즈니스 로직 처리

웹 서버 vs WAS

WAS도 보통 자체적인 웹 서버 기능을 내장하고 있다. 현재는 WAS가 가지고 있는 웹 서버도 정적인 콘텐츠를 처리하는데 성능적으로 큰 차이가 없다. 하지만 효율성 및 장애 극복, 배포 및 유지보수의 편의성을 위해 규모가 커질수록 웹 서버와 WAS를 분리하여 사용하는 경우가 많다.

 

간단히 생각하여 웹 서버와 WAS가 분리되어 있는 구조의 경우 WAS의 특정 기능이 심각한 문제가 생긴다면 웹 서버에서 WAS의 기능을 미리 막아 Client가 기능을 사용하는것을 방지하고 그동안 WAS의 보수가 가능하게 된다.

 

 

 

 

'BoostCourse' 카테고리의 다른 글

Request, Response 객체 이해하기  (0) 2020.02.04
Servlet Life Cycle  (0) 2020.02.04
Java Web Application과 Servlet  (0) 2020.02.03
browser의 역할과 동작 원리  (0) 2020.01.23
HTTP 프로토콜  (0) 2020.01.22