본문 바로가기

웹 프로그래밍/Spring

Web Server와 WAS의 개념, 웹서비스의 아키텍쳐

 

 

 

 

시작하기에 앞서 1.CGI 에 대해서 간단히 읽어보고, 2.정적 페이지와 동적 페이지에 대한 개념을 알고, 3.웹서비스의 흐름도를 보고 이해한다.

 

그 다음 4.Web Server와 WAS의 개념을 정리하면서 차이점을 생각해보고, 추가적으로 웹 사용자가 요청하는 5.DBMS와 MiddleWare에 대해 알아본다.

 

 

1. CGI

 

Common Gateway Interface이다.

 

 

정적 컨텐츠를 공급하는 웹 서버와 동적 컨텐츠를 생성하는 웹 애플리케이션 간에 주고 받는 규칙을 정의한 것이 CGI 규격이다(데이터베이스의 ODBC, JDBC와 유사한 개념이다.). 이 규격을 준수한다면 어떠한 언어를 사용하더라도 동적 웹 프로그래밍을 할 수 있다. 하지만 CGI는 클라이언트의 각 요청(Request)마다 별도의 프로세스를 생성한다. 이는 요청이 많아질 수록 프로세스가 많아지며, 메모리 점유율 뿐만 아니라 프로세스 생성과 소멸에 의한 오버헤드 처리가 서버의 성능에 큰 영향을 미치게 된다. 그래서 현재 CGI 기술은 사장되었고 CGI를 대체할 여러 기술들이 등장했다.

 

 

 

2. Static Pages / Dynamic Pages

 

 

 

정적 페이지는 서버가 단지 클라이언트에게 부여 할 수 있는 html 파일이다. 즉, 변경할 수 없다는 의미는 아니지만 일반적으로 클라이언트가 요청할 때 서버가 "생각"할 필요가 없음을 의미한다. 그 이유는 웹 사이트가 작고 내용이 정체되어있을 때 정적인 것이 굉장히 빠른 이유이다.  대표적으로 Html, Image, JavaScript, CSS이 있다.

그러나 크기가 크고 무언가를 바꾸고 싶다면 정적 파일은 그다지 중요하지 않다. 왜냐하면 그 시점까지 만든 모든 파일을 변경하고 변경해야하기 때문이다.

 


웹의 더 큰 부분은 동적 페이지를 사용한다. PHP (예 : WordPress), ASP, Java, Perl과 같은 스크립팅 / 프로그래밍 언어로 작성된 코드 /  스크립트 , Python, Ruby, 등 사용자가 페이지를 요청하면 서버는 페이지를 처리하고 실행해야한다.  그리고 대부분의 경우 데이터베이스에서 무언가를 요청한 다음 페이지를 “완료”하여 처리해야한다. 

 

 

 

 

Static Pages

  • Web Server는 파일 경로 이름을 받아 경로와 일치하는 file contents를 반환한다.
  • 서버는 사용자의 요청에 해당하는 페이지를 그대로 전달한다.
  • Ex) image, html, css, javascript 파일과 같이 컴퓨터에 저장되어 있는 파일들을 보기 때문에 사용자는 서버의 데이터가 변경되지 않는 이상 늘 고정된 웹 페이지를 본다.

 

Dynamic Pages

  • Web Server에 있는 데이터들을 스크립트에 의해 가공처리 후 생성된 페이지를 전달한다.
  • 사용자의 요청을 해석한 후 가공된 페이지를 전달한다(서버에 의해서 실행되는 프로그램을 통해서 만들어진 결과물).
  • Servlet: WAS 위에서 돌아가는 Java Program
  • 개발자는 Servlet에 doGet()을 구현한다.

 

 

 

클라이언트는 일반적으로 웹 브라우저를 의미한다.

 

 

 

 

 

3. Web Server  ?

 

 

 

 

웹서버는 말그래도 작성된 html페이지 등을 네트워크망에 종속되지 않고, 웹서비스를 할 수 있도록 어플리케이션이다. 따라서 웹 브라우저 클라이언트로부터 HTTP 요청을 받아 정적인 컨텐츠(.html .jpeg .css 등)를 제공하는 컴퓨터 프로그램이다.

즉, HTTP 프로토콜을 기반으로 하여 클라이언트(웹 브라우저 또는 웹 크롤러)의 요청을 서비스 하는 기능을 담당한다.

Ex) Apache Server, Nginx, IIS(Windows 전용 Web 서버) 등



1) 정적인 컨텐츠 제공

WAS를 거치지 않고 바로 자원을 제공한다. 


2) 동적인 컨텐츠 제공을 위한 요청 전달
클라이언트의 요청(Request)을 WAS에 보내고, WAS가 처리한 결과를 클라이언트에게 전달(응답, Response)한다.

 

  • 클라이언트의 요청을 받아 HTML이나 Object를 http 프로토콜을 이용해 전송한다.
  • 사용자가 요청한 것들 중에 웹 서버 자체적으로 처리 할 수 없는 것을 컨테이너 등과 같이 처리할 수있는 곳으로 넘겨 처리 결과를 받아와서 사용자에게 넘겨주는 역할도 수행한다.
  • 웹 서버만으로 구축된 서버는 웹페이지, 이미지 등 정적인 페이지를 생성한다.

 

 

