개발 생산성 향상 기법 v1.2

22
개개 개개개 개개 개개 개개 개개개 개개 개개 개개개개개 개개개개개 16 개 개개개 개개개 개개 개개개

Upload: daniel-lim

Post on 15-Apr-2017

133 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: 개발 생산성 향상 기법 V1.2

개발 생산성 향상 기법개발 생산성 향상 기법

방통대학원 정보과학과 16 기 컴퓨터 통신망 특론

임광규

Page 2: 개발 생산성 향상 기법 V1.2

개요 기술 연구• WAS Hot Deploy• JRebel• Spring-Loaded• 사용 프로그램 결정

시뮬레이션• 단순 프로그램• 데몬 프로그램• WAS 프로그램• 업무 프로그램

시뮬레이션 결과 결론

목차목차

Page 3: 개발 생산성 향상 기법 V1.2

개요개요• 소프트웨어 개발에서

많은 시간을 소요하는 부분은 디버깅이다 .

• 코드를 수정하고 다시 테스트 위해 배포 & 대기 하는 시간은 업무 집중력을 흩트려 프로젝트의 생산성을 떨어트린다 .

디버깅

배포& 대기

테스트& 오류발생

Page 4: 개발 생산성 향상 기법 V1.2

디버깅 & 테스트 에서 낭비되는 대기 시간을 줄임으로 생산성 향상을 기대 한다 .

개요개요

디버깅테스트& 오류발생

Page 5: 개발 생산성 향상 기법 V1.2

2000 년 부터 지금까지 국내 IT 사업에서 가장 많이 사용되는 JAVA 를 개발 언어 선정 한다 .

JAVA 는 Demon, WEB 등 여러 프로그램을 개발 할 수 있도록 지원 한다 .

기술연구기술연구

Page 6: 개발 생산성 향상 기법 V1.2

장점• 다른 프로그램을 설치 할 필요 없음• 언어에 국한 받지 않음

단점• Vender( 제작 ) 사에 마다 서로 다른 제약과 문제점• 시스템 부하 발생• PermGen GC 보장 안 함 (JVM Crash)• Transaction 보장 안 함• OS 의존적 문제

기술연구기술연구 -WAS Hot deploy-WAS Hot deploy

Page 7: 개발 생산성 향상 기법 V1.2

장점• 가장 많이 사용되는 JVM java agent• 80 개 이상의 국가에서 3,500 개 이상의 조직 사용

• Web & Application 지원• 개인 사용자 무료 사용 가능 ( 비상업용도 )

단점 • 유료 프로그램• 버젼별 제공 기능 다름

기술 연구기술 연구 -JRebel-JRebel

Page 8: 개발 생산성 향상 기법 V1.2

기능 JRebel 6 JRebel 5 JVM HOT SWAP

Method 내용 변경 ○ ○ ○Method 추가 /삭제 ○ ○ ×Constructors 추가 /삭제 ○ ○ ×Field 추가 /삭제 ○ ○ ×Classes 추가 /삭제 ○ ○ ×Static field 추가 /삭제 ○ ○ ×Enum 값 추가 삭제 ○ ○ ×Interface 변경 ○ ○ ×Superclass 교체 ○ × ×Interface 구현체 추가 /제거 ○ × ×New instance fields 초기화 ○ × ×

기술연구기술연구 -JRebel -JRebel 제공 기능제공 기능

Page 9: 개발 생산성 향상 기법 V1.2

장점• 오픈 소스•유연성 , 효용성 , 문제해결

• 상업적 용도로 사용 가능• Web & Application 지원

단점• 오픈 소스•기술 지원 부재•보안

• JRebel 보다 적은 기능 제공

기술연구기술연구 -Spring-Loaded-Spring-Loaded

Page 10: 개발 생산성 향상 기법 V1.2

기술연구기술연구 -Spring-Loaded -Spring-Loaded 제공 기능제공 기능

기능 추가 변경 삭제

ClassMethod ○ ○ ○

Field ○ ○ ○

Constructors ○ ○ ○

Annotation

Type ○ ○ ○

Method ○ ○ ○

Field ○ ○ ○

Constructors ○ ○ ○

Enum value ○ ○ ○

Page 11: 개발 생산성 향상 기법 V1.2

