Top Banner
개개 개개개 개개 개개 개개 개개개 개개 개개 개개개개개 개개개개개 16 개 개개개 개개개 개개 개개개
22

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

Apr 15, 2017

Download

Technology

Daniel Lim
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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

감사합니다 .