Flex에 대한 단상...
요즘 Flex에 대한 이야기가 단연 화두이다. 누구나 아는 다국적 기업에서 야심차게 준비한 프로덕일 뿐만 아니라, 도입한 많은 회사에서 만족감을 표시하고 많은 개발자들이 관심을 가지고 있는 솔루션이다. 그러나 조금씩 어디서 부턴가 Flex가 본래의 목적과 의미에 맞지않게 변형되고 있다는 느낌을 많이 받는다. 어떻게 Flex를 사용하고 어떤 개념을 적용해야 하는지 큰 테두리 안에서 한번 얘기해 보겠다.
우선, Flex의 기원에 대해서 살펴보자.
Flex의 원래 이름은 Enterprise Presentation Server이다....
여기서 핵심은 Enterprise....라는 부분이다. 즉, 기업의 업무환경을 표현하기 위해 개발된 UI 솔루션이다.
그럼 기업 업무에 필요한 UI는 어떤것인가?
다음과 같은 몇가지 사항이 필요하다고 생각되고 Flex는 어떻게 지원하는지 살펴본다.
1. 사용자가 편하게 업무를 할 수 있게 해야 한다.
=> Flex는 C/S 어플리케이션 수준의 Interactive한 기능을 제공함으로써, 기존에 만들어진 VB, Delphi, PowerBuilder로 구성된 업무 어플리케이션의 기능을 대부분 제공한다.
2. 빠르고 쉬운 개발이 가능해야 한다.
=> MXML과 ActionScript 사용으로 UI 로직과 컨트롤 부분을 분리해 MVC 패턴을 완벽하게 지원하고, 객체지향 개념을 대부분을 구현할 수 있어 Java 개발자들이 쉽게 이해하고 코딩할 수 있다.
3. 유지보수가 편리해야 한다.
=> Enterprise 환경에서의 개발은 어플리케이션을 만들고 나면 끝이 아니다. 현업에서 피드백되는 많은 요구사항을 빠르게 반영할 수 있어야 하고 오류가 발생할 경우 빠른 수정이 가능해야한다.
=> Flex로 개발했을 경우 이러한 유지 보수에 대한 장점을 제공할 수 있고, 그 근거는 FDS를 사용하여 빠르게 비즈니스 로직과의 동기화를 이뤄낼 수 있고, 업무와 UI를 일관성 있는 J2EE 패턴으로 묶을 수 있다.
=> 따라서, Flex를 사용하는 장점을 최대한 살리기 위해선, Flex 프로젝트에는 절대 Flash 컨텐츠가 들어가면 안된다. Flash가 들어가는 순간, 유지보수의 부담은 롤러코스트가 된다.
=> 많은 Flash 업체들이 Flex를 사용하면서 Flex 어플리케이션을 Flash 어플리케이션 처럼 구성하게 되는데, 이는 당장 개발만 이쁘게 하고, 향후 유지 보수적인 측면은 책임을 지지 않겠다라는 처신으로 밖에 생각되지 않는다. Flex로 Enterprise의 모든 업무와 UI를 구성할 수 있음에도 불구하고, 자신들이 하기쉬운 Flash로 개발한다는 것은 Flex에 대한 기만행위이다.
=> 특히, 마케팅과 영업적인 이유로 Flex는 화려하다 라는 소개를 많이 했으나, Flex는 절대 화려하지 않다. 절대 화려한 UI를 위해서 Flex를 사용해선 안된다. Enterprise 어플리케이션은 업무를 빠르고 적절하게 표현하면 충분한 것이지 UI를 미려하게 할 필요가 전혀 없다. 화려한 UI 중심으로 개발할 경우 누가 어떻게 유지보수를 감당할 것인가? 화면에 Effect를 하나 더 줄 시간에 업무 분석에 시간을 더 사용하라.
4. SI 솔루션과의 통합이 유연해야 한다.
=> 기업의 업무는 하나의 솔루션으로 이루어 지는것이 아니다. 따라서 수많은 구성요소와의 빠르고 편리한 통합을 할 수 있어야 하고, Flex는 표준을 지키는 어떠한 솔루션과도 쉽게 연동이 가능하다. 쉽게 말해서 Java 표준을 지키는 모든 형태의 솔루션과 통합이 가능하다.
=> Flex를 사용했을때 시스템 통합과 관리를 저해하는 요소 중 하나라고 할 수 있는 화려한 UI는 다시한번 지양해야 할 요소라고 말하고 싶다. 업무에 맞춰 UI를 조립하는 것은 당연하다. 그러나 여러가지 효과가 들어가있는 UI 때문에 업무와의 통합이 어려워 지고 업무의 인터페이스를 Flex기준으로 맞춘다면, 어떤것이 주이며, 어떤것이 부인지를 한번만 생각해본다면 바로 정답이 나올 것이다.
위에 열거한 내용들을 기준으로, 그럼 누가 Flex를 개발해야하는가...
간단명료하게 정리해보겠다.
1. Flash와 ActionScript와 약간의 웹 language(ASP, PHP) 정도만을 아는 Flasher(?)들은 Flex를 하지말기를 부탁드린다. 특히 객체지향 개념과 디자인패턴, Enterprise Architecture에 대해 모르는 사람이라면 제발 Flex 개발을 한다고 나서지 않길 바란다(물론 이와 같은 개념에 대한 학습을 하시는 분은 예외다.)
2. Java, C++, C/S 개발툴(VB, Delphi, PowerBuilder, MFC)를 해보신 분은 적극 추천한다. 여러분들이 알고 있는 지식을 대부분 활용할 수 있는 환경을 제공하고 있다.
개인적인 의견으로, Flex는 Flash를 했던 사람의 영역이 아니다. 최근 들려오는 Flex에 대한 부정적인 인식과 실폐사례를 보면 Enterprise 환경에 대한 이해가 없는, Java 개발 경험이 없는 업체들이 화려한 UI만을 무기로 시장에 뛰어 들어 개발을 한 결과다라는 것이 중론이다. Flex는 단순히 UI를 만들면 끝나는 것이 절대 아니다. 기업의 업무 환경을 이해하고 거기에 가장 적합한 표현을 하기위해 도입하는 것이지, Effect 클래스 하나를 잘 써서 사용자에게 시각적인 즐거움을 주기위해 나온 솔루션이 절대 아니다. 화려한 UI를 강조하는 사람들은 정말 부탁이니 당신들이 유지보수를 하는 상황에 놓여있다는 생각을 단 한번만이라도 해보고 개발하자. 그럼 절대 Flex는 화려한 UI 솔루션이다라는 말을 입밖으로 할 수 없을 것이다. 결론적으로 Flash 했던 사람은 Flash 세상에서 놀고, Flex는 Enterprise를 잘 알고 있는 개발자들이 했으면 하는 바램이다.
written by 신호승(동부 CNI)
이올린에 북마크하기
이올린에 추천하기



