2009/01/22 13:19
이 글은 '조엘 온 소프트웨어'에서 테스트 항목만을 발췌한 내용입니다.

  1. 소스코드 관리시스템을 사용하고 계십니까?
  2. 한방에 빌드를 만들어낼 수 있습니까?
  3. 일일 빌드를 하고 있습니까?
  4. 버그 추적시스템을 운영하고 있습니까?
  5. 코드를 새로 작성하기 전에 버그를 수정합니까?
  6. 일정을 업데이트하고 있습니까?
  7. 명세서를 작성하고 있습니까?
  8. 조용한 작업 환경에서 일하고 있습니까?
  9. 경제적인 범위 내에서 최고 성능의 도구를 사용하고 있습니까?
  10. 테스터를 별도로 두고 있습니까?
  11. 프로그래머 채용 인터뷰 때 코딩 테스트를 합니까?
  12. 무작위 사용편의성 테스트를 수행하고 있습니까?
이 테스트결과는 각 항목에서 '예'일 경우 1점씩 올리면 됩니다.  12점 만점에 11점은 우수한 성적이지만 10점 이하는 심각한 문제가 있다고 저자는 말하고 있습니다. 참고로 마이크로 소프트는 12점 만점을 받았다는 군요.
크리에이티브 커먼즈 라이선스
Creative Commons License

'독서 후기' 카테고리의 다른 글

말단이면서도 해내기  (0) 2009/02/02
조엘 테스트 : 더 나은 코드를 위한 12단계  (0) 2009/01/22
2009/01/14 01:44

DWR

DWR은 자바 라이브러리로서 Direct Web Remoting의 약자입니다. Java에서 Ajax를 쉽게 사용하기 위한 라이브러리로서 서버에 있는 Java소스를 스크립트로 바로 호출 할 수 있도록 해줍니다. 이는 기존의 다른 Ajax에서 서버에서 데이터를 받아오기 위한 페이지를 만들 필요가 없기 때문에 개발의 편의성을 높여줍니다.

prototype.js

프로토 타입은 모르는 사람이 없을 정도로 유명한 javascript framework입니다. 코드를 간결하게 해주고 웹 브라우저에 따른 별도의 javascript 코드를 작성하지 않아도 됩니다.


DWR VS prototype.js Ajax performance 비교

그렇다면 DWR과 prototype.js의 Ajax 성능은 어떨까요? 직접 테스트 해볼까요?
참고로 이 테스트는 제 개인적인 호기심으로 한 테스트입니다. 테스트 방법 및 신뢰도에 대한 부분은 전혀 보장하지 않습니다. : )

테스트 환경

JRE : 1.6.0_11
브라우저 : FireFox
측정 툴 : FireBug
※ 모든 테스트 결과 수치는 ms(1/1000초)입니다.
테스트 1 : 1초 간격으로 호출을 해서 응답시간을 측정합니다.
이 테스트는 한번의 Ajax 응답이 오는 시간을 측정하는 테스트입니다.

DWR 테스트 결과
사용자 삽입 이미지

 prototype.js 테스트 결과
사용자 삽입 이미지


DWR prototype.js
1 27 47
2 31 26
3 38 29
4 34 32
5 31 56
6 55 57
7 26 23
8 40 45
9 62 50
10 61 48
평균 40.5 41.3
수치상으로만 보면 둘다 비슷 비슷 하네요. 하지만 테스트2에서 부하가 걸린 상황에서는 조금 다를껍니다.
그리고 그림을 보시면 DWR과 prototype.js의 Ajax 방식에서 차이점이 보이실껍니다.
DWR은 POST 방식을 사용하고 있고 prototype.js는 GET 방식을 사용하고 있네요.


테스트 2 : 100번을 연속으로 호출해서 모든 응답이 올때까지의 시간을 측정합니다.
이 테스트는 부하 테스트입니다. 한번에 많은 양의 요청을 얼마나 빨리 처리할 수 있는가를 측정합니다.

DWR 테스트 결과
사용자 삽입 이미지
DWR은 100개의 응답이 오는데 3.38초가 걸렸네요.

prototype.js 테스트 결과
사용자 삽입 이미지
prototype.js는 100개의 응답을 받는데 1.67초가 걸렸네요. 4번째 요청이 제일 늦게 응답을 받았는데 1.67초가 걸렸습니다.

테스트 결과 분석

부하가 걸리지 않는 상황에서는 DWR이나 prototype.js의 성능상의 차이는 거의 없습니다. 하지만 부하가 걸리는 상황에서는 prototype.js의 성능이 DWR보다 월등한 성능을 보여주고 있습니다.
 하지만 이는 GET방식과 POST방식으로 인한 차이일 수도 있으며 DWR과 prototype.js의 메모리 사용률도 조금달랐습니다. DWR은 메모리가 일정 수치 이상 올라가면 메모리 사용량이 일정 수치 이상 올라가지 않는 것으로 보아 가비지 컬렉터가 수행되는 것 갔았으며 prototype.js는 메모리 사용률이 계속 올라갔습니다. 이 부분에 대해서는 별도의 테스트가 필요한것 같습니다.
 만약 Ajax 컴포넌트를 선택하는 상황이라면 성능상으로는 prototype.js이 뛰어날 지라도 DWR의 개발시 편의성과 메모리 사용률도 무시하지 못할 부분이라고 생각됩니다.

※ 참고로 이 포스트에서 보여드린 테스트는 한번 밖에 수행하지 않았지만 결과를 기록하지 않은 테스트가 여러번 수행되었으며 위 결과와 비슷한 수치를 보였습니다.

크리에이티브 커먼즈 라이선스
Creative Commons License