안녕하세요. VLAAH 개발자 홍민희입니다. 오늘은 VLAAH의 개발 플랫폼에 대해서 이야기하고자 합니다. 아마 개발자 분들에게만 재미있는 주제일텐데요. ㅋ
VLAAH 프로토타입은 Python으로 TurboGears 프레임워크를 이용해서 만들었습니다. DBMS로는 MySQL을 사용했고요. 하지만 몇가지 문제가 있어서 모두 날려먹게 되었습니다; 첫번째는 TurboGears의 로드맵을 보니 하위호환성을 별로 고려하지 않는다는 점이었고, 두번째는 프로토타입 개발 시에는 둘이었던 멤버(shinvee 님과 저)가 넷으로 불면서 Python을 학습하는 비용이 부담되었기 때문입니다. (사실 저는 Python 팬입니다. 무척 좋아해요.)
현재 보고 계시는 버전은 첫번째 프로토타입을 날리고 나서 새로 작성된 것입니다. 이 때는, 몇몇 분들은 의아하실 수 있겠지만, PHP로 작성되었습니다. 사실 Python에 비교하면 PHP는 썩 우아한 언어는 아니죠. 대신 제가 시작했고 흥섭 군이 참여하고 있는 Phunctional로 부족한 부분을 매꾸고 있습니다(흥섭 군은 제 후배로, 역시 야간개발팀 멤버입니다). Phunctional은 웹 프레임워크는 아니고, PHP에서 함수형 프로그래밍(functional programming)을 흉내내기 위한 눈물겨운 노력이 담긴 프레임워크입니다. PHP에는 원래 없는 람다 함수, 클로져 등을 지원하기 위해 갖가지 삽질을 한 결과이지요. 또 코드 중복을 제거하고 테스트 가능성(testability)을 높이기 위해 자체적으로 간단한 웹 프레임워크를 Phunctional 위에 얹어 만들어서 쓰고 있습니다. 언젠가 이 웹 프레임워크를 공개할 수 있을지 모르겠네요.
아, DBMS로는 PostgreSQL을 사용하고 있습니다. MySQL과 다르게 ORDBMS입니다. 테이블 상속(table inheritance)을 지원한다던가, 컬럼 타입으로 배열(array)이 가능하고, 사용자 정의 타입(composite type)을 만들거나, 연산자 재정의(operator overloading) 등이 가능합니다. 그 외에도 여러가지 재미있는 기능들이 많은 안전성 높은 오픈소스 DBMS입니다. PostgreSQL로 설계할 경우 디자인 방향 자체가 꽤나 달라집니다. 좀더 깔끔하게 디자인할 수 있습니다. 다른 분들께도 추천하고 싶네요. MySQL보다 훨씬 낫다고 생각합니다.
VLAAH에서는 PHP 코드에서 질의 문자열을 일일히 만들어서 쓰지 않기 위해, PostgreSQL 전용 ORM 프레임워크도 직접 작성해서 사용하고 있습니다. 이 ORM 프레임워크는 별도의 프로젝트로 진행중인데, 이름은 Phostgres라고 합니다. 개인적으로는 symfony 등에서 쓰이는 Propel이나 Active Record 패턴의 어설픈 PHP 구현들 등, 기존 PHP에서 구현된 각종 다양한 ORM 프레임워크를 찾아봤지만 사실 마음에 드는 것이 전혀 없었습니다. Python이나 Ruby 등 다른 언어에서는 SQLObject, SQLAlchemy, RoR의 ActiveRecord 등 걸출한 ORM 프레임워크가 많은데 PHP에는 찾을 수 없었죠. 게다가 PostgreSQL은 다른 DBMS와 공유하지 못하는 특징들이 많기 때문에 DBMS 중립적인 ORM 프레임워크를 쓴다는 것은 PostgreSQL의 장점들을 놓치는 결과가 됩니다. 그래서 PostgreSQL의 특징을 적극적으로 사용하는 전용 PHP ORM 프레임워크를 직접 만들기로 결정한 것입니다. 아마 Phostgres는 조만간 공개할 수 있을 것 같습니다.
생각해보니 VLAAH를 만들기 위해서 쓸데없는 수고를 더 많이 한 것 같기도 합니다. 배보다 배꼽이 더 컸던 것 같기도 하고요. 하지만 좋은 프레임워크는 좋은 서비스와 함께 만들어진다고 생각합니다. 앞으로도 VLAAH 개발을 진행하면서 부수적으로 산출되는 서브 프로젝트 결과물들을 종종 공개할 예정이니 야간개발팀을 응원해주세요.
