사용자가 웹 브라우저의 URL을 통해 서버에게 HTTP Request를 보내면 웹서버는 요청(Request)에따라 알맞는 응답(Response)을 한다는건 알았다. 그렇다면 웹 서버는 어떻게 동적인 웹 컨텐츠를 만들어 반환할 수 있었던 것일까?
필요한 사전지식
- 프로세스 : 프로그램이 실행중인 상태로 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것을 말한다. 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원 그리고 스레드로 구성된다.
- 스레드 : 프로세스 내에서 실제로 작업을 수행하는 주체를 의미한다. 모든 프로세스에서는 한 개 이상의 스레드가 존재하여 작업을 수행해야하며, 두 개 이상의 스레드를 갖는 프로세스를 멀티스레드 프로세스라고 한다.
- 비유법을 써보자면 은행이라는 프로세스에 여러개의 스레드라는 창두어 업무를 처리할 수 있다는 뜻으로, 하나의 프로세스에 여러 스레드가 존재할 수 있다.
동적 페이지 생산을 위해 웹 서버에 탑재된 프로그램
- 웹에서 보내온 동적 페이지 요청에 응답하기 위해 웹 서버는 요청을 적절히 처리할 수 있는 부가 프로그램에게 요청을 다시 재전송하며. 서버의 요청을 받은 부가 프로그램은 결과물을 생성하여 다시 웹 서버에게 넘겨주고 웹 서버는 다시 사용자의 웹 브라우저에게 넘겨줘 결과물을 보여준다.
- 이때 웹 서버에 탑재된 부가 프로그램을 CGI라고 부른다.
CGI(Common Gateway Interface)
- 월드 와이드 웹(www)서버와 백 엔드 프로그램(게이트웨이)간 정보를 주고받는데 사용되는 인터페이스이며, CGI의 규약을 준수하면 어떠한 언어도 사용 가능하다는 것이 장점이다.
- 웹 서버와 동적 콘텐츠 생성을 맡은 프로그램 간 정보를 주고받는 인터페이스이다.
- CGI 프로그램은 처리방식에 있어서 프로세스를 생성하여 처리하는데, 하나의 요청에 대해 하나의 프로세스를 생성을 한 뒤 요청을 처리하고 종료된다.
- CGI프로그램은 프로세스 기반이므로, 웹 사이트에 요청을 할 때 마다 프로세스가 생성되고 처리하고 종료하는 방식으로 인해 시스템에 많은 부하를 가져온다는 커다란 단점이 존재한다.
확장CGI
- 기존 프로세스 기반 CGI방식의 단점을 보완한 기술들이 확장 CGI로 발전하였다.
- 하나의 요청에 대해 매번 프로세스를 생성하는 방식이 아닌, 동일한 프로그램에 대해서는 하나의 프로세스를 생성한 후 요청에 대해 여러 스레드를 이용하여 처리하는 방식으로 인해 시스템의 부하를 줄일 수 있게 되었다.
- ASP, PHP, Servlet/JSP 등이 확장 CGI에 속한다.
ASP
- 비주얼 베이직이라는 언어에서 사용되는 문법들을 사용하여 동적 콘텐츠를 만들어 내기 위한 기술
- ASP는 ActiveX라는 컴포넌트를 직접 사용할 수 있고, 그런 컴포넌트 개발을 위한 기능도 제공한다.
- IIS 서버를 사용하기 때문에 윈도우 운영체제(플랫폼)에 종속적이다.
PHP
- ASP와 달리 특정 영역에서만 동작하지 않고, C언어의 문법과 유사하여 접근성이 좋다.
- 적은 명령어들로 프로그래밍이 가능하여 편리하나 복잡한 요구들에 대한 기능들이 미약하다는 단점이 존재한다.
- 윈도우, 유닉스 운영체제와 아파치, IIS서버등을 지원한다.
Servlet/JSP
- Java기반이기 때문에 플랫폼과 독립적이라 어느 운영체제에서도 사용 가능하다는 장점이 있다.
- 컴파일된 파일을 재컴파일 없이 즉시 이식 가능하다.
- Servlet : Java 언어 기반 동적 콘텐츠 생성을 위한 기술을 제공한다. Java 코드 안에 HTML 태그가 혼재되어 있어 작업에 대한 분리적인 측면에서 효율성이 떨어진다.
- JSP(Java Server Page) : Java언어 기반이며. ASP와 PHP처럼 HTML 태그 사이에 동적 컨텐츠 생성을 담당할 Java코드가 들어가 있는 형태로 서블릿과 정 반대의 모습을 취하고 있다. 동적 컨텐츠 생성을 위해 스크립트 언어 형식으로 프로그램을 작성할 수 있어 편리하며, 사용자 정의 태그를 지정할 수 있어 보다 효율적인 웹 사이트 구성이 가능하다.
이러한 확장 CGI의 기술들은 스크립트 형태의 웹 페이지로 어느정도 공통된 형태를 갖고 있으며, 서버 측에서 동적인 콘텐츠 생성을 담당하는 기술들이다.
스크립트 언어(Script Language)
- 스크립트 : 어느 한 프로그램이 아닌 '어떤 일을 수행하는 부분 코드들'
- 일반적으로 프로그램은 프로그램 언어로 작성된 파일을 컴파일하여 실행할 수 있는 완성된 형태이나, 스크립트 언어는 명령어들의 부분적인 나열로 브라우저에서 랜더링되어 실행된다.
- 서버 측 스크립트와 클라이언트 측 스크립트가 존재한다.
서버 측 스크립트(Server Side Script)
- 서버 측에서 동적인 컨텐츠 생성을 담당하는 기술
- CGI, PHP, ASP, Servlet/JSP등이 여기에 해당된다.
클라이언트 측 스크립트(Client Side Script)
- 클라이언트 사용자의 웹 브라우저에서 실행되는 언어
- Applet, Javasciprt 등이 여기에 해당된다.
총정리
- 웹 서버의 CGI인터페이스를 통해 동적 웹페이지를 생산해 사용자에 요청에 응답할 수 있다.
- 기존 프로세스 기반 CGI의 문제점을 극복하기 위해 스레드 기반인 확장 CGI가 만들어 졌으며 ASP, PHP, Servlet/JSP가 여기에 해당된다.
- 확장 CGI는 서버 측 스크립트 언어로 서버에서 동적 웹 페이지를 만들어 반환하는 기술이다.
'JSP' 카테고리의 다른 글
[JSP]JSP의 지시자와 액션태그 (0) | 2023.03.15 |
---|---|
[JSP]JSP의 스크립트 요소 (0) | 2023.03.14 |
[JSP]Model1, Model2 (0) | 2023.03.14 |
[JSP]JSP의 개념 (0) | 2023.03.14 |
[JSP]전체적인 흐름 (0) | 2023.03.10 |