본문 바로가기
기타 IT 경험/ETC

웹서버와 웹애플리케이션의 역활과 구조 Web Server, Was

by 슬기로운 동네 형 2022. 12. 9.
반응형

웹서버와 웹애플리케이션의 역활과 구조 Web Server, Was


웹서버와 웹 애플리케이션의 역할

 프로젝트를 하다보면 의외로 웹서버와 웹 애플리케이션 각각의 기능을 명확히 구분을 못하는 사람들이 많다.

 

스타트업을 하던 시절 어느 날, 행복한 상상을 자주하곤 했다.

우리 서비스가 갑자기 유명해져 동시접속자가 천명, 만명이 된다면? 

 톰캣하나 카페 24에 설치해놓은 상태에서 갑자기 공포가 밀려왔다.

 그날 흔히들 말하는 웹서버와 웹와스에대한 개념을 익혀야 대응을 할 수 있다는 생각에 자료들을 찾아봤던 기억이 난다.

 

 자바 진영 기준으로 설명한다. (웹서버와 was 차이)

 


웹서버(Web Server)

  • Apache 
  • Nginx
  • WebTobe (상용 국산 제품)

아파치,, 엔진이엑스, 웹투비

 우선,  웹서버를 설명하기 전, 정적 페이지와 동적 페이지에 대해 알고 넘어가자.

 

 1. 정적 페이지

 

 이미지, Html 파일, Css, 자바스크립트 들이 정적 페이지에 쓰이는 파일들이라고 알면 된다.

 존재하는 그대로 보여주기 때문에 빠를 수 밖에 없다.

 있는 그대로 보여 주기 때문에 변경하려면 파일의 내용을 변경해야 한다.

 

 2. 동적 페이지

 

 말 그대로 다이나믹하게 바뀌는 것을 말한다.

 상황/조건에 따라 서버에 저장되어 있는 HTML 페이지에 데이터를 추가/가공해서 보여줄 수 있다.

 아주 단순한 예로, 정적 페이지를 몇개 만들어 놓고 어떤 조건하에 그 페이지를 조합할 수도 있고 데이터베이스의 데이터를 붙힐 수도 있다.

 또는 어떤 프로그래밍에 의해 결과물을 보여주기도 한다.

 

그래서 웹서버의 역할은?

 1990년도 쯤에는 아파치를 설치하고 HTML이나 이미지로 홈페이지를 만들어서 제공하곤 했다. 클라이언트는 구경만 할 뿐.

 

 현재는 다양한 기능을 수행한다. 웹 애플리케이션을 설명한 후, 더 자세하게 역할의 예를 들겠다.

 

 정적 콘텐츠 제공, 부하분산, 보안, 로드밸런서 등. 이 정도의 기능만 알아도 충분하다.


웹 애플리케이션(Web Application)

와스라고들 흔히 말한다. WAS

웹 컨테이너라고 부르기도 한다. 머라 부르든 간에 종류와 역할을 알면 된다.

 

  • 톰캣
  • 글라스 피시
  • 오라클 웹로직 (상용)
  • 제우스

톰캣, 오라클 웹로직, 제우스, 글래스피쉬

사전적으로 웹 애플리케이션을 정의하자면 인터넷이나 인트라넷을 통해 웹 브라우저에서 이용할 수 있는 응용 소프트웨어를 말한다.  <== 몬 소리지?

 

 HTML은 정적 스크립트다. 자바스크립트는 동적이긴 하지만 Node JS가 나오기 전까지는 HTML과 함께 제한적인 기능 구현을 주로 맡았다. 지금은 Node JS 의 등장으로 자바만큼이나 많은 일을 할 수 있는 시대가 됐다.

  

 WAS는 주로 DB 접속 기능을 제공하고 다양한 기능 등을 구현하고 서비스할 수 있다.

 아주 간단한 예로 게시판 기능을 제공할 수 있고, 더 나아가 타 시스템과 연계도 가능하며, 메일도 보내고, 보낸 내역을 데이터베이스에 관리도 할 수 있다.

 

 로그인을 예로 들자. 정적 페이지에서는 구현이 거의 불가능할 정도다. 회원가입을 위해 정보를 입력하고 저장을 하게 되면 데이터베이스에 정보가 기록된다. 

 이런 기능을 트랜잭션 관리 기능, 업무를 처리하는 비즈니스 로직 수행이라고 말해도 되지 않을까?

 

 웹서비스의 물리적 구조 그리고 역할의 분담

 거의 웬만한 웹서비스 프로젝트를 하게 되면 제품과 프로그래밍 언어만 다르지 웹서버 + 웹 애플리케이션 + 데이터베이스 구성을 하게 된다. 흔히들 3 티어 구성이라고 한다.

3 티어 구성

 사실 WAS 안에 웹서버의 기능을 제한적으로 갖추고 있지만, 아래 그림처럼 3 티어로 구성하는 이유는 나름 있다.

 웹서버와 WAS의 기능을 분리하고 각자의 장점을 최대한 올려서 서비스하기 위해서다.

 

 단순하게 설명하자면, 우리가 네이버 홈페이지에 들어가면 이미지나 HTML 등은 빠르게 웹서버가 처리하고, 그 안에 데이터들은 WAS에서 처리해 동적으로 페이지를 만들어준다.

 

 또 단순한 예로 HTTPS를 설명하면 아파치 웹서버에 HTTPS를 구성 보안을 강화할 수도 있다. HTTPS는 클라이언트와 서버 간의 오고 가는 데이터를 모두 암호화한다.

 

 웹서버는 소프트웨어적으로 WAS를 여러 개 두어 더 많은 사람들이 편하게 서비스를 이용하게 해주는 역할도 한다.

 WAS는 동적 페이지를 작성하고 많은 작업을 데이터베이스와 하기 때문에 엄청나게 바쁘다. 이런 WAS를 기능별로 나누어서 2~3개 만들고 웹서버에서 사람들을 분산시키는 역할도 할 수 있다. 로드밸런싱이라고들 한다.

출처 : https://wiki.logicaldoc.com/wiki/File:Apache-load-balancer-mod-proxy-http.png

 

평소 웹서버와 WAS의 역할을 애매하게 알고 있던 사람들에게 도움이 되었으면 한다.

누군가 웹서버와 WAS의 차이나 역할이 뭐냐고 물어보면 이 포스팅을 보여주고 말려고 작성해본다.

글이 유용했거나 도움이 되셨다면 공감 클릭 부탁합니다.

반응형

댓글