tmxklab
Web Server, WAS, Application 개념 정리 본문
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가 있다.
[ 웹 서버 시장 점유율 ]
2. 웹 애플리케이션(Web Application)
사용자가 웹을 이용해서 웹 서버에서 기능을 제공하는 소프트웨어이다. 만약에 네이버라는 웹 사이트에 접속하면 검색 기능이나 로그인, 회원 가입, 메일 확인 등 여러 가지 기능을 볼 수 있을 것이다. 이러한 기능들을 사용자에게 제공하기 위해 웹 브라우저에서 특정 기능들을 처리할 수 있도록 미리 애플리케이션을만들어 둔다.
이처럼 HTML등의 콘텐츠를 미리 만들어 두었다가(정적) 처리하는게 아니라 동적으로 콘텐츠를 생성하는 역할을 한다.
(웹 애플리케이션 == 동적 콘텐츠)
3. CGI(Common Gateway Interface)
웹 애플리케이션이 나오기 전에는 정적으로 HTML를 미리 만들어 두었다가 처리했는데 그렇게 하면 상황에 따라 처리하는 것이 힘드므로 동적으로 페이지를 생성하는 웹 애플리케이션이 나왔다.
CGI는 최초의 웹 애플리케이션 기술로 클라이언트의 요청을 웹 서버가 프로그램에게 전달하기 위한 구조이다. 이를 통해 CGI에 의해 프로그램이 동적으로 콘텐츠를 생성할 수 있도록 도와준다. CGI 프로그램에는 웹 서버의 환경에 따라 다르게 구현되는데 주로 c, Perl, VisualBasic, 등의 프로그래밍 언어가 사용된다.
하지만 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 > Concept' 카테고리의 다른 글
[web] DAO, DTO, VO 개념 정리 (1) | 2020.10.28 |
---|---|
[web] MVC 패턴 (0) | 2020.10.28 |
[web] Framework (0) | 2020.10.28 |