스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

54

description

즐거운 개발을 위한 3가지 요소(신뢰, 안목, 컨디션) 발전 방향을 공유합니다. 잘 갖춰진 개발 프로세스와 도구들을 통해 "신뢰도"를 끌어 올리고, 가치 있는 시간들로 채울 수 있도록 누울자리 선택하는 "안목"을 키우면서 머리를 비우고 좋은 "컨디션"으로 당면한 문제만을 집중할 수 있는 워크플로우!

Transcript of 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

Page 1: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관
Page 2: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

목차

• 즐거운 개발이란 무엇일까?

• 통합개발환경 - 필요한 이유

• 통합개발환경 - 구축 과정

• 통합개발환경 - 활용

Page 3: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

즐거운 개발개발(Development)은 멘탈 스포츠

Page 4: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

즐거운 개발의 조건

• 개발과 관련된 요소들이 통합되고

• 인프라와 문화가 잘 구축되면

• 보다 수월한 개발이 가능하고

• 구성원 간 의사소통이 원활해지면 

• 생산성과 신뢰도 향상

Page 5: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

그리고 좋은 컨디션

Page 6: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

그리고 좋은 컨디션

Page 7: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

그리고 좋은 컨디션

Page 8: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

하지만…이것으론 충분하지 않습니다.

해결해야할 다양한 문제들이 많이 있죠

Page 9: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

외부 방해요소

Page 10: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관
Page 11: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관
Page 12: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관
Page 13: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관
Page 14: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

자신에게 관대함

Page 15: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

무리한 일정 제시

Page 16: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

통합개발환경 - 필요한 이유image : http://www.presentationzen.com/presentationzen/2005/10/apple_special_e.html

Page 17: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

통합개발환경 없던 시절• 형상관리가 안되서 소스코드 변경이력 추적이 굉장히 어려웠고 작업내용 롤백도 쉽지 않았고

• 이슈관리도구와 같은 커뮤니케이션 도구의 부재로 제로보드와 같은 게시판을 활용하고

• 빌드서버의 부재로 각자 로컬에서 빌드 결국 "제 컴에선 잘 되는데요"라는 이야기를 어렵지 않게 접했고

• 무분별한 copy & paste로 인해 소스코드량이 기하급수적으로 늘어던 시절

Page 18: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관
Page 19: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관
Page 20: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

동영상 링크 : http://www.youtube.com/watch?v=8_lfxPI5ObM&t=3m6s

03:06 ~ 03:40

Page 21: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

통합개발환경 - 구축 과정image : http://www.presentationzen.com/presentationzen/2005/10/apple_special_e.html

Page 22: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

통합개발환경 기술셋 선정!

• 이슈관리도구

• Redmine

• 형상관리

• Subversion

• 빌드자동화 도구

• Maven

!

• 빌드서버

• Jenkins

• 품질지표 분석

• SonarQube

• 저장소 관리 도구

• Sonatype Nexus

Page 23: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

기술셋 선정 기준

Page 24: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

통합개발환경 기술셋 구성

• Bitnami Redmine Stack

• Redmine!

• Subversion!

• MySQL

• Apache

Page 25: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

통합개발환경 기술셋 구성

• Tomcat

• Jenkins : 빌드서버

• Nexus : 저장소 관리 도구

• SonarQube : 품질지표 분석

Page 26: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관
Page 27: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관
Page 28: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관
Page 29: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관
Page 30: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

주요 기술셋 구성요소 설정

• Redmine Subversion 관련된 개정판 설정

• Redmine Hudson 플러그인 설정

• Redmine 설정 자동화 적용

• Redmine 서비스 백업

Page 31: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

Subversion 관련된 개정판 설정

Page 32: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관
Page 33: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

Subversion History로 안목 키우는 방법

Page 34: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관
Page 35: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

Redmine Hudson 플러그인 설정

Page 36: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

Redmine Hudson 플러그인• Author : Toshiyuki Ando

• Show Job List

• Show build result on issue

• Show build history on activity

• Search issues related particular build.

• Show Build History

http://www.redmine.org/plugins/t-ando_redmine_hudson

Page 37: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관
Page 38: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

Redmine 설정 자동화 적용

Page 39: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

# encoding: UTF-8!!class UgrinderRedmineSettings < ActiveRecord::Migration!! def up ! # [Hudson] -> [설정]! HudsonSettings.connection.execute("INSERT INTO #{HudsonSettings.table_name} (project_id, url, show_compact, job_filter) VALUES (#{@project.id}, 'http://#{@ip}:9090/jenkins/', 1, 'easy-company2-with-testcase-guide,')")! HudsonJob.connection.execute("INSERT INTO #{HudsonJob.table_name} (project_id, hudson_id, name, created_at) VALUES (#{@project.id}, 1, 'easy-company2-with-testcase-guide', now())")! HudsonJobSettings.connection.execute("INSERT INTO #{HudsonJobSettings.table_name} (hudson_job_id, build_rotate, build_rotator_days_to_keep, build_rotator_num_to_keep) VALUES (1, 0, -1, -1)")!!! # [관리] -> [설정] -> [저장소]! Setting.create(:name => 'enabled_scm', :value => %w(Subversion Git))! Setting.create(:name => 'autofetch_changesets', :value => '1')! Setting.create(:name => 'sys_api_enabled', :value => '1')! Setting.create(:name => 'sys_api_key', :value => 'fu0cLRSRrdWudOMuQdlD')! Setting.create(:name => 'commit_ref_keywords', :value => 'refs,references,IssueID,*,task')! end !!end!

Page 40: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

• 관리

• ‘설정’ 항목 중 [일반], [표시방식], [인증], [메일 알림], [저장소]에 대한 기본값 변경

• 5명 기본 ‘사용자’ 생성

• Non Member ‘역활 및 권한’ 변경

• 플러그인 설정

• Tab Plugin 활용해 SonarQube 탭 설정

• Redmine Mylyn Plugin 설치

• 베이스캠프 프로젝트

• 프로젝트 생성 및 모듈, 저장소 설정

• 프로젝트 수행단계 템플릿 일감 생성

• 참고자료 파일, 문서, 위키 데이터 생성

Page 41: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

서비스 백업

Page 42: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

통합개발환경 - 활용image : http://www.presentationzen.com/presentationzen/2005/10/apple_special_e.html

Page 43: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

“기록을 바탕으로 성장한다.”

Page 44: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

2년 전 기록했던 시간

Page 45: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

2년 전 오늘 시간기록

Page 46: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

시간기록 세부내역

Page 47: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관
Page 48: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관
Page 49: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관
Page 50: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관
Page 51: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

개발자의 신뢰도

소프트웨어 기술자경력관리시스템의 경력증명서로 알 수 있을까요?

Page 52: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

자신의 인맥들이 추천 해주는 것이 진짜가 아닐런지?…

Page 53: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

질의 응답

Page 54: 스프링캠프2014 - 즐거운 개발을 위한 스마트한 습관

감사합니다.