[펌] [Flex]수행 속도 종합테스트 – FDS, AMFPHP,OpenAMF,XML,JSON,TEXT


원본 글 : 지돌스타님 블로그 http://blog.jidolstar.com/167



OpenAMF와 AMFPHP 에 대해서는 아래 링크를 참고하자.

AMFPHP 속도테스트 : http://blog.jidolstar.com/164
OpenAMF 속도테스트 : http://blog.jidolstar.com/166


FDS에 대한 소개

FDS( Flex Data Service )는 Flex 리치 인터넷 어플리케이션의 데이터를 관리할 수 있는 모델중 하나이다.
FDS를 이용하면 다양한 비동기 데이터 요청 처리가 가능하다. 특히 실시간 서버 푸시(push)와 클라이언트 폴링(polling) 방식을 쓸 수 있기 때문에 기존 RPC( Remote Procedure Call ) 방식의 단점을 크게 개선시킬 수 있어 채팅 프로그램을 가능하게 한다.

FDS는 이런 장점을 가지고 있지만 유료이기 때문에 사업에서 사용할 때 기대비용을 잘 고려해서 사용해야할 것이다.

Adobe 에서는 FDS에 대해서 다음과 같이 소개하고 있다.

FDS(Flex Data Services)란 리치 인터넷 어플리케이션의 데이터를 관리할 수 있는 새로운 모델입니다. 메시징 인프라를 바탕으로 구축되고 메시징의 고유한 견고함과 안정성을 활용한 FDS는 다양한 비동기 데이터 요청 처리와 같이 개발자의 지루하고 오류가 발생하기 쉬운 작업이 더 이상 필요 없는 모델입니다. Hibernate, JDO, ADO 같은 기타 객체 모델과 유사하게 FDS에서도 프레젠테이션 및 클라이언트 계층이 엔터프라이즈 데이터 모델에 완벽하게 적용될 수 있습니다. FDS에서 가장 핵심적인 점은 실시간 푸시(push), 가끔 연결되는 어플리케이션, 관리되는 대용량 데이터 제공 등 차세대 리치 인터넷 어플리케이션 제작에 필요한 데이터 인터랙션을 지원한다는 점입니다.

출처 : http://www.adobe.com/kr/products/flex/p ··· faq.html


FDS를 사용하는 이유

뒤에서 언급하겠지만 속도면에서만 본다면 굳이 FDS를 사용할 필요는 없다. 나는 AMFPHP, OpenAMF등 속도 테스트를 해봤다. FDS가 이들에 비해서 속도면에서는 훌륭한 편이다. XML, JSON로 통신할때와 FDS를 이용할때를 비교해보면 FDS가 훨씬 빠르다. 하지만 TEXT방식을 사용할 때보다 빠르진 않다. 이 방식은 가령 다음과 같은 방법으로 데이타를 보낸다.

1|지돌스타|23|안녕하세요~
2|Flex맨|30|반갑습니다.
3|Flex쪼아|33|플렉스가 쪼아요~


Flex Client 프로그램에서 HttpService나 URLLoader등을 이용해 이 자료를 받고 String Class의 split와 같은 함수를 이용해서 |와 n만 구분지어주면 되는 것이다.
Text 방식은 사용하는게 불편해서 그렇지 최고의 속도를 보인다.

그럼 FDS를 사용하는 이유는 무엇일까?
그건 FDS를 이용하면 서버 Push, Polling 방식을 채택할 수 있기 때문이다.
그리고 Object방식으로 데이타를 전송할 수 있기 때문에 프로그래밍 하기 훨씬 편하다.
데이타 관리가 쉽다는 이야기다.

이러한 이유에서 FDS를 사용하는 것이다.

FDS 속도 Check를 위한 작업


FDS 설치

나는 Linux, Tomcat 6, JDK 1.6환경에서 테스트 했다.
윈도우에 FDS를 설치해보신 분이라면 C:fds2flex.war 이 있을 것이다. 이 파일을 Tomcat Web Root 디렉토리에 올리면 Tomcat은 자동으로 flex.war 압축을 풀고 flex라는 디렉토리를 생성시킨다. 이것으로 FDS를 설치한 것임..
http://IP주소 또는 도메인:포트번호/flex/ 로 접속했을때 FDS가 인사하면 정상적으로 FDS가 설치된 것이다.

FDS 설정

웹루트/flex/WEB-INF/flex/ 디렉토리 안에 service-config.xml 과 remoting-config.xml 파일이 있다. FDS를 이용하기 위해 AMF channel 및 destination를 설정해야한다.

service-config.xml 을 열어서 를 찾아서 아래처럼 수정한다.

<CHANNEL-DEFINITION style="COLOR: rgb(255,0,0)" id=”my-amf” class=”mx.messaging.channels.AMFChannel”>
<!–
<endpoint uri="http://{server.name}:{server.port}/{context.root}/messagebroker/amf"
class=”flex.messaging.endpoints.AMFEndpoint”/>
–>
<ENDPOINT uri="http://자신의도메인:포트번호/flex/messagebroker/amf"
class=”flex.messaging.endpoints.AMFEndpoint”/>

false


remoting-config.xml을 열어 destination을 아래와 같이 추가한다.

sample.FDSTest


테스트용 Java 프로그램

웹루트/flex/WEB-INF/classes에 sample 디렉토리를 만들고
그 디렉토리 안에 다음 두개의 java소스를 FDSTest.java, SampleVO.java 이름으로 넣는다.


/flex/WEB-INF/classes 에서 javac sample/FDSTest.java 로 컴파일 하면 /flex/WEB-INF/classes/sample/에 class파일이 생성된다.

테스트용 Flex 프로그램

Flex 프로그램은 RemoteObject와 AMFChannel을 이용해 FDS에 접속하고 원하는 갯수만큼 데이터를 가져와 DataGrid에 결과물을 출력하도록 만들었다. 그리고 수행시간도 출력하게 만들었다.

실행프로그램

아래는 FDS 테스트 프로그램 3만건까지 테스트해볼 수 있다.

AMFPHP, OpenAMF, XML, JSON, TEXT 테스트는 AMFPHP(http://blog.jidolstar.com/164), OpenAMF(http://blog.jidolstar.com/166) 를 참고한다.

테스트 결과

나는 이전에 AMFPHP(http://blog.jidolstar.com/164), OpenAMF(http://blog.jidolstar.com/166) 속도 체크를 모두 해보았다. 이와 함께 지금 만든 FDS 속도테스트 프로그램과 속도를 비교해 보았다.


테스트 환경은
운영체제 : 안뇽~ Linux
XML, JSON, TEXT, AMFPHP는 Apache, PHP,
OpenAMF, FDS는 Tomcat 6, JDK 1.6
환경에서 테스트 해본것이다.

결과값은 한건당 5번정도 걸쳐서 나온 수행시간을 평균 낸 것이다.
시스템사양, 네트워크상태에 따라서 값이 많이 바뀌는 편이기 때문에 수행시간자체에 관심을 두지 말고 전체적인 포퍼먼스에 대한 상대적 비교만 하길 바란다.

위 그래프에서 쉽게 알 수 있듯이 TEXT방식과 FDS방식이 속도면에서 유리하다.
XML, JSON, AMFPHP을 이용하면 대용량에서 불리한 수행속도를 가진다.
OpenAMF는 TEXT,FDS 와 비교해 볼때 느리지만 XML,JSON,ANFPHP보다 빠른 수행속도를 가진다.

JSON < AMFPHP < XML < OpenAMF < TEXT,FDS


자~ 그럼 이제 무엇을 써야할지 마음속으로 결정하자~ 훗~

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.