Web Server가 필요한 이유?


클라이언트(웹 브라우저)에 이미지 파일(정적 컨텐츠)을 보내는 과정을 생각해보자.
이미지 파일과 같은 정적인 파일들은 웹 문서(HTML 문서)가 클라이언트로 보내질 때 함께 가는 것이 아니다.
클라이언트는 HTML 문서를 먼저 받고 그에 맞게 필요한 이미지 파일들을 다시 서버로 요청하면 그때서야 이미지 파일을 받아온다.
Web Server를 통해 정적인 파일들을 Application Server까지 가지 않고 앞단에서 빠르게 보내줄 수 있다.
따라서 Web Server에서는 정적 컨텐츠만 처리하도록 기능을 분배하여 서버의 부담을 줄일 수 있다.

 

 

 

 

4. WAS ?

 

Web Application Server이다. 웹 애플리케이션과 서버 환경을 만들어 동작시키는 기능을 제공하는 소프트웨어 프레임워크이다. 인터넷 상에서 HTTP를 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해 주는 미들웨어(소프트웨어 엔진)으로 볼 수 있다. 
즉, 동적 서버 콘텐츠를 수행하는 것으로 일반적인 웹 서버와 구별이 되며, 주로 데이터베이스 서버와 같이 수행이 된다.

Ex) BEA의 WebLogic, IBM의 WebSphere, T-max의 Jeus, Tomcat, Redhot의 JBOSS

 

  • 웹 서버 + 웹 컨테이너
  • 웹 상에서 사용하는 컴포넌트들을 올려 놓고 사용하게 되는 서버
  • EJB와 같은 빈들이 올라가게 되며, 서버에 따라 웹에 필요한 많은 기능들을 포함하고있다.
  • J2EE 스펙을 구현한 서버 (JSP / Servlet Container 와 EJB Container 로서의 기능)
  • 웹 서버는 웹 문서를, WAS는 JSP페이지 등을 양분하여 서버 부담을 줄이는 것이 가능하다.

 

 

WAS가 필요한 이유?

 

웹 페이지는 정적 컨텐츠와 동적 컨텐츠가 모두 존재한다.
사용자의 요청에 맞게 적절한 동적 컨텐츠를 만들어서 제공해야 한다.
이때, Web Server만을 이용한다면 사용자가 원하는 요청에 대한 결과값을 모두 미리 만들어 놓고 서비스를 해야 한다. 하지만 이렇게 수행하기에는 자원이 절대적으로 부족하다.
따라서 WAS를 통해 요청에 맞는 데이터를 DB에서 가져와서 비즈니스 로직에 맞게 그때 그때 결과를 만들어서 제공함으로써 자원을 효율적으로 사용할 수 있다.

 

 

 

Web Server 와 Web Application Server의 차이는 ??

 

웹 서버(Web Server)는 아파치나 IIS와 같은 소프트웨어는 HTML/CGI나 기타 웹 문서들을 HTTP규약에 따라 웹 클라이언트와 주고받으며 통신하는 것이 주 역할이다.
웹 애플리케이션서버(Web Application Server)는 우선 규모가 크고 엔터프라이즈 환경에 필요한 트랜잭션, 보안, 트래픽관리, DB커넥션 풀, 사용자 관리 등등의 다양하고 강력한 기능을 제공하는 s/w를 의미한다.

 

 

 

 

 

5. DBMS와 MiddleWare의 개념

 


DBMS(Database Management System)

 

다수의 사용자들이 DB 내의 데이터를 접근할 수 있도록 해주는 소프트웨어이다.

DBMS는 보통 Server 형태로 서비스를 제공한다.
Ex) MySQL, MariaDB, Oracle, PostgreSQL 등


DBMS Server에 직접 접속해서 동작하는 Client Program의 문제점은 Client에 로직이 많아지고 이에따라 Client Program의 크기가 커진다. 따라서 로직이 변경될 때마다 매번 배포가 되어야 한다. 이를 해결하기 위해 MiddlWare가 등장했다.

 

 


MiddleWare

 

동작과정: Client - MiddleWare Server - DB Server(DBMS)


Client는 단순히 요청만 중앙에 있는 MiddleWare Server에게 보낸다.
MiddleWare Server에서 대부분의 로직이 수행된다.
이때, 데이터를 조작할 일이 있으면 DBMS에 부탁한다.
로직의 결과를 Client에게 전송한다.
Client는 그 결과를 화면에 보여준다.


즉, 비즈니스 로직을 Client와 DBMS 사이의 MiddleWare Server에서 동작하도록 함으로써 Client는 입력과 출력만 담당하게 된다.



 

 

 

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

Step by step goes a long way.

gmlwjd9405.github.io