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

Post on 15-Apr-2017

136 views 4 download

Transcript of 개발 생산성 향상 기법 V1.2

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

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

임광규

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

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

시뮬레이션 결과 결론

목차목차

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

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

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

디버깅

배포& 대기

테스트& 오류발생

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

개요개요

디버깅테스트& 오류발생

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

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

기술연구기술연구

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

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

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

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

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

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

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

기능 JRebel 6 JRebel 5 JVM HOT SWAP

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

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

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

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

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

• JRebel 보다 적은 기능 제공

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

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

기능 추가 변경 삭제

ClassMethod ○ ○ ○

Field ○ ○ ○

Constructors ○ ○ ○

Annotation

Type ○ ○ ○

Method ○ ○ ○

Field ○ ○ ○

Constructors ○ ○ ○

Enum value ○ ○ ○

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

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

시뮬레이션시뮬레이션

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

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

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

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

탈락

탈락

명칭 개발 환경

Processor Intel Core i5Memory 8G

OS Window 10Language Java1.8Platform Eclipse Mars2

WAS Tomcat 8HotSwap Spring-Loaded

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

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

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

• ASIS • TOBE

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

차이 없음

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

Spring-Loaded소요 시간 (s)

단순 프로그램 1 1

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

• ASIS • TOBE

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

2 초 차이

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

Spring-Loaded소요 시간 (s)

데몬 프로그램 3 0.5

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

• ASIS • TOBE

4 초 차이

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

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

Spring-Loaded소요 시간 (s)

WEB 프로그램 5 1

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

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

Spring 관련 변경

50

일반 class 변경 50

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

8

일반 class 변경 340 초 차이

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

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

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

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

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

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

결론결론

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

참고 문헌참고 문헌

질문 받습니다 .

Q&AQ&A

감사합니다 .