1. 개발 생산성 향상 기법개발 생산성 향상 기법
방통대학원 정보과학과 16 기
컴퓨터 통신망 특론
임광규
2. 개요
기술 연구
• WAS Hot Deploy
• JRebel
• Spring-Loaded
• 사용 프로그램 결정
시뮬레이션
• 단순 프로그램
• 데몬 프로그램
• WAS 프로그램
• 업무 프로그램
시뮬레이션 결과
결론
목차목차
3. 개요개요
• 소프트웨어 개발에서 많
은 시간을 소요하는 부분
은 디버깅이다 .
• 코드를 수정하고 다시 테
스트 위해 배포 & 대기
하는 시간은 업무 집중력
을 흩트려 프로젝트의 생
산성을 떨어트린다 .
디버깅
배포
& 대기
테스트
& 오류발생
4. 디버깅 & 테스트 에서 낭비되는 대기 시간을 줄
임으로 생산성 향상을 기대 한다 .
개요개요
디버깅
테스트
& 오류발생
5. 2000 년 부터 지금까지 국내 IT 사업에서 가장
많이 사용되는 JAVA 를 개발 언어 선정 한다 .
JAVA 는 Demon, WEB 등 여러 프로그램을 개발
할 수 있도록 지원 한다 .
기술연구기술연구
6. 장점
• 다른 프로그램을 설치 할 필요 없음
• 언어에 국한 받지 않음
단점
• Vender( 제작 ) 사에 마다 서로 다른 제약과 문제점
• 시스템 부하 발생
• PermGen GC 보장 안 함 (JVM Crash)
• Transaction 보장 안 함
• OS 의존적 문제
기술연구기술연구 -WAS Hot deploy-WAS Hot deploy
7. 장점
• 가장 많이 사용되는 JVM java agent
• 80 개 이상의 국가에서 3,500 개 이상의 조직 사용
• Web & Application 지원
• 개인 사용자 무료 사용 가능 ( 비상업용도 )
단점
• 유료 프로그램
• 버젼별 제공 기능 다름
기술 연구기술 연구 -JRebel-JRebel
8. 기능 JRebel 6 JRebel 5 JVM HOT
SWAP
Method 내용 변경 ○ ○ ○
Method 추가 / 삭제 ○ ○ ×
Constructors 추가 / 삭제 ○ ○ ×
Field 추가 / 삭제 ○ ○ ×
Classes 추가 / 삭제 ○ ○ ×
Static field 추가 / 삭제 ○ ○ ×
Enum 값 추가 삭제 ○ ○ ×
Interface 변경 ○ ○ ×
Superclass 교체 ○ × ×
Interface 구현체 추가 / 제거 ○ × ×
New instance fields 초기화 ○ × ×
기술연구기술연구 -JRebel-JRebel 제공 기능제공 기능
9. 장점
• 오픈 소스
• 유연성 , 효용성 , 문제해결
• 상업적 용도로 사용 가능
• Web & Application 지원
단점
• 오픈 소스
• 기술 지원 부재
• 보안
• JRebel 보다 적은 기능 제공
기술연구기술연구 -Spring-Loaded-Spring-Loaded
10. 기술연구기술연구 -Spring-Loaded-Spring-Loaded 제공 기능제공 기능
기능 추가 변경 삭제
Class
Method ○ ○ ○
Field ○ ○ ○
Constructors ○ ○ ○
Annotation
Type ○ ○ ○
Method ○ ○ ○
Field ○ ○ ○
Constructors ○ ○ ○
Enum value ○ ○ ○
11. 생산성 검증 방법은 프로그램의 변경시간을 제
외한 배포 & 재실행 시간만 계산 한다 .
• 단순 프로그램
• 데몬 프로그램
• WEB 프로그램
프로젝트 생산성 검증
• 업무내역은 보안상 공개 불가
• 단순 결과 표만 간추려 제공
시뮬레이션시뮬레이션
12. WAS Hot Deploy
• Vender 사별 다른 형태 제공
• 무료 버전과 유료 버전 존재
JRebel
• 상업적 용도로 사용 불가
Spring-Loaded
• 상업적 용도 사용 가능
• 기본적인 기능 제공
시뮬레이션시뮬레이션 -- 기술 선택기술 선택
탈락
탈락
13. 명칭 개발 환경
Processor Intel Core i5
Memory 8G
OS Window 10
Language Java1.8
Platform Eclipse Mars2
WAS Tomcat 8
HotSwap Spring-Loaded
시뮬레이션시뮬레이션 -- 환경환경
시뮬레이션 개발 환경은 진행중인 업무 환경과 최대한 비슷하게 설정 한다 .
14. 시뮬레이션시뮬레이션 -- 단순 프로그램단순 프로그램
• ASIS • TOBE
- 단순 프로그램에서는 덧셈 처리를 뺄셈 처리로 변환
- 일회성 프로그램의 경우 소스에 대한 변경 후 재실행 하여 차이 없음
차이 없음
시뮬레이션 기존 방식
소요 시간 (s)
Spring-Loaded
소요 시간 (s)
단순 프로그램 1 1
15. 시뮬레이션시뮬레이션 –– 데몬 프로그램데몬 프로그램
• ASIS • TOBE
- 10 의 배수 마다 Log 를 저장 하는 데몬 프로그램
- 100 의 배수 마다 Log 를 저장 하도록 변경
2 초
차이
시뮬레이션 기존 방식
소요 시간 (s)
Spring-Loaded
소요 시간 (s)
데몬 프로그램 3 0.5
16. 시뮬레이션시뮬레이션 –– WEBWEB 프로그램프로그램
• ASIS • TOBE
4 초
차이
- 게시판 프로그램 Validate 에 대한 부분을 TODO 로 남겨 놓음
- Validate 를 처리 하여 전달 하도록 수정
시뮬레이션 기존 방식
소요 시간 (s)
Spring-Loaded
소요 시간 (s)
WEB 프로그램 5 1
17. 시뮬레이션시뮬레이션 -- 프로젝트프로젝트
• ASIS • TOBE
시뮬레이션 소요 시간 (s)
Spring 관련 변경 50
일반 class 변경 50
시뮬레이션 소요 시간 (s)
Spring 관련 변경 8
일반 class 변경 340 초
차이
업무 상세 내역은 보안상 제공 불가
WEB 프로젝트로 , 20 명 이상 개발자 작업 진행 중
Spring framework 의 annotation 변경 시 applicationContext 를 refresh 해야
Mybatis 의 XML 변경 시 서버 재기동 필요
Java Proxy 관련 변경 시 간혈적 오류 발생
19. 복잡도가 높은 프로그램의 배포 & 대기에 소요 되는 시간을
최소화 하여 개발 및 디버깅에 집중 할 수 있다 .
대기 시간에 대한 수치화 수식
배포 시 평균 50 초가 소요 되고 한 시간에 4 회 배포를 한다고
가정할 경우 개발자 1 인이 얻는 시간은 약 22 분 정도 이다 .
실 운영에서 사용을 할 경우 상용 프로그램인 JRebel 을 추천
한다 .
결론결론
20. [1] Ibm.com. (2016). IBM Knowledge Center. [online] Available at:
https://www.ibm.com/support/knowledgecenter/was_beta/com.ibm.websphere.base.doc/ae/trun_app_hotupgr
ade.html [Accessed 7 Jun. 2016].
[2] ZeroTurnaround. (2012). JRebel Java Plugin: Eclipse, IntelliJ, NetBeans | zeroturnaround.com. [online]
Available at: https://zeroturnaround.com/software/jrebel/ [Accessed 7 Jun. 2016].
[3] GitHub. (2016). spring-projects/spring-loaded. [online] Available at: https://github.com/spring-
projects/spring-loaded [Accessed 7 Jun. 2016].
[4] Sw-eng.kr. (2016). < 웹진 90 호 : 공학 트렌드 > 대규모 애자일기반 소프트웨어 개발하기 Part 1. [online]
Available at: http://www.sw-eng.kr/member/customer/Webzine/BoardView.do?
boardId=00000000000000022641 [Accessed 7 Jun. 2016].
[5] GitHub. (2016). lahuman/springLoadTest. [online] Available at:
https://github.com/lahuman/springLoadTest/blob/master/src/kr/pe/lahuman/SimpleCalculation.java [Accessed
7 Jun. 2016].
[6] GitHub. (2016). spring-projects/spring-loaded. [online] Available at: https://github.com/spring-
projects/spring-loaded [Accessed 7 Jun. 2016].
[7] GitHub. (2016). lahuman/BoardAPI. [online] Available at: https://github.com/lahuman/BoardAPI [Accessed
7 Jun. 2016].
참고 문헌참고 문헌