최근에 가장 각광받는 Web기술이라고 한다면 단연 RIA기술일 것이다. Macromedia가 가장 먼저 내놓은 이 개념과 용어는 Flex와 Flash를 웹에서 가장 인기있는 기술로 성장시킨 대표적인 RIA기술임과 동시에 현재 주류 웹기술로서 소위 잘나가는 기술이다. 물론 Microsoft나 Sun의 입장에서는 Silverlight나 JavaFX도 있다고 할지 모르겠지만 이들은 아직 개인적인 생각에는 Flex/Flash에 비하려면 업그레이드해야할 기능이 한참 멀었다. 특히 Media에 치중하고 있는 이 두기술에 비해, Flex/Flash는 Media를 넘어 Web Application의 Frontend로서, Mobile Device의 UI로서 영역을 확장하고 있어 사실상 대안기술이 없다고 봐야할 것이다.(Silverlight를 주 기술로 사용하는 분들께는 죄송하지만 개인적으로는 그렇다는 것이다.)
하지만, Flex/Flash도 개인적으로는 회의적으로 보는 기술이다. 사실 처음부터 그렇지는 않았다. 하지만 점점 새로운 Flex/Flash가 나올 수록 점점 회의적으로 변했다고 해야 맞을 것이다. 여러곳의 글에서 나는 Flex나 Flash를 "껍질"일 뿐이다라고 폄하한 적이 있다. 물론 이런 시각은 지금도 마찬가지다.
Adobe의 주장대로 Flex/Flash가 배우기 쉽고, 응용하기 기술인가에 대하여 전적으로 동의할 분은 과연 몇이나 될까? 하면할수록 어렵고, 귀찮고, 무언가의 한계에 부딪히는 것이 아닐까 생각이드는데.. 물론 이런 느낌이 순전히 주관적인 것이지만, 오늘은 혹시나 이런 생각을 가지고 있는 분들에게 몇가지 권유을 하고 싶어 이렇게 글을 쓰고 있다. 결론 부터 말하자면 Flex나 Flash에 회의적인 분들에게 Coldfusion을 권해 보려고 한다. 그리고 하나더 덧붙히자면, 현재 Flex나, Flash에 종사하거나, 이 기술에 환상적인 매력을 가지신 분들에게 미리 양해의 말씀을 드린다. 이글에서 다소 폄하고 있으므로.. 하지만 이런 생각은 순전히 개인적인 주관이니, 그려러니 생각해 주셨으면 한다.
개인적으로 Flex/Flash에 대하여 물론 그것들이 화려하고, 편리하고, 또 강력한 UI를 제공하고 있다고 하더라도 그것외에 그닥 볼만한 기능이 더 이상 없다는 것에 늘 한계를 느낀다. 내가 처음 Flash를 접한것은 2000년도의 Flash 4시절이였다. 사실 Flash MX 때나 되어야 제대로된 Flash라고 볼때 이전 버전들는 그저 웹애니매이션 저작툴에 불과했다. 하지만 MX이후로도 물론 사용은 했지만, 항상 서버측 파트너를 따로 익혀야 제대로된 뭔가를 만들 수 있다는 것에 늘 회의적인것은 예나 지금이나 마찬가지다. 그러던 중 코드만으로 Flash를 만든다는 Flex를 접한것이 Flex 1.5시절이였는데, 이것 역시 나의 관심을 오래 끌진 못했다. 우선, Component로 쉽게 Form요소를 구성하는 것에는 높은 점수를 주었으나 이것 역시 서버측 파트너는 늘 따로였다.
서버측 파트너가 뭐가 그리 중요하냐고 반문하는 분들도 분명있겠다. 단순 화려한 Flash/Flex Application만으로도 오감을 만족하는 분들이 계실 수 있기 때문이다. 하지만 나는 근본주의자며, 원리주의자이기 때문에 껍질에 불과한 것에 대한 점수는 높히 줄 수 없다. 웹이란 환경은 수많은 Data의 조회와 업데이트로 이루어진 하나의 거대한 Application이다. 그렇기 때문에 본연의 이런 기능에 대한 기술에 더 높은 점수를 주고, 더 대우를 받아야 한다고 보는 입장이다.
좀더 쉽게 말하자면, 가령 Flex로 GRID에 Data를 바인딩하는 Application을 구축한다고 생각해보자. 이때 필요한 기술은 MXML을 짜는 기술, Actionscript로 MXML에 이벤트를 주는 기술, PHP/JSP나 LCDS/BlazeDS 등으로 Data를 조회화는 기술 등 눈으로 보이는 하나의 GRID를 만드는데 해야할 것이 너무 많다. 물론 실력이 좋은 분들이야 뭐가 문제이겠느냐마는 가령, Flex Builder로 Frontend를 짜는 기술은 가지고 있으나 PHP/JSP를 할줄 모르거나, 또는 LCDS등을 도입하는 비용이 없다거나 하는 경우가 전혀 없다고도 볼 수 없다. 더욱이 하나의 개발도구로 모든 것이 처리가 안된다. LCDS/BlazeDS와 같은 서버측 구동제품까지 있으니 이를 설치하고, 연동하는 작업까지 정말 해야할 일이 너무 많다.
하지만 Coldfusion을 쓰게 되면 어떻게 될까? 사실 Coldfusion의 RIA적인 기능이 Flex나 Flash처럼 100% 유연하지는 않지만, 거의 대부분의 기능을 흉내낼 수 있다는 것을 전제로 더욱이 비용적인 측면에서도 Flex Builder나 LCDS를 구매하는 것에 비해 대동소이하다면 말이다. 극다적으로 말하자면 Coldfusion은 서버측만 있으면 화면을 꾸미는 UI와 PHP/JSP/LCDS/BlazeDS처럼 Data를 조회하고, 업데이트하는 언어적 기능을 모두 하나의 Editor로 처리할 수 있는 유일한 제품이다.
위 예에서 Flex에서 GRID를 만드려면, MXML이란 언어와, Actionscript언어, PHP/JSP(또는 LCDS/BlazeDS)언어 3가지를 알아야 한다. 하지만 Coldfusion에서 CFML이란 Markup 언어 하나만 알면 된다. 물론 덤으로 Actionscript나 Javascript를 알면 좋겠지만 몰라도 사실 무방하다. 이와 관련된 몇가지 간단한 예를 보여드리고자 하는 것이 오늘 이글의 주 목적이다. Flex가 못하는 것을 Coldfusion은 한다는 것과 Flex가 하는 것을 Coldfusion도 한다는 것을 말이다. (하지만 Flex보다 Coldfusion이 더 낫다는 말은 아니다. 좋고 나쁨은 주관적인 평가이기 때문이거니와 적용되는 분야에 따라 평가는 달라질 수 있기 때문이다.)
Sample 1 : Form 요소의 표현
예제보기 : http://sandbox.freecoldfusionhosting.com/members/n/nooree/cfform.cfm
소스보기 : http://www.nooree.com/samples/coldfusion/cfform.html
위 예제에서는 간단하게 Coldfusion에서 DataGird를 동적으로 생성해 본 예제이다. 사실 Coldfusion내부적으로는 Flex의 MXML을 쓴다. 하지만 Flex에서 바로 처리할 수 없는 Database에서의 Query를 Coldfusion은 할 수 있다는 차이점이 있다. 쿼리결과를 바로 Grid에 바인딩이 가능하다.(이 예제에서는 임시로 Data를 CFC로 처리하였다. 계정이 DB를 제공하지 않는 관계로 ㅠㅠ) GRID뿐만 아니라, Text Input, Radio, Checkbox와 같은 Flex에서 쓰는 모든 Form요소를 Flash포맷으로 동적생성이 가능하며, CFML과 간단한 Actionscript으로 제어가 가능하다. 물론 Flex처럼 Component의 Skining도 지원한다. 한가지 더 나아가 이런 FORM요소를 AJAX나 Java Applet로도 동적생성이 가능하다.
Sample 2 : Chart의 표현
예제보기 : http://sandbox.freecoldfusionhosting.com/members/n/nooree/chart.cfm
소스보기 : http://www.nooree.com/samples/coldfusion/chart.html
Coldfusion에서도 동적으로 차트를 생성할 수 있다. 물론 Flex처럼 색상을 바꾸거나, 스킨을 적용할 수 도 있다. 또한 차트에 이벤트를 걸어 다른 URL로 링크를 걸거나 할 수 있다. Flex에서 쓰이는 대부분의 Cahrt를 제공하고 있다. 하지만 역시 CFML만으로 Database에서 데이터를 Select하고 바로 Binding이 가능하다. Flex builder와 PHP 또는 BlazeDS/LCDS를 왔다갔다 할 필요가 없다.
Sample 3 : PDF/FlashPaper의 생성
예제보기 : http://sandbox.freecoldfusionhosting.com/members/n/nooree/pdf.cfm
http://sandbox.freecoldfusionhosting.com/members/n/nooree/flashpaper.cfm
소스보기 : http://www.nooree.com/samples/coldfusion/pdf.html
http://www.nooree.com/samples/coldfusion/flashpaper.html
Coldfusion에서는 별다른 플러그인의 추가없이 태그만으로 동적 문서를 생성할 수 있다. 물론 HTML코드가 적용된 양식문서나, Web Page를 동적으로 생성할 수 있다. (한가지 한국어처리 문제가 있기는 하다. 영문OS나 한국어 Font가 빈약한 Linux시스템에서의 처리에 한국어 표기가 불편하다. 몇가지 추가적인 작업이 필요한데 이 부분은 한국인으로서 Adobe에 대한 영원한 요청사항이 아닐까?)
Sample 4 : FLV의 재생
예제보기 : http://www.nooree.com/samples/cfvideo/player2.cfm
소스보기 : http://www.nooree.com/blog/post.cfm?entry=rialo-cfvideoplayer-flv
Open Bluedragon에서의 예제 : http://cfservice.net/demo/cfvideoplayer.cfm
아직 Adobe Coldfusion에서는 지원하는 기능은 아니지만, Railo/Open Bluedragon에서는 지원하는 <CFVIDEO>태그로 사용자가 동영상을 업로드하면, 동적으로 FLV로 변환하여 재생시켜주는 Youtube와 같은 Application을 쉽게 구현하거나, 동적으로 FLV파일에 대한 재생기를 쉽게 생성할 수 있다. (위 Sample 1~3의 경우는 OpenSource엔진에서는 지원이 불가능하거나 제한적인 부분이 있다. 각 엔진별로 차이점이 조금씩 있다는 점을 알려드린다.)
자, 간단하게나마 Coldfusion도 할 수 있다는 것들에 대하여 알아보았다. 사실 Flex보다 유연한 것은 아니지만, 그렇다고 정형화되어 있는 것도 아니다. 문제는 개발자의 상상이다. Coldfusion의 RIA적인 요소에 대하여 다양한 예제를 보려면 다음의 링크들을 참고해 보길 바란다. Coldfusion이 국내에서 생소하다보니 아마 대부분은 "그렇군.."하면서 한 10여분 재미난 것을 구경하는 것 이외 아무것도 아닐 수 있겠다.
분명히 말씀드리지만 Coldfusion만으로 국내에서는 밥먹기 힘들다. 해외에서는(가까운 일본만 하더라도) 가장 인기있는 웹프로그래밍 종목중에 하나지만 유독 한국에서는 도입이 매우 희박하다. 아마도 비용적인 측면이나 개발자 수급에 어려움이 있어서 그럴 수 있는데, 오히려 나의 경우는 스스로 Coldfusion을 하는 이유는 오히려 국내의 이런 환경때문에 희소가치가 있다고 보기 때문이다.
예를 들어 내가 근무하는 회사에서의 Project에 Coldfusion을 도입하여 본 결과 고객만족도도 높고, 비용도 별반 차이가 없었다.(물론 아직까지는 너무 생소하여 Open Source엔진인 Railo만 적용하고, 개발자가 부족하여 극히 전체 프로젝트의 일부에만 적용하고 있지만..) 더욱이 좋은 점은 PHP등의 전통적 언어에 비하여 비주얼한 환경이 많아서 단가를 높게 받을 수 있으며, 타 경쟁업체에서 전혀 할 수 없는 언어이기 때문에 고객사를 빼앗길 염려가 아직은 없다.
왜 Coldfusion을 하는가? 또는 왜 Coldfusion을 해도 되는가? 라는 질문을 하신다면 나는 이렇게 대답하고 싶다.유일한 존재가 되기위하여 라고..
사실 Coldfusion에 대한 공부를 좀 하였거나 국내자료를 찾다보면 블루마인드커뮤니케이션과 바닐라로이의 김태식님과 김진욱님, 그리고 강대전, 강정민, 박재현님 등의 기고글, 샘플예제들을 쉽게 찾을 수 있다. 원래 다들 Coldfusion을 하던 분들이다. 물론 개인적인 안면이 있어 왜 Coldfusion을 버렸냐고 물어보지는 않았지만, 아마도 척박한 국내사정상 비지니스가 힘들어서가 아닐까 싶다. 하지만 내 개인적인 생각에는 불과 2~3년전만 하더라도 OpenSource Coldfusion엔진들이 없어 비싼 Adobe Coldfusion외의 대안이 없었지만 지금은 2~3개의 Major급 오픈소스프로젝트들이 있어 Coldfusion을 해도 승산이 있다고 본다.
대한민국 최초 타이틀은 놓쳤지만 유일한 타이틀은 지금 Coldfusion을 시작하는 분들이 가져갈 수 있기 때문에 승산이 있다고 보는 것이다. 아직 변변한 책한권 없는 국내 Coldfusion환경이지만 책 없다고 공부못한다는 것은 인터넷시대에 맞지 않는 핑계요 변명이라고 본다. 그래서는 유일한 존재가 되지 못한다. 당신 혼자 유일한 존재 하세요~ 라고 한다면야 뭐 딱히 대꾸할 말도 없지만, 이글에 한분이라도 Coldfusion에 관심가지고 끝까지 한국의 Coldfusion을 개척하고자 하는 분들이 생기기를 바라면서 마칠까 한다.