tmxklab

Web Server, WAS, Application 개념 정리 본문

Web/Concept

Web Server, WAS, Application 개념 정리

tmxk4221 2020. 10. 28. 18:16

0. client-side & server-side

처리되는 작업의 위치에 따라 client-side & server-side로 구분된다.

1) client-side

클라이언트 측(브라우저)에서 수행하는 처리를 뜻한다.

  • 3대장 : HTML(구조), JavaScript(동작), CSS(디자인)
  • Ajax, jQuery 등등..

2) server-side

서버 측에서 수행하는 처리를 뜻한다.

  • PHP, JSP, ASP
  • Ruby, Python 등등...

1. 웹 서버(Web Server)

웹 브라우저(클라이언트)의 요청(http request)을 받아 해당하는 웹 페이지를 찾아서 보내주는(response) 역할을 수행한다. 또한 웹 서버는 HTML 문서 파일을 찾아서 보내주는 것 외에도 HTML문서를 생성하는 프로그램 즉, 웹 애플리케이션을 호출하여 실행결과를 보내주는 역할도 수행한다.

대표적인 웹 서버로는 Apache의 Apache Web Server, MS의 IIS, nginx의 nginx Web Server가 있다.

 

[ 웹 서버 시장 점유율 ]

참고 : https://news.netcraft.com/

 


2. 웹 애플리케이션(Web Application)

사용자가 웹을 이용해서 웹 서버에서 기능을 제공하는 소프트웨어이다. 만약에 네이버라는 웹 사이트에 접속하면 검색 기능이나 로그인, 회원 가입, 메일 확인 등 여러 가지 기능을 볼 수 있을 것이다. 이러한 기능들을 사용자에게 제공하기 위해 웹 브라우저에서 특정 기능들을 처리할 수 있도록 미리 애플리케이션을만들어 둔다.

이처럼 HTML등의 콘텐츠를 미리 만들어 두었다가(정적) 처리하는게 아니라 동적으로 콘텐츠를 생성하는 역할을 한다.

(웹 애플리케이션 == 동적 콘텐츠)

 

 


3. CGI(Common Gateway Interface)

웹 애플리케이션이 나오기 전에는 정적으로 HTML를 미리 만들어 두었다가 처리했는데 그렇게 하면 상황에 따라 처리하는 것이 힘드므로 동적으로 페이지를 생성하는 웹 애플리케이션이 나왔다.

CGI는 최초의 웹 애플리케이션 기술로 클라이언트의 요청을 웹 서버가 프로그램에게 전달하기 위한 구조이다. 이를 통해 CGI에 의해 프로그램이 동적으로 콘텐츠를 생성할 수 있도록 도와준다. CGI 프로그램에는 웹 서버의 환경에 따라 다르게 구현되는데 주로 c, Perl, VisualBasic, 등의 프로그래밍 언어가 사용된다.

 

참고 :  https://ezphp.net/docs/about_php/

 

하지만 CGI 프로그램에는 문제점이 2가지가 존재하는데...

① 독립적인 프로그램을 실행하기 위해 많은 시스템 자원 필요

② CGI 프로그램의 실행 흐름을 웹 서버가 적절하게 제어할 수 없다.

위와 같은 문제점을 해결하기 위해 서브루틴 형태로 웹 애플리케이션을 만드는 것이었다. 이후에는 OOP기법이 도입되면서 웹 애플리케이션을 객체 형태로 구현하는 기술이 등장한다. 그 중 하나가 서블릿이고 서블릿은 JSP(JavaServer Pages)와 동일하게 java를 기반으로 하는 웹 애플리케이션 프로그래밍 언어

 

+) CGI vs Servlet

클라이언트의 request를 처리하기 위해 CGI는 Process 단위로 처리하지만 서블릿은 Thread 단위로 처리한다.

 


4. WAS(Web Application Server)

WAS는 정적인 콘텐츠를 제공하는 웹 서버와 달리 DB조회나 다양한 로직을 처리할 수 있도록 동적인 콘텐츠를 제공하기 위해 만들어진 미들웨어 서버이다. (WAS = Web Server + Web Container)

WAS는 JSP나 Servlet을 실행시킬 수 있는 소프트웨어인 Web Container로 불리기도 한다.

+) Web Container

웹 컨테이너는 서블릿 클래스를 가지고 인스턴스화를 통해 서블릿 객체를 만든 다음에 그 객체를 초기화하여 웹 서비스를 할 수 있는 상태로 만든다. 이렇게 웹 서비스를 할 수 있는 상태가 서블릿.

서블릿의 생명 주기를 관리하고 JSP를 서블릿으로 변환하는 기능을 수행한다.(JSP Container)

 

WAS가 Web Server를 포함하는 것인지 아닌 것인지 잘 이해가 안 갔었는데 결론적으로 상황에 따라 다른 것 같다.

 

구조)

  • Client → Web Server → DB
  • Client → WAS → DB
  • Client → Web Server → WAS → DB

위 구조의 WAS가 웹 서버의 역할도 하니깐 2번처럼 웹 서버없이 WAS만 가지고 있으면 안되나?라고 생각할 수 있다. 하지만 위에서 봤듯이 웹 서버는 정적인 페이지의 요청을 처리하고 WAS는 동적인 동적인 페이지의 요청을 처리하는데다가 다양한 로직과 DB 등 많은 일을 한다. 부하가 많이 발생할 것 같은 상황에는 3번째처럼 WAS에서 한번에 다 처리하는 것이 아니라 Web Server와 WAS를 분리하여 사용하기도 한다.

 

참고 자료)

 

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

Step by step goes a long way.

gmlwjd9405.github.io

 

 

'Web > Concept' 카테고리의 다른 글

[web] DAO, DTO, VO 개념 정리  (1) 2020.10.28
[web] MVC 패턴  (0) 2020.10.28
[web] Framework  (0) 2020.10.28
Comments