생산성 검증 방법은 프로그램의 변경시간을 제외한 배포 & 재실행 시간만 계산 한다 .• 단순 프로그램• 데몬 프로그램• WEB 프로그램

프로젝트 생산성 검증• 업무내역은 보안상 공개 불가• 단순 결과 표만 간추려 제공

시뮬레이션시뮬레이션

Page 12: 개발 생산성 향상 기법 V1.2

WAS Hot Deploy• Vender 사별 다른 형태 제공• 무료 버전과 유료 버전 존재

JRebel• 상업적 용도로 사용 불가

Spring-Loaded• 상업적 용도 사용 가능• 기본적인 기능 제공

시뮬레이션시뮬레이션 -- 기술 선택기술 선택

탈락

탈락

Page 13: 개발 생산성 향상 기법 V1.2

명칭 개발 환경

Processor Intel Core i5Memory 8G

OS Window 10Language Java1.8Platform Eclipse Mars2

WAS Tomcat 8HotSwap Spring-Loaded

시뮬레이션시뮬레이션 -- 환경환경

시뮬레이션 개발 환경은 진행중인 업무 환경과 최대한 비슷하게 설정 한다 .

Page 14: 개발 생산성 향상 기법 V1.2

시뮬레이션시뮬레이션 -- 단순 프로그램단순 프로그램

• ASIS • TOBE

- 단순 프로그램에서는 덧셈 처리를 뺄셈 처리로 변환- 일회성 프로그램의 경우 소스에 대한 변경 후 재실행 하여 차이 없음

차이 없음

시뮬레이션 기존 방식 소요 시간 (s)

Spring-Loaded소요 시간 (s)

단순 프로그램 1 1

Page 15: 개발 생산성 향상 기법 V1.2

시뮬레이션 시뮬레이션 –– 데몬 프로그램데몬 프로그램

• ASIS • TOBE

- 10 의 배수 마다 Log 를 저장 하는 데몬 프로그램- 100 의 배수 마다 Log 를 저장 하도록 변경

2 초 차이

시뮬레이션 기존 방식 소요 시간 (s)

Spring-Loaded소요 시간 (s)

데몬 프로그램 3 0.5

Page 16: 개발 생산성 향상 기법 V1.2

시뮬레이션 시뮬레이션 –– WEB WEB 프로그램프로그램

• ASIS • TOBE

4 초 차이

- 게시판 프로그램 Validate 에 대한 부분을 TODO 로 남겨 놓음- Validate 를 처리 하여 전달 하도록 수정

시뮬레이션 기존 방식 소요 시간 (s)

Spring-Loaded소요 시간 (s)

WEB 프로그램 5 1

Page 17: 개발 생산성 향상 기법 V1.2

시뮬레이션 시뮬레이션 - - 프로젝트프로젝트

• ASIS • TOBE시뮬레이션 소요 시간 (s)

Spring 관련 변경

50

일반 class 변경 50

시뮬레이션 소요 시간 (s)Spring 관련 변경

8

일반 class 변경 340 초 차이

- 업무 상세 내역은 보안상 제공 불가- WEB 프로젝트로 , 20 명 이상 개발자 작업 진행 중- Spring framework 의 annotation 변경 시 applicationContext 를 refresh 해야 함- Mybatis 의 XML 변경 시 서버 재기동 필요- Java Proxy 관련 변경 시 간혈적 오류 발생

Page 18: 개발 생산성 향상 기법 V1.2

시뮬레이션 결과시뮬레이션 결과

Page 19: 개발 생산성 향상 기법 V1.2

복잡도가 높은 프로그램의 배포 & 대기에 소요 되는 시간을 최소화 하여 개발 및 디버깅에 집중 할 수 있다 .

대기 시간에 대한 수치화 수식

배포 시 평균 50 초가 소요 되고 한 시간에 4 회 배포를 한다고 가정할 경우 개발자 1 인이 얻는 시간은 약 22 분 정도 이다 .

실 운영에서 사용을 할 경우 상용 프로그램인 JRebel 을 추천 한다 .

결론결론

Page 20: 개발 생산성 향상 기법 V1.2

[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_hotupgrade.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].

참고 문헌참고 문헌

Page 21: 개발 생산성 향상 기법 V1.2

질문 받습니다 .

Q&AQ&A

Page 22: 개발 생산성 향상 기법 V1.2

감사합니다 .