2 . 플렉스 2 가 좋 은 10 가지 이유 - 데이터 넷 
 GUI 트렌드 과거 와 현재 
 플렉스 2 가 좋 은 10 가지 이유 
 운영 체제 · 브라우저 독립성 보장 … 하나 의 플랫폼 으로 자리 잡 아 
 김태완 / / 
 대우 정보 시스템 대리 
 okcode @ gmail . com 
 지난 호 ‘ GUI 트렌드 과거 와 현재 ’ 에서 는 초기 웹 으로부터 웹 2 . 0 까지 의 흐름 을 살펴보 고 그 중 에서 웹 2 . 0 의 특징 과 웹 2 . 0 구현 기술 중 플렉스 에 대해 알 아 봤 다 . 이번 호에 는 RIA 솔루션 중 에서 가장 각광 받 고 있 는 플렉스 의 아키텍처 와 개발 환경 을 살펴보 고자 한다 . 플렉스 는 2004 년 3 월 에 처음 출시 됐 고 2006 년 7 월 에 발표 된 플렉스 2 가 최신 버전 이 다 . 아키텍처 분석 을 ‘ 플렉스 가 좋 은 10 가지 이유 ’ 라는 부제 로 플렉스 의 아키텍처 와 개발 환경 관점 에서 10 가지 의 특징 ( 장점 ) 을 살펴보 고자 한다 . 
 플렉스 특성 을 알아보 기 전 에 플렉스 최신 버전 의 제품군 을 살펴보 고자 한다 . 플렉스 2 는 플렉스 2 SDK , 플렉스 빌더 2 , 플렉스 데이터 서비스 2 , 플렉스 차 팅 2 로 구성 돼 있 다 . 플렉스 2 SDK 는 플렉스 프레임 웍 과 컴파일러 등 으로 구성 된 플렉스 개발 의 기본 툴 이 다 . 플렉스 빌더 2 는 플렉스 개발 툴 이 고 , 플렉스 데이터 서비스 2 는 플렉스 1 . 5 까지 플렉스 프리젠테이션 서버 라고 불리 던 것 에 메시지 서비스 ( JMS ) 를 추가 해 서버 와 클라이언트 ( 플렉스 애플리케이션 ) 가 데이터 통신 을 지원 하 는 서버 기술 이 다 . 플렉스 차 팅 2 는 1 . 5 버전 까지 제공 되 는 플렉스 차트 컴포넌트 의 확장 버전 이 다 . 
 플렉스 1 . 5 버전 까지 는 제품군 및 아키텍처 에서 클라이언트 와 서버 의 구분 이 불 분명 했 다 . 플렉스 2 제품군 은 플렉스 의 클라이언트 와 서버 를 명확히 구분 한다 . 플렉스 2 애플리케이션 이 플렉스 데이터 서비스 2 를 사용 하 는 것 은 선택 사항 이 다 . 따라서 플렉스 데이터 서비스 2 의 기능 을 사용 하 지 않 을 경우 플렉스 2 SDK 만 으로 플렉스 애플리케이션 개발 이 가능 하 다 . 
 이 때 플렉스 2 SDK 의 컴파일러 를 이용 하 거나 플렉스 빌더 를 사용 해 플렉스 애플리케이션 을 PC 에서 컴파일 하 여 플래시 파일 로 만들 고 이 SWF 플래시 파일 을 서버 에 배포 해 사용 할 수 있 다 . 따라서 플렉스 2 SDK 와 플렉스 차 팅 2 , 플렉스 빌더 는 클라이언트 에 속하 는 제품군 이 다 . 플렉스 1 . 5 버전 까지 는 플렉스 를 사용 하 기 위해서 는 플렉스 프리젠테이션 서버 를 구입 해야 만 했 다 . 플렉스 2 가 서버 와 클라이언트 를 완전 하 게 구분 하 기 때문 에 플렉스 데이터 서비스 를 사용 하 지 않 을 경우 매우 저렴 한 비용 으로 플렉스 프레임 웍 을 사용 할 수 있 다 . 
 플렉스 2 가 좋 은 10 가지 이유 
 1 . 플렉스 는 플래시 기반 기술 이 다 . 
 플래시 기술 이 웹 에서 애니메이션 처리 를 적용 시키 기 위해 개발 된 기술 로 개발 과정 은 디자인 중심 이 다 . 플렉스 는 플래시 를 기반 으로 만들 어 졌 다 . 플렉스 애플리케이션 의 최종 산출물 은 플래시 파일 이 다 . 플렉스 는 플래시 기술 위 에 디자인 중심 이 아닌 데이터 중심 의 애플리케이션 을 만들 기 위해서 만들 어 진 기술 이 다 . 은 플래시 와 플렉스 의 차이점 을 요약 한 것 이 다 . 플래시 는 플래시 플레이어 에서 실행 되 는 애플리케이션 이 다 . 플래시 플레이어 는 크로스 - OS 와 크로스 - 브라우저 를 보장 한다 . 플래시 플레이어 는 현재 PDA , 셋톱박스 , 핸드폰 등 컴퓨터 를 넘 어 다른 하드웨어 플랫폼 에 포 팅 되 어 사용 되 고 있 다 . 플렉스 는 플래시 를 기반 으로 하 기 때문 에 플래시 에서 가능 했 던 모든 애니메이션 효과 를 적용 시킬 수 있 으며 , 디자인 적 인 접근 법 이 아닌 데이터 와 개발 코드 중심 의 접근 법 으로 개발 돼 플래시 보다 유지 보수 나 개발 생산 성 이 뛰어나 다 . 
 플렉스 의 최종 산출물 은 플래시 플레이어 에서 작동 하 는 플래시 애플리케이션 이 다 . 현재 최신 버전 인 플렉스 2 는 플래시 플레이어 9 에서 작동 한다는 버전 상 의 제약 조건 이 있 기 는 하지만 기본 적 으로 플래시 플레이어 가 설치 된 곳 에서 는 플렉스 가 작동 한다 . 운영 체제 와 브라우저 가 다각화 되 면서 모든 운영 체제 와 모든 브라우저 에서 동일 하 게 표시 되 고 작동 하 는 웹 에플리 케이 션 을 개발 하 는 것 은 상당히 어려운 일 이 다 . 플렉스 는 플래시 플레이어 를 실행 환경 으로 하 기 때문 에 크로스 - OS 와 크로스 - 브라우저 와 애니메이션 효과 를 기본 적 으로 보장 하 는 솔루션 이 다 . 
 2 . XML 과 ECMA 스크립트 준수 하 는 개발 언어 체계 
 애플리케이션 을 개발 할 때 개발 언어 의 체계 는 개발 생산 성 및 유지 보수 에 많 은 영향 을 미친다 . 플렉스 애플리케이션 개발 에 사용 되 는 언어 는 MXML 과 액션스크립트 다 . MXML 은 xml 파일 이 다 . MXML 파일 은 CSS 스펙 레벨 1 과 W 3 C DOM 레벨 3 를 기반 으로 스타일 과 이벤트 모델 을 구현 하 고 있 다 . 
 액션스크립트 는 객체 지향 언어 로 에크 마스 크립트 ( ECMAScript ) 표준 을 기반 으로 만들 어 졌 다 . 에크 마스 크립트 는 자바 스크립트 의 표준 스펙 이 다 . MXML 과 액션스크립트 가 표준 스펙 을 기반 으로 만들 어 졌 기 때문 에 기존 에 XML , HTML , 자바 스크립트 에 익숙 한 웹 개발자 는 MXML 과 액션스크립트 를 어려움 없이 익힐 수 있 다는 장점 을 갖 고 있 다 . 
 3 . 플렉스 가 제공 하 는 다양 한 데이터 연동 방법 
 플렉스 는 서버 와 통신 을 하 기 위해 HTTP , AMF , RTMP 프로토콜 을 지원 한다 . HTTP 프로토콜 은 HTTP 서비스 방식 과 웹 서비스 방식 으로 구분 된다 . HTTP 프로토콜 을 사용 해 기존 의 웹 애플리케이션 이나 서버 의 웹 서비스 를 사용 할 수 있 다 . HTTP 방식 은 두 가지 방식 모두 XML 을 결과 로 받 아 처리 한다 . AMF 는 HTTP 프로토콜 을 위 에 인코딩 된 바이너리 데이터 를 송수신 하 는 방식 이 다 . 리모트 오브젝트 ( RemoteObject ) 방식 이 AMF 프로토콜 을 사용 한다 . 리모트 오브젝트 방식 은 서버 에 존재 하 는 자바 빈 의 메소드 를 플렉스 에서 직접 호출 할 수 있 고 AMF 가 지원 하 는 바이너리 데이터 를 사용 한다 . 리모트 오브젝트 방식 은 HTTP 서비스 방식 이나 웹 서비스 방식 에 비해 속도 가 빠르 다는 장점 을 갖 는다 . 리모트 오브젝트 방식 을 사용 하 기 위해서 는 플렉스 데이터 서비스 2 를 사용 해야 한다 . RTMP ( Real Time Message Protocol ) 는 TCP / IP 기반 이 소켓 통신 을 한다 . RTMP 프로토콜 을 사용 하 는 데이터 연동 방식 은 메시지 서비스 와 데이터 관리 서비스 가 있 다 . 
 HTTP 프로토콜 을 사용 하 는 것 은 기본 플렉스 SDK 2 만 을 이용 해 개발 가능 하 지만 AMF 와 RTMP 를 사용 하 는 것 은 플렉스 데이터 서비스 2 를 사용 할 경우 에 만 사용 가능 하 다 . 플렉스 의 데이터 연동 방식 을 정리 하 면 와 같 다 . 
 4 . 높 은 확장 성 
 확장 성 이 떨어지 는 RIA 솔루션 이 상당수 존재 한다 . 새로운 UI 컴포넌트 가 필요 하 거나 기존 의 컴포넌트 의 일부 UI 를 변경 해야 만 하 는 경우 에 개발자 가 직접 컴포넌트 를 확장 할 수 없 고 솔루션 벤더 에게 UI 컴포넌트 를 개발 및 수정 을 의뢰 해야 한다면 문제 가 심각 하 다 . 플렉스 는 UI 컴포넌트 의 액션스크립트 클래스 를 제공 하 고 있 고 이 소스 도 오픈 된 상태 이 다 . 액션스크립트 클래스 를 상속 하 거나 오픈 된 소스 를 활용 해 새로운 UI 컴포넌트 를 개발자 가 직접 구현 할 수 있 고 MXML 태그 로 컴포넌트 를 정의 해 재 사용 할 수 도 있 다 . 
 5 . MVC 아키텍처 에서 ‘ 뷰 ’ 계층 을 전담 
 웹 애플리케이션 은 일반 적 으로 MVC 패턴 으로 개발 된다 . MVC 패턴 이 란 애플리케이션 을 데이터 영역 ( M , 모델 ) , GUI 영역 ( V , 뷰 ) 과 데이터 영역 과 GUI 영역 을 연결 하 고 제어 하 는 영역 ( C , 컨트롤 ) 으로 분리 하 고 각 영역 별 로 역할 과 책임 을 구조 화 하 여 개발 하 는 방법 을 말 한다 . 플렉스 는 ‘ MVC ’ 중 에서 뷰 ( View ) 를 전담 하 는 RIA ( Rich Internet Application ) 솔루션 이 다 . 기존 에 존재 하 는 웹 애플리케이션 을 플렉스 로 전환 할 때 서버 에 존재 하 는 모델 과 콘트롤 영역 의 프로그램 변경 을 최소 화 하 면서 ‘ 뷰 ’ 부분 을 플렉스 로 전환 이 가능 하 다 . 
 플렉스 는 서버 와 통신 하 는 방식 으로 http , 웹 서비스 , 리모트 오브젝트 를 방식 을 지원 하 기 때문 에 기존 의 웹 애플리케이션 의 재 사용 성 을 극대 화 할 수 도 있 고 , 플렉스 리모트 오브젝트 를 사용 해 서버 에 존재 하 는 자바 메소드 를 플렉스 애플리케이션 에서 직접 호출 하 도록 개발 할 수 있 다 . 이 와 같 은 특성 은 플렉스 가 ‘ 뷰 ’ 영역 에 만 집중 할 수 있 는 기반 여건 을 제공 한다 . 이것 은 RIA 제품 의 기본 기능 이 어야 한다 . 하지만 많 은 RIA 제품 에서 이 당연 한 기능 이 결여 되 거나 부족 한 경우 가 많 다 . 때때로 RIA 제품 을 사용 하 기 위해 시스템 아키텍처 의 일부 를 수정 해야 하 는 경우 도 발생 한다 . RIA 제품 을 도입 하 거나 검토 할 때 ‘ 뷰 ’ 영역 만 을 대상 으로 한다는 것 은 매우 중요 한 요소 이 고 플렉스 는 이 항목 에서 가장 높 은 평가 를 받 고 있 는 솔루션 이 다 . 
 6 . 다양 한 컴포넌트 제공 
 플렉스 2 는 플렉스 애플리케이션 에서 사용 되 는 기본 컴포넌트 들 을 포함 하 고 있 다 . 플렉스 가 제공 하 는 컴포넌트 는 컨트롤 컴포넌트 , 레이아웃 컨테이너 컴포넌트 . 네 비 게 이터 컨테이너 컴포넌트 , 차트 컴포넌트 로 구분 할 수 있 다 . 기본 컴포넌트 를 이용 해 RIA 애플리케이션 개발 이 가능 하 다 . 또한 이 들 컴포넌트 들 을 상속 하 거나 수정 해 새로운 컴포넌트 를 개발 하 는 것 이 용이 하 며 이러 한 작업 을 통하 여 개발 생산 성 을 높일 수 있 다 . 
 7 . 플렉스 는 오픈 프레임 웍 
 플렉스 2 SDK 는 무료 로 제공 된다 . 플렉스 SDK 2 는 플렉스 컴포넌트 , 컴파일러 , 디버깅 을 위한 각종 유틸리티 로 구성 돼 있 다 . 플렉스 2 SDK 만 을 이용해 플렉스 애플리케이션 을 개발 할 경우 추가 적 인 솔루션 비용 이 들 지 않 는다 . 플렉스 는 플렉스 프레임워크 의 모든 API 를 공개 하 고 있 다 . 플렉스 API 의 소스 를 참조 해 새로운 컴포넌트 개발 등 을 할 수 있 다 . 
 8 . 플렉스 는 오픈 플랫 폼 
 어도비 는 플렉스 프레임 웍 소스 와 데이터 서비스 인터페이스 를 공개 하 고 있 다 . 이것 을 이용 해 다양 한 플렉스 오픈 소스 프로젝트 들 이 진행 되 고 있 다 . ‘ www . osflash . org ’ 에서 는 플렉스 데이터 서비스 2 를 오픈 소스 로 구현 하 는 프로젝트 가 활발 하 게 진행 되 고 있 다 . 
 9 . 플렉스 빌더 2 는 이클립스 기반 의 통합 개발 환경 
 플렉스 2 의 개발 툴 인 플렉스 빌더 2 는 이클립스 를 기반 으로 만들 어 졌 다 . 이클립스 는 자바 통합 개발 환경 을 초월 해 모든 개발 툴 의 플랫 폼 이 되 겠 다는 목표 로 진행 중 인 오픈 소스 프로젝트 다 . 이클립스 는 현재 전 세계 에서 가장 영향력 이 큰 개발 툴 로 성장 한 상태 다 . 플렉스 빌더 가 이클립스 기반 으로 개발 됨 으로써 기존 이클립스 의 장점 을 모두 흡수 하 게 됐 고 안정 적 인 플랫 폼 을 기반 으로 완성도 가 높 아 졌 다 . 
 플렉스 빌더 2 는 과 같이 다양 한 뷰 와 퍼스 펙 티 브 를 제공 해 개발 편의 성 을 높이 고 있 고 디자인 , 코드 편집 , 디버깅 기능 을 지원 하 고 위지 윅 방식 으로 화면 을 다자인 해 실행 결과 를 바로 볼 수 있 는 기능 을 포함 해 개발 생산 성 이 높 아 지 게 됐 다 . 자바 , C / C ++, php , 파이썬 , 루비 , 포트란 등 다양 한 언어 의 개발 툴 로 이용 되 고 있 기 때문 에 기존 이클립스 사용 자 가 플렉스 빌더 에 적응 하 는 학습 곡선 ( Learning Curve ) 를 최소 화 할 수 있 다 . 
 10 . 플렉스 2 의 속도 최적화 
 플렉스 2 가 발표 되 기 전 까지 플렉스 는 플래시 플레이어 8 . 5 버전 에서 실행 되 는 것 으로 돼 있 었 다 . 플렉스 2 가 나오 기 이전 에 플렉스 1 . 5 버전 까지 는 플렉스 는 화면 을 그리 는 부분 에서 속도 문제 가 있 었 다 . 기존 플래시 플레이어 는 플래시 애플리케이션 의 벡터 이미지 처리 에 최적 화 돼 있 었 다 . 따라서 플렉스 의 객체 처리 및 가비지 컬렉션 과 같 은 것 을 처리 하 는 것 에 는 최적 화 해 있 지 않 았 다 . 플렉스 2 가 발표 되 면서 플래시 플레이어 는 새롭 게 개발 됐 고 결국 최종 에서 는 완전히 새로운 제품 으로 공개 됐 다 . 그런 의미 에서 플래시 플레이어 는 8 . 5 가 아닌 9 버전 으로 명명 됐 다 . 
 플래시 플레이어 9 은 기존 의 벡터 이미지 를 처리 하 기 위한 액션스크립트 2 . 0 을 위한 AVM ( ActionScript Virtual Machine ) 가상 머신 과 타입 체크 , 객체 처리 , 가비지 컬렉션 에 최적 화 된 액션스크립트 3 . 0 을 위한 AVM 2 가상 머신 이 별도 로 탑재 돼 있 다 . AVM 2 는 매우 고속 이 며 , 런타임 에러 리포트 와 업계 표준 방식 의 디버그 기능 을 제공 한다 . 액션스크립트 3 . 0 자체 의 개선 과 플래시 플레이어 9 의 플렉스 최적화 로 기존 성능 이슈 는 사라지 게 됐 다 . 
 지금 까지 10 가지 플렉스 가 좋 은 이유 를 살펴봤 다 . 거창 하 게 내부 실행 방식 을 설명 하 는 방식 으로 플렉스 아키텍처 를 설명 하 기 보 다는 주요 장점 을 살펴보 고 이 이유 를 살펴보 는 것 이 더 쉽 고 효과 적 인 방법 이 라고 생각 한다 . 플렉스 의 장점 은 10 가지 로 는 부족 하 다 . 애플리케이션 을 다루 는 사람 의 적응 과 애플리케이션 개발 에 대한 문화 적 인 접근 방식 의 변화 등 웹 2 . 0 시대 에 플렉스 가 갖 고 있 는 장점 을 정리 하 자면 끝 이 없 다 . 
 플렉스 의 장점 중 에 가장 중요 한 것 은 표준 언어 로 만들 어 지 고 , 확장 성 이 좋 으며 , 운영 체제 와 브라우저 의 독립성 을 플래시 플레이어 가 보장 해 주 고 있 다는 것 이 다 . 또 플래시 플레이어 는 단순 한 멀티미디어 플레이어 나 애니메이션 처리 가 아닌 하나 의 플랫폼 으로 자리 잡 고 있 다는 것 이 다 . 개발 언어 로서 의 완성도 와 RIA 솔루션 으로서 의 성능 , 플랫폼 으로서 의 위치 , 개발자 수준 의 확장 성 보장 , 활발 한 개발자 커뮤니티 등 다양 한 요소 를 감안 해 보 면 플렉스 는 웹 2 . 0 의 가장 중요 한 구현 기술 중 하나 인 것 임 에 틀림없 다 .