HTML(Hypertext Markup Language)은 문서를 위한 용도개발된 언어입니다. 이를 인터넷 상에서 사용하기 위해서는 HTML 문서를 가져와서 전달하는 프로그램이 필요합니다. 이러한 프로그램을 웹 서버라고 부릅니다. 사실 웹 서버라고 해서, 대단한 프로그램은 아니고, 컴퓨터에 띄워 놓으면 인터넷을 통해 HTML 문서를 전달하는 프로그램입니다.

 

  웹 서버의 기본 기능은 위의 그림과 같이 HTML문서를 가져와서 전달하는 것입니다. 그러나, 이러한 방법은 단순히 저장되어 있는 문서만을 제공하기 때문에, 다양한 서비스(예: 이 메일, 게시판, 주식정보 등)를 제공 할 수 없습니다. 예를 들어 주식 정보를 제공하는 사이트가 있다고 생각해봅니다. 문서의 내용은 시간에 따라 새로운 내용이 업데이트 되어야 합니다.

 

  위의 그림은 1월 7일과 8일의 결과가 다릅니다. 즉, 하얀색 글씨는 고정되어 있는 글씨이지만, 노란 색 글씨는 실시간으로 업데이트 되어야 하는 부분입니다.

 

<HTML 문서를 가져오기> - 일반적인 방법

  하지만, 주식 서비스와 같이 실시간으로 내용이 변해야 하는 경우에는, 위와 같은 방법으로는 사용이 어렵습니다. 그래서, 프로그래머들은 필요할 때마다 프로그램을 통해 HTML 문서를 작성하는 방법을 생각해냅니다. 주1)

<프로그램으로 HTML 만들기> - CGI 방법

  예를 들면, 아래와 같은 프로그램을 통해, 메시지를 만들게 됩니다. .

 

<프로그램으로 HTML 만들기> - 간단한 프로그램 부분

  날짜와 가격은 변하는 수(variable)이기 때문에 따로 '$날짜'와 '$가격'과 같이 따로 받아오게 됩니다. 이 값들을 바탕으로, 웹 서버는 HTML로 텍스트를($output)을 직접 만들어 전달합니다.

 

  즉 위와 같이, 문서를 달라는 요청이 있을 때, 문서를 직접 조립해서 주는 것이지요. 이러한 방식으로 웹 페이지를 만드는 방식을 CGI(Common Gateway Interface)라고 부릅니다. 이러한 패러다임은 단순히 문서를 제공하는 것에서 확장되어, 다양한 서비스(이 메일, 게시판, 뉴스 등)를 제공할 수 있게 만드는 기반이 됩니다. 다양한 웹 프로그래밍 언어들(PHP, JSP, ASP 등등) 또한 이에서 파생되었다고 볼 수 있습니다. [1]

웹 프로그래밍의 가계도 - 서버 [2]

CGI 식으로 웹 서비스를 만들기 위해서는 고려해야 할 사항이 많습니다. 미리 약속된 웹 규격도 맞춰야 하고 (HTTP), 성능도 나와야 하고, 사용자에 대한 정보도 저장해야 하고(Session), 확장성도 고려해야 하고, 보안도 생각해야 합니다. 사실은 이것 외에도 고려해야 할 사항이 꽤 있습니다. 그에 비해서, 웹 프로그래밍 언어(예: PHP, JSP, ASP)들은 위에서 열거한 기본 기능들을 기본적으로 제공하면서, 좀 더 쉽게 사용할 수 있는 편의성과 함께 자신들만의 장점들을 제공합니다. 주2) 주3)

  예를 들어 찜닭을 만든다고 생각해 보겠습니다.
(1) CGI 식으로 만든다면…… 먼저 닭부터 잡아야 합니다. 그리고, 털도 뽑고, 양념도 어느 정도 직접 만들어야 합니다.
(2) 웹 프로그래밍 언어 식으로 만든다면, 슈퍼에서 닭과 양념장을 사서 쉽게 만들 수 있습니다. 심지어 어떤 제품들은 전자레인지에 데우기만 하면 완성되는 제품들도 있습니다. (예: Ruby on Rails)

  그래서, CGI가 나쁘냐고 물어보신다면, 꼭 그렇지는 않습니다. CGI식으로 찖닭을 만드는 경우 시간도 오래 걸리고, 만드는 사람에 따라 맛은 보장되지 않습니다만, 반대로 환상의 찜닭을 만들 수도 있습니다. 동일하게, 전자레인지용 찜닭의 경우는 쉽게 만들 수 있고, 일정한 맛은 보장되지만, 품질을 어느 정도 포기해야 할 수도 있습니다.

  다음 이야기에서는 내가 입력한 정보(예: 아이디, 패스워드)가 어떻게 서버에 전달되는지, 그 방법에 대해서 살펴보겠습니다. :)

[1] CGI에 대한 내용의 WIKI
http://ko.wikipedia.org/wiki/%EA%B3%B5%EC%9A%A9_%EA%B2%8C%EC%9D%B4%ED%8A%B8%EC%9B%A8%EC%9D%B4_%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4

[2]http://upload.wikimedia.org/wikipedia/commons/e/e4/Web_development_timeline.png

  주1) 실제의 서버에서는 요청이 있을 때마다 매 순간 페이지를 생성하지는 않습니다. 계속 동일한 내용을 보내주어야 한다면, 매 순간 HTML 문서를 새로 만드는 것이 아닌, 이전에 미리 만들어놓은 HTML문서를 돌려줍니다. 이 방법을 캐쉬(Cache)라고 합니다.

주2) 엄밀히 말하면, 웹 프로그래밍 언어가 기본 기능을 제공하는 것이 아니라, 웹 서버(Web Application Server)나 서버 모듈이 제공한다고 볼 수 있습니다.

주3) 각 웹 프로그래밍 언어들은 자신만의 장점들을 가지고 있는 경우가 많습니다. PHP(Personal Home Page Tools)은 누구나 쉽게 만들 수 있도록 개발된 언어이고, ASP는 윈도우(.NET) 환경에서 사용되도록 고려되었습니다. JSP는 JAVA기반으로 어떤 컴퓨터나 OS(Linux, Windows 등)에서도 잘 동작합니다.

Posted by kkckc
,