댓글을 달아 주세요
네, Flex로 개발됐다는 것의 의미가 화려함을 의미하는 것으로 연결되어서는 안될 듯 합니다. 다만, Flash 사용자가 기존에 디자이너도 개발자도 아닌, 굳이 개발자로 넣는다면 액션스크립트 개발자의 모습이었다면, Flex를 통해 좀 더 유연한 개발자 모습을 갖출 수 있는 기회가 아닐까요? Flasher를 위한 Flex 접근 글도 다뤄주시면 도움이 되지 않을까 싶은 ^^;
주변에서 Flex 사이트라고 하는데, Flex Builder를 사용해 개발했다고 Flex 사이트라고 할 수 없는 것 아닐까요? Flex Data Service가 존재하는 이유가 무시 당하는 듯 ^^
맞습니다. 일부 flash와 AS를 해보신 분들이 Flex에 대해서 잘못 이해 하고 계신 분들이 많이 계신데, Flex는 Enterprise 시스템에서 Presentation Layer를 아주 효과적으로 개발할 수 있는 탁월한 기술입니다. RIA에서는 가장 선도적이라 할 수 있는 기술인데, 이 기술이 빛을 보려면, Back end의 Business logic 단과 인터페이스 설계가 필수 불가결 합니다. 이부분의 설계에 대한 고려가 전혀 없는 상태에서 Flex는 효과적으로 Enterprise 시스템과 통합 되어 운영될수 없습니다. UI만 덩그러니 운영하고 싶어서 Flex 기술을 도입하는 곳은 결코 없을 거라고 생각합니다.
하지만 이런 고려가 선행 된다면, Presentation Layer 구현에 있어서 개발자에게 상당한 생산성을 보장하고, 고객 만족도가 높은 RIA를 선보일 수 있습니다. Flex가 분명 UX가 높은 아주 Interactive한 환경을 구사해 주는건 사실이지만, RIA는 application 입니다. 켄 제이콥스가 app=code+data라고 했는데, 이는 데이터와의 연결성을 의미하는 큰 전제이죠.
좋은 글 감사드립니다.
내비둬..
글의 요지는 알겠으나 UI 이펙트를 고려하지 않는다면 뭐하러 그 많은 관련 클래스와 메소드가 있을까요?
개발자 중심의 편협한 생각이 아닐까 생각합니다.
Flex의 가장 큰 장점은 design과 development의 분리라고 생각합니다. Effect를 어떻게 주는가에 대한 고민은 개발자의 몫이 아니라고 생각합니다. 신호승님과 같은 투철한 가치관이 있으시다면 비지니스 로직 개발에 전념하시면 되는거 아닌가요?
Flex의 발전을 바라고 걱정하시는 마음은 알겠으나 누군가에게 "해라", "하지말아라"의 권한은 주어지지 않습니다. 그런 말투를 사용하기 보다는 [F학점의 기쁨]님의 말처럼 Flex에 접근하는 방법을 고민해 보는 것이 지금 이런 소모성 논란의 글을 쓰는 시간을 효과적으로 사용하는 것이라 생각합니다.
글을 보면서 답답한 생각이 드는군요. 아직도 이런 답답한
생각을 가진 개발자가 존재 한다는게 말입니다.
전 c개발자 출신으로 자바나 flash , flex 등을 사용해서
개발 하고 있는 사람입니다만.. 예전 c 개발자들이 자바나
타언어 사용자 주로 하던 소리를 똑같이
하는 격인걸 보니.. 안타까운 마음만 듭니다.
얼마나 좁은 생각인지는 시간이 지나면 아실겁니다.
저는 처음 flex를 접하게 되는 공학도 입니다.
지금까지 C나 java 문법 정도만 통달하고 기초 프로그래밍만 겨우 할 정도 입니다. 그런데 flex를 만나고 부터 지금까지 공부한게 헛것은 아니구나 라는 생각이 들더군요.
이유는 간단합니다. 어차피 embedded의 개발자 이외의 app개발자라면 flex로 작성해도 무관하다는 겁니다. 특히 웹과 연동된 프로그램 같은 경우가 flex의 막강한 화력을 보일 수 있다 생각이 듭니다. 하지만 flex가 나온지 얼마 되지 않았기에 특히 다른 직종보다 보수적인 s/w산업에선 선듯 flex개발팀을 꾸리기가 힘들어 보입니다. 대부분이 c++이나 java에서 멈춰버린 상황이니 말입니다.
Flash 개발자의 입장에서는...
Flex는 결코 공부하기 쉬운 기술은 아닌듯 합니다.
Flex를 실무에서 제대로 개발 하려면 비지니스 로직을
담당하는 WAS의 특성을 어느정도 이해하고 있어야
하는 것도 물론 중요한 일이라고 생각을 합니다.
하지만 Flesh라는 플랫폼의 특성을 생각해 본다면...
화려한 UI를 극대화 시키는 것.
이것 역시 앞으로 Flex개발자가 질머지고 가야할
몫이 아닐까 생각을 해봅니다.
자바와 같은 런타임 형태로 구현되는 것이지만
클라이언트단에 최적화 되어 있고 화려한 기술들을
더 크게 활용을 한다라면 앞으로 Flex 개발자의
연봉 역시 크게 향상 되지 않을까 생각을 해봅니다.
이런 점에서 Flash를 5년넘게 해온 저로써는
현재 최고로 잘 나가는 플래시 기술로 마냥 즐거운
생각이 들면서도 한편으로는 Flex의 Frameworks을
깊히 이해하고 공부해야 하는 딜레마 역시
교차되는 부분인거 같내요.
마지막으로 Flex는 자바와 정말 잘 어울리는 기술인거 같습니다. ^^