본문 바로가기
IT || 개발공부

[프로그래밍] 웹 페이지에 동적인 생명을 불어넣기 위한 기술들

by saesong 2023. 1. 21.

1-2-1. 웹 페이지에 동적인 생명을 불어넣기 위한 기술들

 

앞서 1-2 정적페이지, 동적 페이지 포스팅 말미에 언급한, 웹 페이지에 동적인 개념들을 실제로 구현하기 위한 기술들을 알아보겠다.

(1) CGI(Common Gateway Interface)
가장 먼저 동적인 생명을 불어넣기 위한 기술은 CGI이다. CGI는 Common Gateway Interface의 약자로 사전적 의미는 월드와이드웹(WWW) 서버와 백 엔드(back-end) 프로그램('게이트웨이'라고 부름)사이에서 정보를 주고받는 데 사용되는 인터페이스이다.
CGI는 웹서버와 동적 콘텐츠 생성을 맡은 프로그램 사이에서 정보를 주고받는 인터페이스이다. 이 게이트웨이 개발 언어로 Perl, C 등 다양한 언어 사용이 가능한 것이 장점이다. 처리방식으로는, 어떠한 요청에 대해 특정 *프로세스가 생성되어 그 요청을 처리한 뒤 버리게 된다.

* 프로세스: 프로그램이 실행 중인 상태를 말한다. 바탕화면에 있는 아이콘을 더블클릭하여 실행하지 않으면 그저 하나의 프로그램으로만 존재할 뿐이다. 우리가 클릭하여 어떠한 프로그램이 실행되었다면 그것이 '실행 중인 상태' 라고 할 수 있다.

◆tip◆ 스레드(thread): 컴퓨터 프로그래밍에서 어떤 프로세스 또는 프로그램의 일부분이 되는 프로세스이다.
은행을 예로 들면, 프로세스는 은행이고 스레드는 은행 안에 있는 각각의 창구이다. 그리고 각각의 창구에서 여러 사람이 업무를 본다. 창구가 하나밖에 없다면 또 다른 은행을 만들어 업무를 처리해야 하는 비효율적 현상이 발생한다. 창구가 하나인 게 더 효율적이지 않겠는가?

CGI에 대해 덧붙여 설명하자면, 1000번의 동적인 콘텐츠 요구에 대한 응답을 제공하기 위해 CGI 프로그램은 1000개의 프로세스가 생성되었다가 해당 요구에 대한 처리를 마친 후 종료된다. 이러한 프로세스 기반의 CGI 프로그램은 많은 사용자가 몰리는 웹 사이트에 요구되는 무수한 요청에 대해 하나의 요청마다 새로운 프로세스가 생성-처리-종료하는 방식 때문에 시스템에 많은 부하를 가져왔으며 이러한 부분은 중대한 단점으로 나타나게 되었다. 하지만 CGI는 동적 콘텐츠 생성 기술 중 비효율적이긴 하지만 이후 발전될 기술들의 기반이 되었다.

(2) 확장 CGI
전통적인 CGI 방식의 단점들을 보완한 기술들이 확장 CGI로 발전하게 되었다. 확장 CGI는 매번 프로세스를 생성하는 방식이 아니라 동일한 프로그램에 대해서는 하나의 프로세스를 생성한 후 여러 개의 스레드 방식으로 요청이 처리되는 방식이므로 시스템 부하를 줄일 수 있다. 확장 CGI에 속하는 기술들은 ASP, PHP, Servlet, JSP 등이 있다. 이러한 기술들의 특징을 간략히 알아보자.

▣ ASP(Active Server Page)
Microsoft사에서 만들어진 확장 CGI의 기술이다. ASP는 비주얼 베이직이라는 언어의 문법 중 일부를 사용하여 동적 콘텐츠를 만들어내기 위한 기술이다. ActiveX란 컴포넌트를 직접 사용할 수 있고, 그런 컴포넌트를 개발하기 위한 기능도 제공하여 많은 호응을 얻고 있다. 하지만 특정 웹서버와 OS(운영체제)에서만 작동한다는 것이 단점이다.

▣ PHP(Personal HomePage Tools, Professional Hypertext Preprocessor)
ASP와는 달리 특정 영역에서만 동작하지 않고, C언어의 문법과 유사하므로 기존의 개발자들이 접근하기 쉽다. 또한, 적은 명령어들로 프로그래밍할 수 있게 되어있기에 편리성 측면에서 많은 이점이 있다. 하지만 PHP는 복잡한 요구들에 대한 기능들이 미약하다는 단점이 있다.

◆tip◆ 스크립트 언어
스크립트는 컴퓨터 프로그래밍에서 어떠한 프로그램이라기보다 '어떤 일을 수행하는 부분 코드들' 정도로 이해한다. 일반적으로 프로그램은 어떤 프로그램이 언어로 작성되어 그것을 컴파일하여 실행할 수 있게 된다. 그렇게 하기 위해서는 완성된 프로그램의 형태를 띠고 있어야 한다. 하지만 스크립트는 그러한 완성된 프로그램보다 명령어들의 부분적인 나열로 이해한다. 그리고 서블릿과 JSP는 Sun사의 Java라는 언어를 기반으로 Java의 특징을 그대로 수용하므로 플랫폼과 독립적으로 어느 운영체제든 지원한다.

댓글