SlideShare a Scribd company logo
1 of 22
개발 생산성 향상 기법개발 생산성 향상 기법
방통대학원 정보과학과 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 제공 기능제공 기능
기능 추가 변경 삭제
Class
Method ○ ○ ○
Field ○ ○ ○
Constructors ○ ○ ○
Annotation
Type ○ ○ ○
Method ○ ○ ○
Field ○ ○ ○
Constructors ○ ○ ○
Enum value ○ ○ ○
 생산성 검증 방법은 프로그램의 변경시간을 제
외한 배포 & 재실행 시간만 계산 한다 .
• 단순 프로그램
• 데몬 프로그램
• WEB 프로그램
 프로젝트 생산성 검증
• 업무내역은 보안상 공개 불가
• 단순 결과 표만 간추려 제공
시뮬레이션시뮬레이션
 WAS Hot Deploy
• Vender 사별 다른 형태 제공
• 무료 버전과 유료 버전 존재
 JRebel
• 상업적 용도로 사용 불가
 Spring-Loaded
• 상업적 용도 사용 가능
• 기본적인 기능 제공
시뮬레이션시뮬레이션 -- 기술 선택기술 선택
탈락
탈락
명칭 개발 환경
Processor Intel Core i5
Memory 8G
OS Window 10
Language Java1.8
Platform Eclipse Mars2
WAS Tomcat 8
HotSwap Spring-Loaded
시뮬레이션시뮬레이션 -- 환경환경
시뮬레이션 개발 환경은 진행중인 업무 환경과 최대한 비슷하게 설정 한다 .
시뮬레이션시뮬레이션 -- 단순 프로그램단순 프로그램
• ASIS • TOBE
- 단순 프로그램에서는 덧셈 처리를 뺄셈 처리로 변환
- 일회성 프로그램의 경우 소스에 대한 변경 후 재실행 하여 차이 없음
차이 없음
시뮬레이션 기존 방식
소요 시간 (s)
Spring-Loaded
소요 시간 (s)
단순 프로그램 1 1
시뮬레이션시뮬레이션 –– 데몬 프로그램데몬 프로그램
• ASIS • TOBE
- 10 의 배수 마다 Log 를 저장 하는 데몬 프로그램
- 100 의 배수 마다 Log 를 저장 하도록 변경
2 초
차이
시뮬레이션 기존 방식
소요 시간 (s)
Spring-Loaded
소요 시간 (s)
데몬 프로그램 3 0.5
시뮬레이션시뮬레이션 –– WEBWEB 프로그램프로그램
• 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_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].
참고 문헌참고 문헌
질문 받습니다 .
Q&AQ&A
감사합니다 .

More Related Content

What's hot

커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님NAVER D2
 
[MeetUp][2nd] 알아두면 쓸모있는 테라폼
[MeetUp][2nd] 알아두면 쓸모있는 테라폼[MeetUp][2nd] 알아두면 쓸모있는 테라폼
[MeetUp][2nd] 알아두면 쓸모있는 테라폼InfraEngineer
 
How_to_choose_the_right_framework
How_to_choose_the_right_frameworkHow_to_choose_the_right_framework
How_to_choose_the_right_frameworkJT Jintae Jung
 
개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술중선 곽
 
PHP로 웹개발을 해보자
PHP로 웹개발을 해보자PHP로 웹개발을 해보자
PHP로 웹개발을 해보자Young Min Shin
 
한글 형태소 분석기 활용하기
한글 형태소 분석기 활용하기한글 형태소 분석기 활용하기
한글 형태소 분석기 활용하기흥래 김
 
티켓몬스터를 위한 PHP 개발 방법
티켓몬스터를 위한 PHP 개발 방법티켓몬스터를 위한 PHP 개발 방법
티켓몬스터를 위한 PHP 개발 방법Young D
 
Vingle tech talk #1
Vingle tech talk #1Vingle tech talk #1
Vingle tech talk #1Tylor Shin
 
Kgc2014 삼한제국기 포스트모템 김찬웅
Kgc2014 삼한제국기 포스트모템 김찬웅Kgc2014 삼한제국기 포스트모템 김찬웅
Kgc2014 삼한제국기 포스트모템 김찬웅Chanwoong Kim
 
