본문 바로가기
Programming

[서버] 웹 서버(WS)와 웹 애플리케이션(WAS) 서버

by 조창대 2022. 7. 4.
반응형

* 김석훈 저자의 '파이썬 웹 프로그래밍-기초편'을 공부하며 작성함


 

단순한 프로그램을 짜는 것이 아닌 웹 서비스를 구축하려는 개발자라면 웹 서버와 웹 애플리케이션 서버의 차이 정도는 달달달 외워야 한다. 

우리가 주소창에 주소를 입력해서 해당 페이지로 이동하고, 페이지에서 클릭하는 행위와 게시글을 작성하는 행위의 원리를 모르면 내가 만든 서비스는 세상에 나올 수 없다. 그만큼 빡세게 이해해야 하는 개념이다.

 

먼저 우리가 주소창에 주소를 적고 엔터를 치면 동작을 실행하는 컴퓨터에선 무슨 일이 일어나는지 그림으로 표현해보겠다.

 

웹 서버와 웹 애플리케이션 서버 설명 그림

그림을 보기에 앞서서 클라이언트와 웹 서버, 웹 애플리케이션 서버, 데이터베이스 서버 모두 각기 다른 컴퓨터라고 생각해야 이해하기 쉽다.

 

 

클라이언트 컴퓨터는 지금 우리가 사용하고 있는 컴퓨터를 뜻한다. http 프로토콜은 클라이언트와 서버간의 통신 방식이다. 우리가 주소를 검색하면 http 프로토콜을 사용하여 클라이언트에서 웹 서버에 요청 메시지를 보내게 된다. 

요청을 받은 웹 서버는 요청이 정적 페이지면 자신이 처리하고, 동적 페이지에 관한 메시지가 있으면 웹 애플리케이션 서버에 위임하게 된다. 데이터의 수정, 삭제 등의 조작이 필요할 땐 웹 애플리케이션 서버는 데이터베이스 서버와 연동하여 데이터를 수정하고, 요청의 결과를 html 파일로 만들어서 웹 서버에 반환한다.

결과 html을 전달 받은 웹 서버는 그 결과를 첨부해서 클라이언트에 응답하며 요청에 맞는 html 파일이 클라이언트 컴퓨터에서 열리게 된다.

이런 방식으로 http 프로토콜 통신 방식을 이용한 요청 메시지와 응답 메시지가 반복적으로 오가며 우리가 웹을 사용할 수 있게 되는 것이다.

 

 

웹 서버(Web Server)

 

웹 클라이언트 서버의 요청을 받아서 처리하고 처리 결과를 다시 웹 클라이언트에 응답하는 서버를 통칭하여 웹 서버라고 한다. 주로 정적 페이지인 HTML, CSS, 이미지, 자바스크립트 파일을 웹 클라이언트에 제공해야 할 때 웹 서버를 사용한다. 그리고 동적 페이지 요청이 들어오면 처리를 웹 애플리케이션 서버에 위임한다. 

웹 서버와 웹 애플리케이션 서버가 역할을 분리하여 메모리 과부화를 줄인다.웹 서버는 요청 처리·반환 이외에도 캐시 기능, 프록시 기능, 처리 프로세스 관리, 인증 제어 및 암호화 처리 등 다양한 기능을 수행한다.

 

응용 프로그램명 ( 서비스를 제공하는 애플리케이션 )

  • Apache httpd
  • Nginx
  • lighttpd
  • lls
  • ...

 

 

웹 애플리케이션 서버 ( WAS : Web Application Server )

웹 클라이언트 서버가 동적 페이지를 요청했을 때, 웹 서버는 웹 애플리케이션 서버에게 처리를 위임한다. 여기서 동적 페이지란, 우리가 사이트 게시판에서 글을 쓰고 댓글을 다는 것이나, 온라인 쇼핑몰에서 옷을 구매하는 것을 가능케 하는 등 누가, 언제, 어떻게 클릭했는지에 따라 각기 다른 내용이 반환되는 페이지를 말한다.

그리고 데이터베이스 수정해야 하는 경우가 생길 땐 데이터베이스 서버와도 연동하여 CRUD 작업을 진행한다. 예를 들어 의류 쇼핑몰에서 상품을 주문했을 때 마이페이지에 주문 내역이 반영되는 것을 들 수 있다.

 

 

웹 초창기 땐 사이트에 들어가면 정보만 나열되어 있는 정적 페이지만 사용했지만, 점차 동적 페이지에 대한 요청이 늘면서 웹 서버와 구분된, 동적 페이지를 처리할 다른 서버가 필요해졌다. 그래서 초기에는 웹 서버와 독립적인 프로그램으로 프로세스를 처리하는 CGI 방식을 기용했지만, 1요청에 1프로세스가 생성되는 원리라 요청이 많아질수록 시스템에 많은 부하를 주는 요인이 되었다.

 

대안으로, 애플리케이션을 처리하는 프로세스를 미리 데몬* 으로 기동시켜 놓은 후, 웹 서버의 요청을 데몬에서 처리하는 방식이 나왔다. 이 데몬 프로그램이 점차 발전하여 애플리케이션 전용 데몬인 웹 애플리케이션 서버 방식으로 굳혀지게 되었다.

WAS는 파이썬 계열의 uWSGI, 자바 계열의 Tomcat 등 웹 서버와의 연동 규격에 맞는 언어 플랫폼을 이용해 프로그램을 작성하고 실행시킨다.  연동 규격만 맞으면 어느 언어든 애플리케이션을 만들고 요청을 처리할 수 있다.

 

* 데몬 프로세스 : 영생 불사 버전의 프로세스(항상 수행되고 있는 프로세스). 백그라운드에서 수행되는 프로세스로, OS가 가동될 때 자동으로 실행된다. 어떤 서비스에 1~10번 기능이 있을 때, 2번이나 4번을 수행하려면 반드시 1번을 수행해야 함. 이 때, 1번 기능을 항상 수행하는 프로세스를 데몬으로 처리하면 로딩되는 속도 줄이는 장점이 있음. 1번 프로세스를 데몬이라고 부름

 


응용 프로그램명

  • Apache Tomcat
  • WSGI
  • JEUS
  • ...

 

 

◇ 요약 ◆
- 동적 페이지에 대한 요구가 많아지며 웹 서버에서 이를 다 처리하기엔 과부화가 발생해 동적 페이지를 처리하는 프로그램이 따로 분리됨
- 동적 처리 프로그램이 점차 보완, 개선되어 웹 애플리케이션 서버로 자리매김
- 웹 서버는 정적 페이지 처리 담당, 웹 애플리케이션 서버는 동적 페이지 처리를 담당하며 효율적인 요청 처리

 

반응형