7. 개발 프로세스 제13회 한국자바개발자 컨퍼런스
소프트웨어 개발
현실?
개발자의 현실 관리자의 현실 소프트웨어 결과물
• 요구 사항 추가 변경 •항상 99.999 % 완료 • 짚으로 만든집
• 문서,교육,미팅,보고 •항상 야근, 근데 모하는지? • 낮은 품질. 버그 투성이
• 야근 •릴리즈는 언제? • 실패한 프로젝트는 없다.
• 티도 안나는 일 •위험 요소는 모지? • 끝나고 바로 고도화 프로젝트 시작
•이슈는 모야?
•일의 우선 순위?
결과물….
8. 개발 프로세스 제13회 한국자바개발자 컨퍼런스
<Insert Picture Here>
그래서…
저명한 박사님들께서.. 방법론을 만드시니..
RUP,CBD,CMMI
9. 개발 프로세스 제13회 한국자바개발자 컨퍼런스
But…
그러나 현실은
방법론은 방법론…
우리는 조금 더 현실적인 방법론이 필요합니다.
10. 개발 프로세스 제13회 한국자바개발자 컨퍼런스
실용주의 방법론
• 실용주의 방법론
– Erich Gamma, Joel Spolsky, Kent beck, Andrew Hunt
– Iterative & Incremental
– 애자일 기반
• 기존 방법론과 차이
– 요구 사항이 변화할 것을 가정
– 에러가 있을 것을 가정하여, 자주 테스트
– 협업과 커뮤니케이션
11. 개발 프로세스 제13회 한국자바개발자 컨퍼런스
• 대표적인 개발 방법론
스크럼이 대세!!
http://agilescout.com/learn-more-agile-software-development- 관리자 입장에서는 예측 불가
methods-this-year/
조직에 맞게 바꿔서 쓰세요
12. 개발 프로세스 제13회 한국자바개발자 컨퍼런스
• 대안 - Big Umbrella 방법론
전체 개발은
WATERFALL등 전통
적인 방법론 사용
각 단계를 세분화 하여
애자일 방법론 적용
관리층에는 예측성, 실무진에게는 실용성
13. 개발 프로세스 제13회 한국자바개발자 컨퍼런스
• 어떻게?
분석 설계 개발 테스팅
Iteration N Iteration N+1 Iteration N+2
분석 설계 개발 테스팅 분석 설계 개발 테스팅 분석 설계 개발 테스팅
성능 테스트 성능 테스트
어려운 것 쉬운것
중요한것 없어도 되는것
이건 주요 단계마다!!
14. 개발 프로세스 제13회 한국자바개발자 컨퍼런스
• 태스크 흐름
Open Assigned In Progress Resolved Closed
PL Developer Developer Developer Developer PL
PL creates detail task for developer.
Task is usually finished 1~4 day. (1~2
days are recommended)
Discuss with developer and estimate time.
Assign the time to task PL
Need Postponed
more
Information
Developer discuss with PL
PL lets developer to postpone the sub task.
The postponed task should be finished in
same iteration phase. Or closed
15. 개발 프로세스 제13회 한국자바개발자 컨퍼런스
• 도구들
• Atlassian JIRA ** + Green Hopper
• Redmine (Open source) *
• Trac
• Mantis
※ Off Site 개발에 유리
도구는 도구일뿐, 프로세스를 정립
하고 실천하는 것이 우선!!
내가 휴가를 떠나더라도, 다른 사람이 태스크 노트
만 보고 일을 할 수 있도록
16. 개발 프로세스 제13회 한국자바개발자 컨퍼런스
• 액셀부터 시작하세요
• JIRA가 멋지긴 하지만,
• 액셀로도 10~15명 팀 프로젝트 관리는
충분 합니다.
• 프로세스가 성숙되면 툴을 고민하세요
18. 개발 환경 제13회 한국자바개발자 컨퍼런스
• 흔한 개발 환경 시나리오
– 개발자가 아침에 출근해서
– 이클립스를 키고, 소스코드를 Git에서 Check Out 한후
– JIRA를 통해서 오늘 할당된 작업을 확인 한후에 코딩을 하고
– PC에서 Junit등을 이용하여 단위테스트등을 모두 끝 마치고
– 코드를 Git에 Commit하면
– Jekins에서 코드 변경을 감지하여, 자동으로 Check Out해서 mvn을
이용해서 컴파일 하고, 테스트 서버에 배포해서 단위 테스트를 모두
수행하고, 코드의 라인커버리지를 분석하여 리포팅 한다.
– 팀장은 빌드가 완료되었음을 확인하고, 단위 테스트 100% 완료 및
라인 커버리지 80% 완료를 확인한다.
– 릴리즈 날짜가 오면, 배포 엔지니어는 별도의 작업 없이 Jekins에서
빌드된 그날 WAR를 확인하고, Fabric으로 된 배포 스크립트를 수행
하면, 자동으로 개발,QA 환경으로 배포가 되고, 환경별로 필요한
resource 파일들이 자동으로 customization해서 배포가 완료된 후,
Junit 기반의 단위 테스트, SOAP UI 기반의 REST API 테스트,
Seleniuem 기반의 UI 테스트까지 자동으로 완료 한다. 만약에 배포나
테스트가 실패하면, 이전 버전으로 자동 롤백한다.
다들 이 정도는 하시져?
19. 개발 환경 제13회 한국자바개발자 컨퍼런스
• 툴셋업 보다는 실천
일일 빌드
80% 라인 커버리지
빌드 태깅
테스트 자동화
daily check out & commit
20. 개발 환경 제13회 한국자바개발자 컨퍼런스
• DEV,QA & STAGE
자동 빌드 배포 시스템
Python Fabric
Ruby Capistrano
릴리즈 테스트完
DEV QA STAGE
가상화 or 클라우드
필요할때만 전개
단말 (모바일)
연계 시스템
클라이언트
22. 아키텍쳐 제13회 한국자바개발자 컨퍼런스
• 기술 트랜드의 변화
예전의 기술 트랜드 현재의 기술 트랜드
기업 중심의 벤더 주도형 SNS 중심의 서비스회사 주도형
IBM,HP,Oracle,MS Google,Facebook,Amazon,Apache
웹로직,오라클,EJB,J2EE
몇몇 기술만 알던 시대 수 많은 오픈소스 조합
뉴타입?
HP 수퍼돔 같은 x86 기반 분산 시스템
소수의 대형 서버 , 클라우드 컴퓨팅
(Devops)
벤더 지원 구글링
27. 아키텍쳐 제13회 한국자바개발자 컨퍼런스
• 솔루션
분류 컴포넌트 솔루션
User Interface Layer JQuery,bootstrap,ExtJs,HighChart
Reverse Proxy Apache, NginX,HAProxy
Enterprise Service Bus Mule, ServiceMix
Message Queue Rabbit MQ,Active MQ,Zero MQ
Data Grid memcached,redis,Oracle coherence
Internal
Business Logic Sync Transaction Processing Tomcat,Jboss,Netty,Jetty
Working Space Gluster FS
RDBMS MySQL, MariaDB
File System Openstack Swift
NoSQL mongodb,cassandra,hbase
Protocol REST JSON/HTTP, Thrift, Protocol Buffer
External Integration Integration Apache Camel
Log Gathering Flume, Pentaho (ETL)
CEP Esper
Reporting
Transform & Analysis Hadoop, Hive, Pig,Sqoop,R, Mahout
Reporting Postgres,Redshift
Coordinator Zookeeper
Operation Monitoring Nagios,Ganglia,Zabbix,Cacti
Configuration mgmt Puppet,Chef,Fabric
28. 아키텍쳐 제13회 한국자바개발자 컨퍼런스
• Global roll out 시스템의 설계
1. 위치 선정
• 법적 이슈
• 회선 속도
• 세금
• 3 센터 : 미서부,영국,중국
2. API 라우팅
• ESB (Enterprise Service Bus)를 이용한 라우팅
3. 데이타 복제
• ETL, CDC
• 과연 데이타 복제가 필요할까? (한국에서 미국 출장간 사용자)
29. 아키텍쳐 제13회 한국자바개발자 컨퍼런스
• 클라우드 컴퓨팅상의 아키텍쳐 설계
클라우드 컴퓨팅의 장점 설계시 고려 사항
느려요
빠른 시장 진입
IO Performance
운영비 절감 싸지 않아요
초기 투자비 절감 기존 솔루션이 안돌아요
유연한 자원 사용 장애가 납니다.
(Auto Scale Out) (멀티 데이타 센타 설계)
30. 아키텍쳐 제13회 한국자바개발자 컨퍼런스
• 그리고
스크립트 언어 하나 정도는 더 해놔야…
Python,Ruby,Scala,Clojure,Erlang ….
32. 테스트 제13회 한국자바개발자 컨퍼런스
• 테스팅 모델
단계 개발 단계 제품 출시전
주체 개발자 테스트팀
타입 화이트 박스 블랙 박스
레벨 단위 테스트 통합 테스트 시스템 테스트 인수 테스트
기능 중심 컴포넌트간 비 기능 UX & VOC
연계성 ① 성능 법률 체크
② 장애 운영성
③ 확장성
④ 안정성
33. 테스트 제13회 한국자바개발자 컨퍼런스
• 테스트 레벨별 키 포인트
• 컴포넌트 기능 검증
단위 테스트 • 회귀 (regression) 테스트
• 라인 커버리지
• End2End 시나리오 검증
통합 테스트 • 인터페이스 검증 (메세지)
+ 기능 검증 (다른 사람이!!)
• 성능 및 비기능(장애)
시스템 테스트
• 최대 용량
• UX
인수 테스트
• 출시 여부 결정
34. 테스트 제13회 한국자바개발자 컨퍼런스
• 시스템 테스트는 짚고 넘어 갑시다.
– 언제? 주요 릴리즈 때 마다. (한달에 한번? 두달에 한번?)
– 기능 검증(통합 테스트를 포함 가능) + 비기능 검증
– 비기능 검증
종류 테스트 방법 측정 가능 항목
성능 단일 거래 테스트 성능 및 용량 측정
복합 거래 테스트 ** 병목 발견
장애 WAS 장애 kill -9 tomcat 장애 대응성
DB 장애 kill -9 mysqld 복구 시간
서버 장애 전원끄기
네트워크 장애 랜선 뽑기
확장성 부하 주면서 톰캣 늘리기 증설에 필요한 용량 산정
안정성 7일동안 부하 주기 메모리 누수, 디스크 용량 체크
35. 테스트 제13회 한국자바개발자 컨퍼런스
• 마이크로 벤치 마크 테스트
– 기술 검증
– 1~2일 소요
– 30 vuser 정도의 부하
– SOAP UI, Python
36. 테스트 제13회 한국자바개발자 컨퍼런스
• 테스트 절차
• 테스트 범위 및 목표 정의
테스트 계획 ** • 조직 및 스케쥴 정의 **
• 테스트 도구 결정
• 테스트 대상 시스템 분석 (리버스 엔지니어링)
테스트 분석 및 디자인 • 테스트 환경 디자인 및 구성
• 상세 테스트 시나리오 정의
• 개통 ** [오래 걸림]
구현 및 수행 • 수행
• 로깅 [중요]
• 결과 정리
평가 및 리포팅 * • 문서화
• 개선 사항 리포팅
37. 테스트 제13회 한국자바개발자 컨퍼런스
• 코드 리뷰
– 투자 대비 효율 최고
– 코드 리뷰는 문화 (정기적으로 수행, 자유로운 의견 교환, 창던지
기 금지)
캐주얼 정식
Peer review Walk Through Team review Inspection
사수와 부사수 서로 돌아가면서 팀장이나 시니어 전문 inspector 사
발표와 의견 교환 가 주도 용
이 목적
발표자가 스스로 사회자가 리뷰 대
주제를 정함 상을 지정하여 수
행.
리뷰의 결과는 다
음 태스크에 반영
38. 테스트 제13회 한국자바개발자 컨퍼런스
• 테스트 도구
종류 테스트 방법 측정 가능 항목
단위 테스트 • JUnit **, TestNG
커버리지분석 • Cobertura,EMMA 단위 테스트
Mock up • EasyMock, Mockito
인터페이스 테스트 • SOAPUI ** 단위테스트, 통합 테스트
부하 생성 • nGrinder (Jython) **
시스템 테스트
• Multi-mechanize (Python)
모니터링 • Cacti,Gaglia (인프라)
• Jennifer (APM) 시스템 테스트
• Jconsole, Visual VM (JVM)
39. 제13회 한국자바개발자 컨퍼런스
더 자세한 이야기는
http://bcho.tistory.com/category/조대협의%20소프트웨어%20개발
AND
사람 뽑습니다.
이렇게 서버 개발 해보고 싶으신분들은
bwcho75@gmail.com
단.. 수원 출퇴근입니다.
(강남까지 30분 통근 버스 다녀요~ 그리고 세
끼 무료 식사 제공)