728x90
1. CGI (Common Gateway Interface) – 1990년대 초반
개념
- 웹 서버가 동적인 콘텐츠(예: 사용자 입력에 따라 변하는 웹 페이지)를 제공하기 위해 사용한 초기 기술.
- HTML 문서만으로는 사용자 입력을 처리할 수 없으므로, 웹 서버가 프로그램을 실행하고 그 결과를 웹 페이지로 반환하는 방식.
- 주로 Perl, C, Python, Shell Script 같은 언어로 작성됨.
작동 방식
- 사용자가 웹 페이지에서 데이터를 입력하고 제출하면,
- 웹 서버가 CGI 프로그램을 실행하고,
- 결과를 HTML로 변환한 후, 브라우저에 전송.
CGI 스크립트 예제 (Perl)
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<html><body>";
print "<h2>Hello, CGI!</h2>";
print "</body></html>";
서버가 요청마다 새로운 프로세스를 실행해야 해서 성능이 낮고, 확장성이 부족했음.
2. NSAPI/ISAPI (Netscape Server API / Internet Server API) – 1990년대 중반
개념
- CGI의 성능 문제를 해결하기 위해 웹 서버 내부에서 직접 실행되는 API 방식.
- NSAPI는 넷스케이프 서버용, ISAPI는 마이크로소프트 IIS(인터넷 정보 서비스) 서버용 API였어.
특징
- CGI처럼 매 요청마다 새로운 프로세스를 생성하지 않고, 웹 서버의 스레드에서 실행됨 → 성능 향상.
- 하지만 서버에 종속적인 코드라서 이식성이 낮고, 유지보수가 어려웠어.
ISAPI 예제 (C++)
#include <httpfilt.h>
BOOL WINAPI GetFilterVersion(HTTP_FILTER_VERSION *pVer) {
pVer->dwFilterVersion = HTTP_FILTER_REVISION;
strcpy(pVer->lpszFilterDesc, "Simple ISAPI Filter");
return TRUE;
}
성능은 좋았지만, 개발이 어렵고 서버에 종속적이라 유지보수에 어려움이 많음.
3. 서버사이드 스크립팅 (ASP, PHP 등) – 1990년대 후반
개념
- CGI, NSAPI/ISAPI의 단점을 보완하기 위해 등장한 기술.
- 서버에서 직접 HTML을 생성할 수 있는 스크립트 언어 기반의 웹 프로그래밍 방식.
- 대표적인 기술:
- ASP (Active Server Pages) – 마이크로소프트가 개발
- PHP (Hypertext Preprocessor) – 오픈소스, LAMP(Linux, Apache, MySQL, PHP) 스택의 핵심
특징
- HTML 내에서 직접 프로그래밍이 가능 → CGI보다 사용이 쉬웠음.
- 데이터베이스 연동이 용이 → 동적 웹사이트 구축이 쉬워짐.
- 하지만 비즈니스 로직과 UI가 혼합되어 유지보수가 어려웠음.
ASP 예제 (VBScript)
<%
Response.Write "<h2>Hello, ASP!</h2>"
%>
PHP 예제
<?php
echo "<h2>Hello, PHP!</h2>";
?>
CGI보다 빠르고, 배우기 쉬웠지만, 여전히 코드가 섞여서 유지보수 어려움이 있었음.
JSP와 서블릿이 등장한 이유
- CGI는 매 요청마다 새로운 프로세스를 실행 → 성능 문제
- NSAPI/ISAPI는 서버 종속적 → 플랫폼 독립성이 부족
- ASP, PHP 등 서버사이드 스크립팅 언어는 비즈니스 로직과 UI가 섞여 유지보수가 어려움
👉 Java 기반의 웹 개발 기술이 필요해졌고, JSP와 서블릿이 등장!
- 서블릿은 순수 Java 코드 기반,
- JSP는 HTML과 Java를 함께 사용할 수 있도록 지원.
- 그리고 이후 스프링(Spring)으로 발전하면서 더욱 강력한 웹 애플리케이션 개발이 가능해졌어.
정리: 웹 개발 기술 발전 흐름
시기 | 기술 | 특징 | 문제점 |
1990년대 초반 | CGI (Perl, C, Python) | 요청마다 새로운 프로세스 실행 | 성능 저하 |
1990년대 중반 | NSAPI/ISAPI (C, C++) | 서버 내부에서 실행 → 성능 개선 | 서버 종속적, 유지보수 어려움 |
1990년대 후반 | ASP, PHP | 서버에서 직접 HTML 생성, CGI보다 빠름 | UI와 비즈니스 로직이 섞임 |
1999년~ | JSP & 서블릿 (Java 기반 웹 개발) | Java로 웹 개발 가능, 유지보수 용이 | 코드가 많아지고 복잡해짐 |
2000년대 이후 | Spring Framework | MVC 아키텍처, 대규모 시스템 개발 가능 | 학습 곡선이 있음 |
728x90