[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민
[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민
[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민NAVER D2
 
[Tech meet up] 2018 프론트엔드 트렌드&인사이트
[Tech meet up] 2018 프론트엔드 트렌드&인사이트[Tech meet up] 2018 프론트엔드 트렌드&인사이트
[Tech meet up] 2018 프론트엔드 트렌드&인사이트NAVER D2
 
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017devCAT Studio, NEXON
 
[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔NAVER D2
 
초고속 웹사이트 개발을 위한 Codeigniter PHP Framework
초고속 웹사이트 개발을 위한 Codeigniter PHP Framework초고속 웹사이트 개발을 위한 Codeigniter PHP Framework
초고속 웹사이트 개발을 위한 Codeigniter PHP FrameworkInseok Lee
 
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활NAVER Engineering
 
Spring Framework 튜토리얼 - 네이버 최영목님
Spring Framework 튜토리얼 - 네이버 최영목님Spring Framework 튜토리얼 - 네이버 최영목님
Spring Framework 튜토리얼 - 네이버 최영목님NAVER D2
 
[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱NAVER D2
 
XECon2015 :: [3-1] 용영환 - HHVM 서비스 적용기
XECon2015 :: [3-1] 용영환 - HHVM 서비스 적용기XECon2015 :: [3-1] 용영환 - HHVM 서비스 적용기
XECon2015 :: [3-1] 용영환 - HHVM 서비스 적용기XpressEngine
 
실무에서 라라벨 테스트를 작성하다 알게 된 것
실무에서 라라벨 테스트를 작성하다 알게 된 것실무에서 라라벨 테스트를 작성하다 알게 된 것
실무에서 라라벨 테스트를 작성하다 알게 된 것Hyun-Seok Lee
 
리액트 적용기
리액트 적용기리액트 적용기
리액트 적용기Hun Yong Song
 

What's hot (20)

커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님
 
[MeetUp][2nd] 알아두면 쓸모있는 테라폼
[MeetUp][2nd] 알아두면 쓸모있는 테라폼[MeetUp][2nd] 알아두면 쓸모있는 테라폼
[MeetUp][2nd] 알아두면 쓸모있는 테라폼
 
How_to_choose_the_right_framework
How_to_choose_the_right_frameworkHow_to_choose_the_right_framework
How_to_choose_the_right_framework
 
개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술
 
PHP로 웹개발을 해보자
PHP로 웹개발을 해보자PHP로 웹개발을 해보자
PHP로 웹개발을 해보자
 
한글 형태소 분석기 활용하기
한글 형태소 분석기 활용하기한글 형태소 분석기 활용하기
한글 형태소 분석기 활용하기
 
티켓몬스터를 위한 PHP 개발 방법
티켓몬스터를 위한 PHP 개발 방법티켓몬스터를 위한 PHP 개발 방법
티켓몬스터를 위한 PHP 개발 방법
 
Vingle tech talk #1
Vingle tech talk #1Vingle tech talk #1
Vingle tech talk #1
 
Kgc2014 삼한제국기 포스트모템 김찬웅
Kgc2014 삼한제국기 포스트모템 김찬웅Kgc2014 삼한제국기 포스트모템 김찬웅
Kgc2014 삼한제국기 포스트모템 김찬웅
 
[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민
[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민
[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민
 
[Tech meet up] 2018 프론트엔드 트렌드&인사이트
[Tech meet up] 2018 프론트엔드 트렌드&인사이트[Tech meet up] 2018 프론트엔드 트렌드&인사이트
[Tech meet up] 2018 프론트엔드 트렌드&인사이트
 
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
 
[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔[124] 하이브리드 앱 개발기 김한솔
[124] 하이브리드 앱 개발기 김한솔
 
초고속 웹사이트 개발을 위한 Codeigniter PHP Framework
초고속 웹사이트 개발을 위한 Codeigniter PHP Framework초고속 웹사이트 개발을 위한 Codeigniter PHP Framework
초고속 웹사이트 개발을 위한 Codeigniter PHP Framework
 
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활
 
Spring Framework 튜토리얼 - 네이버 최영목님
Spring Framework 튜토리얼 - 네이버 최영목님Spring Framework 튜토리얼 - 네이버 최영목님
Spring Framework 튜토리얼 - 네이버 최영목님
 
[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱
 
XECon2015 :: [3-1] 용영환 - HHVM 서비스 적용기
XECon2015 :: [3-1] 용영환 - HHVM 서비스 적용기XECon2015 :: [3-1] 용영환 - HHVM 서비스 적용기
XECon2015 :: [3-1] 용영환 - HHVM 서비스 적용기
 
실무에서 라라벨 테스트를 작성하다 알게 된 것
실무에서 라라벨 테스트를 작성하다 알게 된 것실무에서 라라벨 테스트를 작성하다 알게 된 것
실무에서 라라벨 테스트를 작성하다 알게 된 것
 
리액트 적용기
리액트 적용기리액트 적용기
리액트 적용기
 

Viewers also liked

Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs기동 이
 
Leadweb Nodejs
Leadweb NodejsLeadweb Nodejs
Leadweb Nodejs근호 최
 
Learn design pattern-1
Learn design pattern-1Learn design pattern-1
Learn design pattern-1Daniel Lim
 
개발 생산성과 품질 향상을 위한 글로벌기업의 애자일 도입 및 적용사례
개발 생산성과 품질 향상을 위한 글로벌기업의 애자일 도입 및 적용사례개발 생산성과 품질 향상을 위한 글로벌기업의 애자일 도입 및 적용사례
개발 생산성과 품질 향상을 위한 글로벌기업의 애자일 도입 및 적용사례Woogon Shim
 
Node.js의 도입과 활용
Node.js의 도입과 활용Node.js의 도입과 활용
Node.js의 도입과 활용Jin wook
 
진짜기초 Node.js
진짜기초 Node.js진짜기초 Node.js
진짜기초 Node.jsWoo Jin Kim
 

Viewers also liked (8)

Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs
 
Leadweb Nodejs
Leadweb NodejsLeadweb Nodejs
Leadweb Nodejs
 
Learn design pattern-1
Learn design pattern-1Learn design pattern-1
Learn design pattern-1
 
개발 생산성과 품질 향상을 위한 글로벌기업의 애자일 도입 및 적용사례
개발 생산성과 품질 향상을 위한 글로벌기업의 애자일 도입 및 적용사례개발 생산성과 품질 향상을 위한 글로벌기업의 애자일 도입 및 적용사례
개발 생산성과 품질 향상을 위한 글로벌기업의 애자일 도입 및 적용사례
 
Node.js의 도입과 활용
Node.js의 도입과 활용Node.js의 도입과 활용
Node.js의 도입과 활용
 
SaaS 동향
SaaS 동향SaaS 동향
SaaS 동향
 
진짜기초 Node.js
진짜기초 Node.js진짜기초 Node.js
진짜기초 Node.js
 
Node.js 기본
Node.js 기본Node.js 기본
Node.js 기본
 

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

VSTS와 Azure를 이용한 팀 프로세스 관리
VSTS와 Azure를 이용한 팀 프로세스 관리VSTS와 Azure를 이용한 팀 프로세스 관리
VSTS와 Azure를 이용한 팀 프로세스 관리Gyuwon Yi
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재Hankyo
 
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스Hee Jae Lee
 
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)Sungmin Kim
 
ALM과 DevOps 그리고 Azure DevOps
ALM과 DevOps 그리고 Azure DevOpsALM과 DevOps 그리고 Azure DevOps
ALM과 DevOps 그리고 Azure DevOpsTaeyoung Kim
 
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016Amazon Web Services Korea
 
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트Chanwoong Kim
 
제13회컨퍼런스 조대협 서버사이드개발
제13회컨퍼런스 조대협 서버사이드개발제13회컨퍼런스 조대협 서버사이드개발
제13회컨퍼런스 조대협 서버사이드개발Terry Cho
 
designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...uEngine Solutions
 
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재NAVER D2
 
Build Team Foundation Architecture
Build Team Foundation ArchitectureBuild Team Foundation Architecture
Build Team Foundation Architecture준일 엄
 
객체지향프로그래밍 특강
객체지향프로그래밍 특강객체지향프로그래밍 특강
객체지향프로그래밍 특강uEngine Solutions
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)수보 김
 
델파이 소스코드의재발견
델파이 소스코드의재발견델파이 소스코드의재발견
델파이 소스코드의재발견Devgear
 
H사 개인화 Approach
H사 개인화 ApproachH사 개인화 Approach
H사 개인화 Approachssuser9a50211
 
14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용
14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용
14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용Terry Cho
 
회사에서 새로운 기술_적용하기
회사에서 새로운 기술_적용하기회사에서 새로운 기술_적용하기
회사에서 새로운 기술_적용하기Dexter Jung
 
[오픈소스컨설팅]소프트웨어 개발 준비 과정
[오픈소스컨설팅]소프트웨어 개발 준비 과정[오픈소스컨설팅]소프트웨어 개발 준비 과정
[오픈소스컨설팅]소프트웨어 개발 준비 과정Ji-Woong Choi
 
Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰
- 정시 퇴근을 위해 우리는 어떻게 해야할 것인가?
Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰
- 정시 퇴근을 위해 우리는 어떻게 해야할 것인가? Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰
- 정시 퇴근을 위해 우리는 어떻게 해야할 것인가?
Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰
- 정시 퇴근을 위해 우리는 어떻게 해야할 것인가? 정민 안
 

Similar to 개발 생산성 향상 기법 V1.2 (20)

VSTS와 Azure를 이용한 팀 프로세스 관리
VSTS와 Azure를 이용한 팀 프로세스 관리VSTS와 Azure를 이용한 팀 프로세스 관리
VSTS와 Azure를 이용한 팀 프로세스 관리
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재
 
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
 
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
 
ALM과 DevOps 그리고 Azure DevOps
ALM과 DevOps 그리고 Azure DevOpsALM과 DevOps 그리고 Azure DevOps
ALM과 DevOps 그리고 Azure DevOps
 
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
 
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트
 
제13회컨퍼런스 조대협 서버사이드개발
제13회컨퍼런스 조대협 서버사이드개발제13회컨퍼런스 조대협 서버사이드개발
제13회컨퍼런스 조대협 서버사이드개발
 
designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...designing, implementing and delivering microservices with event storming, spr...
designing, implementing and delivering microservices with event storming, spr...
 
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
 
Build Team Foundation Architecture
Build Team Foundation ArchitectureBuild Team Foundation Architecture
Build Team Foundation Architecture
 
객체지향프로그래밍 특강
객체지향프로그래밍 특강객체지향프로그래밍 특강
객체지향프로그래밍 특강
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
 
델파이 소스코드의재발견
델파이 소스코드의재발견델파이 소스코드의재발견
델파이 소스코드의재발견
 
Approach
ApproachApproach
Approach
 
H사 개인화 Approach
H사 개인화 ApproachH사 개인화 Approach
H사 개인화 Approach
 
14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용
14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용
14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용
 
회사에서 새로운 기술_적용하기
회사에서 새로운 기술_적용하기회사에서 새로운 기술_적용하기
회사에서 새로운 기술_적용하기
 
[오픈소스컨설팅]소프트웨어 개발 준비 과정
[오픈소스컨설팅]소프트웨어 개발 준비 과정[오픈소스컨설팅]소프트웨어 개발 준비 과정
[오픈소스컨설팅]소프트웨어 개발 준비 과정
 
Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰
- 정시 퇴근을 위해 우리는 어떻게 해야할 것인가?
Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰
- 정시 퇴근을 위해 우리는 어떻게 해야할 것인가? Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰
- 정시 퇴근을 위해 우리는 어떻게 해야할 것인가?
Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰
- 정시 퇴근을 위해 우리는 어떻게 해야할 것인가?
 

More from Daniel Lim

내가 생각하는 개발자란?
내가 생각하는 개발자란?내가 생각하는 개발자란?
내가 생각하는 개발자란?Daniel Lim
 
개발자를 넘어 기술 리더로 가는 길을 읽고
개발자를 넘어 기술 리더로 가는 길을 읽고개발자를 넘어 기술 리더로 가는 길을 읽고
개발자를 넘어 기술 리더로 가는 길을 읽고Daniel Lim
 
스크럼 101
스크럼 101스크럼 101
스크럼 101Daniel Lim
 
nodejs_101.pdf
nodejs_101.pdfnodejs_101.pdf
nodejs_101.pdfDaniel Lim
 
피드백 시스템
피드백 시스템피드백 시스템
피드백 시스템Daniel Lim
 
12.context api
12.context api12.context api
12.context apiDaniel Lim
 
11.react router dom
11.react router dom11.react router dom
11.react router domDaniel Lim
 
9.component style
9.component style9.component style
9.component styleDaniel Lim
 
7.component life cycle
7.component life cycle7.component life cycle
7.component life cycleDaniel Lim
 
6.component repeat
6.component repeat6.component repeat
6.component repeatDaniel Lim
 
4.event handling
4.event handling4.event handling
4.event handlingDaniel Lim
 
3.component 101
3.component 1013.component 101
3.component 101Daniel Lim
 
Swagger? OAS? with NodeJS
Swagger? OAS? with NodeJSSwagger? OAS? with NodeJS
Swagger? OAS? with NodeJSDaniel Lim
 

More from Daniel Lim (20)

내가 생각하는 개발자란?
내가 생각하는 개발자란?내가 생각하는 개발자란?
내가 생각하는 개발자란?
 
개발자를 넘어 기술 리더로 가는 길을 읽고
개발자를 넘어 기술 리더로 가는 길을 읽고개발자를 넘어 기술 리더로 가는 길을 읽고
개발자를 넘어 기술 리더로 가는 길을 읽고
 
스크럼 101
스크럼 101스크럼 101
스크럼 101
 
nodejs_101.pdf
nodejs_101.pdfnodejs_101.pdf
nodejs_101.pdf
 
For You
For YouFor You
For You
 
Nest js 101
Nest js 101Nest js 101
Nest js 101
 
피드백 시스템
피드백 시스템피드백 시스템
피드백 시스템
 
13.code split
13.code split13.code split
13.code split
 
12.context api
12.context api12.context api
12.context api
 
11.react router dom
11.react router dom11.react router dom
11.react router dom
 
9.component style
9.component style9.component style
9.component style
 
7.component life cycle
7.component life cycle7.component life cycle
7.component life cycle
 
8.hooks
8.hooks8.hooks
8.hooks
 
6.component repeat
6.component repeat6.component repeat
6.component repeat
 
4.event handling
4.event handling4.event handling
4.event handling
 
5.ref 101
5.ref 1015.ref 101
5.ref 101
 
3.component 101
3.component 1013.component 101
3.component 101
 
2.jsx 101
2.jsx 1012.jsx 101
2.jsx 101
 
1.react 101
1.react 1011.react 101
1.react 101
 
Swagger? OAS? with NodeJS
Swagger? OAS? with NodeJSSwagger? OAS? with NodeJS
Swagger? OAS? with NodeJS
 

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

  • 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]. 참고 문헌참고 문헌

Editor's Notes

  1. Permanent Generation GC 는 JVM 에서 메모리 회수를 뜻한다. JVM Crash
  2. 오픈 소스 장점 : 유연성 – 필요할 때 필요한 기능을 가져다 씀 효용성 : 필요한 기능을 적시에 사용 담당자 역량 강화 커뮤니티를 통한 문제 해결 고품질 단점 : 숨은 비용 기술지원 부재 관리도구 부재 고객 요구에 부합하지 않은 릴리스 계획 보안
  3. 복잡한 프로그램일수록 재 기동에 많은 시간이 소요 된다. 일반적인 프로젝트에서 WAS 재 기동에 소요되는 시간은 짧게는 30s에서 길게는 80s 이상도 소요 된다. 위 시뮬레이션으로 준비된 프로그램은 양과 복잡도가 낮아 적은 시간이 소요 되었다.