by 션 헐(Sean Hull), Oracle & Open Source의 공동저자
관련 기사: 오라클과 오픈소스
웹사이트를 구축하려고 한다면, 웹사이트에서 많은 사용자를 처리할 수 있고, 강력하고 역동적이며, 더 나은 검색과 아카이브(archive)를 제공하기를 원할 것이다. 그리고 오라클은 배율화(scale)를 잘 하고, 동시에 많은 접속을 처리할 수 있기 때문에, 다양한 데이터베이스 중에서 오라클을 선택하였다고 하자.
오라클을 선택한 다음에는 어떻게 해야 하는가? 아마 어떤 개발 기술을 사용할지 아직 고민하고 있을 것이다. 다양한 상업적 솔루션을 검토해 본 후 어느 한 가지 옵션에 묶이게 될까봐 성급하게 판단을 내리지 못하고 있다고 하자.
그렇다면 오픈 소스 웹 기술을 접해 보기를 권한다. 오픈 소스 웹 기술은 다양하며, 살펴볼 것이 많다. 시간을 충분히 갖고 각 기술에 대해 살펴보라. 그리고 당신이 사용하게 될 언어의 장, 단점을 고려하고, 어떤 솔루션이 자주 사용되는지 살펴보라. 그 기술을 사용하는 상업적인 사이트에 대해 사례를 분석한 것이 있는지 찾아 보고, 그들의 경험을 배워라. 다양한 툴과 기술의 개발자, 자주 방문하는 사이트 관리자에게 이메일을 보내는 것도 좋은 방법이다.
이 글에서는 스크립팅 기술과 자바 기술(자바서버 페이지는 두 가지 범주 모두에 맞지 않지만)을 다룰 것이며, 마지막으로 최종 사용자간 솔루션(end-to-end solution) 에 대해 언급할 것이다. 우선, 다양한 스크립팅 언어에 대해 살펴보자.
스크립팅 솔루션
언어에는 다양한 분야가 있다. 스크립팅 언어는 프로토타이핑(prototyping)하기 쉽고, 유동적이고 변화하는 웹 개발 환경에서 사용하기에 적합하다. 하지만 자바도 서블릿의 형태로, 다양한 이점이 있다. 강력한 그래픽을 지원하는 API가 있고, 가비지 컬렉션(garbage collection) 기능이 있으며, 바이트 코드로 컴파일하는 기능도 있다. 환경에 따라 스크립팅 속도가 더 빠를 수도, 느릴 수도 있다. 기술을 선택하기 전에 두 가지를 비교하여, 장, 단점을 따져 보아야 하겠다.
PHP
PHP는 라스무스 러도프(Rasmus Lerdorf)가 처음 고안했다. PHP는 단순하면서도 강력한 스크립팅 언어이며, 이것을 사용하면 HTML 페이지에 코드를 이식하여 다양한 일을 할 수 있다. 이 코드는 확장되거나 다양하고 복잡한 HTML 자체로 반환될 수도 있다. 예를 들어서 오라클 데이터베이스에 접속해서 사용자-패스워드의 조합이 유효한지 알아볼 수 있으며, 타당한 정보로 반환할 수 있다.
PHP는
Informix,
마이크로소프트 SQL 서버,
MySQL,
ODBC 드라이버뿐 아니라 오라클의 지원도 받는다. 만약 오라클을 사용하기로 결정한다면, PHP가 당신에게 적당한지 확인해야 한다. 하지만 다른 데이터베이스로 프로토타이핑하려고 한다면, 좀더 신중히 생각해 보아야 한다. PHP를 MySQL과 오라클에서 모두 사용할 수 있지만, 동일한 코드로 데이터를 검색할 수 없다. 다른 호출을 사용하기 때문에, 데이터베이스 추상화를 깨뜨릴 지도 모른다. PHP를 사용할 때에는 이 점만 주의하면 된다.
만약 이것이 충분하지 않다면, 아파치를 웹 서버로 사용하고 있을 경우 이미 모듈(mod_php)이 있을 것이며, 거기서 아파치 엔진에 구축된 PHP 스크립트 인터프리터를 제공한다. 그 모듈은 정말 강력하다.
버전 4.0에서 PHP는 많은 함수와 관련 기술을 포함하였다. 명령형 프로그래밍 언어에 익숙한 사람들은 빨리 익힐 수 있을 것이다. 게다가 개발자 사이트나 PHP 오픈 소스 기술로 묶어서 나온 패키지도 많이 있다. 모든 것을 고려해 봐도 PHP는 배우기 쉬우면서도 강력하고 지원도 잘 되는 기술이다.
EmbPerl
PHP 뿐 아니라 펄로도 임베디드 스크립트를 작성할 수 있다. 제럴드 리히터(Gerald Richter)가 개발한
EmdPerl 기술을 사용하면 된다. 개발하는 데에 펄을 사용하면 이점이 많다. 그 중 하나는
CPAN(Comprehensive Perl Archive Network)에서 시험판 패키지를 구할 수 있다는 것이다. 거기에는 거의 수백 가지 패키지가 있다.
펄로 웹사이트를 만들면
DBI라는 일반적 드라이버로 데이터베이스 접근을 할 수 있다. 오라클에 접속할 때에는 DBD::Oracle을 사용하고, MySQL에 접속할 때에는 DBD::mysql을 사용하는 등, DBI에서는 데이터베이스에 따라 다양한 드라이버를 사용한다. 만약 MySQL로 프로토타입을 설정하고 오라클을 생산 데이터베이스로 사용하고 싶다면, DBI를 쓰면 된다. 펄 코드는 전혀 바꿀 필요가 없다.
그것으로 충분하지 않다면, 펄 인터프리터를 아파치 엔진으로 가져오는 아파치 모듈(mod_perl)을 사용하면 된다. 이것을 사용하면 모든 코드가 더 빨리 작동할 것이다.
Mason - Perl
웹사이트를 펄로 만들면 DBI라는 일반적 드라이버로 데이터베이스 접근을 할 수 있다.
조나단 슈왈츠가 개발한
메이슨(Mason)은 EmbPerl과 비슷하다. 펄 코드나 스크립트를 인터프리터에서 전처리되는(아파치 엔진으로 컴파일되는) HTML 문서에 이식하면, 역동적인 HTML을 구현할 수 있다. 이는 대단하다.
하지만 메이슨은 여기서 한 층 더 나아간다. 다양한 펄 패키지를 골라서 사용할 수 있고, 영속적인 연결을 사용하거나 mod_perl로 아파치에서 펄 인터프리터를 사용할 수 있다. 메이슨에는 코드를 컴포넌트로 만드는 기능이 있다. 수만 줄의 코드로 이루어진 복잡한 웹사이트를 만들 때, 이 기능을 사용하면 시간을 훨씬 절약할 수 있다. 정말 멋지지 않은가?
메이슨은 세련된 미리보기 기능과 스테이징, 그리고 제품 모드 때문에 더 매력적이다. 이것을 사용하면 개발을 최적화하고, 제품의 목적에 맞게 일을 빨리 처리할 수 있다.
Aquarium - Python
펄과 PHP 솔루션에 만족하지 못하고 대안을 찾고 있다면, 파이썬 기반의
아쿠아리움(Aquarium)을 사용하라. 파이썬에 HTML이 이식된 스크립트를 구축하기 위한 모듈러 웹 애플리케이션 개발 시스템을 여기서 찾을 수 있을 것이다.
펄과 마찬가지로, 파이썬은 강력한 패키지가 있으며, 개발자 커뮤니티의 힘도 크다. 그래서 웹 개발에 사용하기에 좋다.
자바 솔루션
그 자체가 오픈 소스는 아니더라도,
자바도 오픈 소스 소프트웨어를 만들 수 있는 강력한 언어이다. 이 때문에
Oracle & Open Source에도 이 내용을 넣었고, 다양한 자바 기술에 대해서도 책에서 다루고 있다.
자바서버 페이지
자바서버 페이지(JavaServer Pages)는 다른 임베디드 스크립팅 솔루션과 비슷하다. 자바 코드를 HTML에 이식하면 인터프리터가 그것을 전처리한다. 오픈 소스 솔루션을 사용할 것이라면, 아마 웹 서버로 아파치를 사용할 것이며, mod_jserv 모듈을 통해 자바를 지원할 수 있으므로 유용하다.
자바 서블릿(Java Servlets)
스크립팅 언어는 프로토타이핑하기 쉽고, 유동적이고 변화하는 웹 개발 환경에서 사용하기에 적합하다.
자바 서블릿은 웹 개발의 패러다임을 새로운 국면으로 전환했다. 다양한 형태의 임베디드 스크립팅과 함께, 자바 서블릿은 기본적으로 동일하게 전통적이고 정적인 HTML 기술에 기반하고 있지만, 다양한 컨텐츠를 만들기 위해 데이터베이스에 역동적으로 연결할 수 있다. 자바를 사용하면 그렇지 않고서는 만들 수 없는 강력한 애플리케이션을 구축할 수 있기 때문에, 서버 쪽의 힘을 확장할 수 있다. 웹 서버와 클라이언트로 끊임없이 상호 작용을 할 것이다. 각 페이지의 요청 사이에서 서버는 당신에 대해 아무 것도 알지 못하며, 세션에 대한 개념도 없다. 계속해서 당신이 누구이며 무엇을 하고 있는지 정보를 주어야만 서버에서 다음에 무엇을 할지 인식할 수 있다. 하지만 서블릿을 사용하면 좀더 복잡한 연산을 할 수 있는 지속적인 세션을 만들 수 있다.
터빈(Turbine)
웹 기반의 솔루션은 아니지만
터빈은 자바 개발을 위한 강력한 프레임워크이다. 터빈의 큰 장점은 웹 개발자들이 자주 쓰는 컴포넌트를 제공하기 때문에 시간을 절약할 수 있다는 것이다. 터빈을 사용하면 파라미터파싱(ParameterParsing), 데이터베이스 연결 풀, 작업 스케줄링, 글로벌캐시 등을 제공한다.
그리고
Velocity Webmacro, 자바서버 페이지,
FreeMarker,
Cocoon 등을 사용하고 있다면, 터빈과 쉽게 통합할 수 있을 것이다.
톰캣
자카르타라는 프로젝트의 비호를 받으면서 다양한 아파치-자바 프로젝트가 조직되었다. 자바 서블릿과 자바서버 페이지 엔진의 조합을
톰캣이라고 부른다.
최종 사용자간(end-to-end) 솔루션
이전의 기술들은 오라클 기반의 웹 개발이라는 특정 면만을 다루었던 것과는 달리, 요즈음은 완전히 오픈 소스인 많은 솔루션을 사용할 수 있다. 위에서 살펴보았듯이, 오라클 기반의 웹사이트에서 사용할 수 있는 오픈 소스 기술은 정말 다양하다.