제13회컨퍼런스 조대협 서버사이드개발

24,364 views

Published on

2 Comments
53 Likes
Statistics
Notes
No Downloads
Views
Total views
24,364
On SlideShare
0
From Embeds
0
Number of Embeds
18,577
Actions
Shares
0
Downloads
205
Comments
2
Likes
53
Embeds 0
No embeds

No notes for slide

제13회컨퍼런스 조대협 서버사이드개발

  1. 1. 제13회 한국자바개발자 컨퍼런스Server Side Software Development Server Side Architect Group http://www.facebook.com/groups/serverside 조대협 (bwcho75@gmail.com)
  2. 2. 제13회 한국자바개발자 컨퍼런스필자 소개조대협• 개발자• 웹로직 기술 지원• 장애 진단, 성능 튜닝• 컨설턴트(SOA,EAI,ALM)• 아키텍트(대용량 분산 시스템)• 클라우드 컴퓨팅 APAC 아키텍트• 프리렌서• 지금은 Chief(Cheap?) 아키텍트 지금은 수원으로 출근해요 블로그 : http://bcho.tistory.com 서버사이드 아키텍트 그룹 : http://www.facebook.com/groups/serverside 이메일 : bwcho75@gmail.com
  3. 3. 오늘 이야기 할것은? 제13회 한국자바개발자 컨퍼런스 • 서버 사이드 개발
  4. 4. 시간 관계상… 제13회 한국자바개발자 컨퍼런스 • 4가지 개발 프로세스 개발도구 아키텍쳐 테스트 시간이 짧아서, 요점만 간단히!!
  5. 5. 요즘 트랜드는? 제13회 한국자바개발자 컨퍼런스 • 요즘 잘 나가는 실리콘 밸리 START UP No more vendor 소규모 조직 [10~20명] 스스로 하자!! 잘하는 것 부터 해서 발전 애자일 클라우드 컴퓨팅 오픈 소스 Devops
  6. 6. 제13회 한국자바개발자 컨퍼런스Software Development Life Cycle개발프로세스
  7. 7. 개발 프로세스 제13회 한국자바개발자 컨퍼런스 소프트웨어 개발 현실? 개발자의 현실 관리자의 현실 소프트웨어 결과물 • 요구 사항 추가 변경 •항상 99.999 % 완료 • 짚으로 만든집 • 문서,교육,미팅,보고 •항상 야근, 근데 모하는지? • 낮은 품질. 버그 투성이 • 야근 •릴리즈는 언제? • 실패한 프로젝트는 없다. • 티도 안나는 일 •위험 요소는 모지? • 끝나고 바로 고도화 프로젝트 시작 •이슈는 모야? •일의 우선 순위? 결과물….
  8. 8. 개발 프로세스 제13회 한국자바개발자 컨퍼런스 <Insert Picture Here> 그래서… 저명한 박사님들께서.. 방법론을 만드시니.. RUP,CBD,CMMI
  9. 9. 개발 프로세스 제13회 한국자바개발자 컨퍼런스But… 그러나 현실은  방법론은 방법론…  우리는 조금 더 현실적인 방법론이 필요합니다.
  10. 10. 개발 프로세스 제13회 한국자바개발자 컨퍼런스 실용주의 방법론 • 실용주의 방법론 – Erich Gamma, Joel Spolsky, Kent beck, Andrew Hunt – Iterative & Incremental – 애자일 기반 • 기존 방법론과 차이 – 요구 사항이 변화할 것을 가정 – 에러가 있을 것을 가정하여, 자주 테스트 – 협업과 커뮤니케이션
  11. 11. 개발 프로세스 제13회 한국자바개발자 컨퍼런스 • 대표적인 개발 방법론 스크럼이 대세!! http://agilescout.com/learn-more-agile-software-development- 관리자 입장에서는 예측 불가 methods-this-year/ 조직에 맞게 바꿔서 쓰세요
  12. 12. 개발 프로세스 제13회 한국자바개발자 컨퍼런스 • 대안 - Big Umbrella 방법론 전체 개발은 WATERFALL등 전통 적인 방법론 사용 각 단계를 세분화 하여 애자일 방법론 적용 관리층에는 예측성, 실무진에게는 실용성
  13. 13. 개발 프로세스 제13회 한국자바개발자 컨퍼런스 • 어떻게? 분석 설계 개발 테스팅 Iteration N Iteration N+1 Iteration N+2 분석 설계 개발 테스팅 분석 설계 개발 테스팅 분석 설계 개발 테스팅 성능 테스트 성능 테스트 어려운 것 쉬운것 중요한것 없어도 되는것 이건 주요 단계마다!!
  14. 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. 15. 개발 프로세스 제13회 한국자바개발자 컨퍼런스 • 도구들 • Atlassian JIRA ** + Green Hopper • Redmine (Open source) * • Trac • Mantis ※ Off Site 개발에 유리 도구는 도구일뿐, 프로세스를 정립 하고 실천하는 것이 우선!! 내가 휴가를 떠나더라도, 다른 사람이 태스크 노트 만 보고 일을 할 수 있도록
  16. 16. 개발 프로세스 제13회 한국자바개발자 컨퍼런스 • 액셀부터 시작하세요 • JIRA가 멋지긴 하지만, • 액셀로도 10~15명 팀 프로젝트 관리는 충분 합니다. • 프로세스가 성숙되면 툴을 고민하세요
  17. 17. 제13회 한국자바개발자 컨퍼런스Development Environment개발 환경
  18. 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. 19. 개발 환경 제13회 한국자바개발자 컨퍼런스 • 툴셋업 보다는 실천 일일 빌드 80% 라인 커버리지 빌드 태깅 테스트 자동화 daily check out & commit
  20. 20. 개발 환경 제13회 한국자바개발자 컨퍼런스 • DEV,QA & STAGE 자동 빌드 배포 시스템 Python Fabric Ruby Capistrano 릴리즈 테스트完 DEV QA STAGE 가상화 or 클라우드 필요할때만 전개 단말 (모바일) 연계 시스템 클라이언트
  21. 21. 제13회 한국자바개발자 컨퍼런스Server Side Architecture서버 아키텍쳐
  22. 22. 아키텍쳐 제13회 한국자바개발자 컨퍼런스 • 기술 트랜드의 변화 예전의 기술 트랜드 현재의 기술 트랜드 기업 중심의 벤더 주도형 SNS 중심의 서비스회사 주도형 IBM,HP,Oracle,MS Google,Facebook,Amazon,Apache 웹로직,오라클,EJB,J2EE 몇몇 기술만 알던 시대 수 많은 오픈소스 조합 뉴타입? HP 수퍼돔 같은 x86 기반 분산 시스템 소수의 대형 서버 , 클라우드 컴퓨팅 (Devops) 벤더 지원 구글링
  23. 23. 아키텍쳐 제13회 한국자바개발자 컨퍼런스 • 아키텍쳐 설계 순서
  24. 24. 아키텍쳐 제13회 한국자바개발자 컨퍼런스 • 일반적인 서버 아키텍쳐 • 계정계 시스템 내부 트렌젝션 처리 • OLTP (동기/비동기) • 비지니스 로직 • 대외계 • EAI (Enterprise Application Integration), 시스템간 연동 AIA, • 시스템간, 컴포넌트간, 데이타 센터간 연계 통계 분석, 리포팅 • 정보계 • OLAP,BI,빅데이타 운영
  25. 25. 아키텍쳐 제13회 한국자바개발자 컨퍼런스 • 레퍼런스 아키텍쳐
  26. 26. 아키텍쳐 제13회 한국자바개발자 컨퍼런스 • 컴포넌트
  27. 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. 28. 아키텍쳐 제13회 한국자바개발자 컨퍼런스 • Global roll out 시스템의 설계 1. 위치 선정 • 법적 이슈 • 회선 속도 • 세금 • 3 센터 : 미서부,영국,중국 2. API 라우팅 • ESB (Enterprise Service Bus)를 이용한 라우팅 3. 데이타 복제 • ETL, CDC • 과연 데이타 복제가 필요할까? (한국에서 미국 출장간 사용자)
  29. 29. 아키텍쳐 제13회 한국자바개발자 컨퍼런스 • 클라우드 컴퓨팅상의 아키텍쳐 설계 클라우드 컴퓨팅의 장점 설계시 고려 사항 느려요 빠른 시장 진입 IO Performance 운영비 절감 싸지 않아요 초기 투자비 절감 기존 솔루션이 안돌아요 유연한 자원 사용 장애가 납니다. (Auto Scale Out) (멀티 데이타 센타 설계)
  30. 30. 아키텍쳐 제13회 한국자바개발자 컨퍼런스 • 그리고 스크립트 언어 하나 정도는 더 해놔야… Python,Ruby,Scala,Clojure,Erlang ….
  31. 31. 제13회 한국자바개발자 컨퍼런스Testing테스트
  32. 32. 테스트 제13회 한국자바개발자 컨퍼런스 • 테스팅 모델 단계 개발 단계 제품 출시전 주체 개발자 테스트팀 타입 화이트 박스 블랙 박스 레벨 단위 테스트 통합 테스트 시스템 테스트 인수 테스트 기능 중심 컴포넌트간 비 기능 UX & VOC 연계성 ① 성능 법률 체크 ② 장애 운영성 ③ 확장성 ④ 안정성
  33. 33. 테스트 제13회 한국자바개발자 컨퍼런스 • 테스트 레벨별 키 포인트 • 컴포넌트 기능 검증 단위 테스트 • 회귀 (regression) 테스트 • 라인 커버리지 • End2End 시나리오 검증 통합 테스트 • 인터페이스 검증 (메세지) + 기능 검증 (다른 사람이!!) • 성능 및 비기능(장애) 시스템 테스트 • 최대 용량 • UX 인수 테스트 • 출시 여부 결정
  34. 34. 테스트 제13회 한국자바개발자 컨퍼런스 • 시스템 테스트는 짚고 넘어 갑시다. – 언제? 주요 릴리즈 때 마다. (한달에 한번? 두달에 한번?) – 기능 검증(통합 테스트를 포함 가능) + 비기능 검증 – 비기능 검증 종류 테스트 방법 측정 가능 항목 성능 단일 거래 테스트 성능 및 용량 측정 복합 거래 테스트 ** 병목 발견 장애 WAS 장애 kill -9 tomcat 장애 대응성 DB 장애 kill -9 mysqld 복구 시간 서버 장애 전원끄기 네트워크 장애 랜선 뽑기 확장성 부하 주면서 톰캣 늘리기 증설에 필요한 용량 산정 안정성 7일동안 부하 주기 메모리 누수, 디스크 용량 체크
  35. 35. 테스트 제13회 한국자바개발자 컨퍼런스 • 마이크로 벤치 마크 테스트 – 기술 검증 – 1~2일 소요 – 30 vuser 정도의 부하 – SOAP UI, Python
  36. 36. 테스트 제13회 한국자바개발자 컨퍼런스 • 테스트 절차 • 테스트 범위 및 목표 정의 테스트 계획 ** • 조직 및 스케쥴 정의 ** • 테스트 도구 결정 • 테스트 대상 시스템 분석 (리버스 엔지니어링) 테스트 분석 및 디자인 • 테스트 환경 디자인 및 구성 • 상세 테스트 시나리오 정의 • 개통 ** [오래 걸림] 구현 및 수행 • 수행 • 로깅 [중요] • 결과 정리 평가 및 리포팅 * • 문서화 • 개선 사항 리포팅
  37. 37. 테스트 제13회 한국자바개발자 컨퍼런스 • 코드 리뷰 – 투자 대비 효율 최고 – 코드 리뷰는 문화 (정기적으로 수행, 자유로운 의견 교환, 창던지 기 금지) 캐주얼 정식 Peer review Walk Through Team review Inspection 사수와 부사수 서로 돌아가면서 팀장이나 시니어 전문 inspector 사 발표와 의견 교환 가 주도 용 이 목적 발표자가 스스로 사회자가 리뷰 대 주제를 정함 상을 지정하여 수 행. 리뷰의 결과는 다 음 태스크에 반영
  38. 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. 39. 제13회 한국자바개발자 컨퍼런스 더 자세한 이야기는http://bcho.tistory.com/category/조대협의%20소프트웨어%20개발 AND 사람 뽑습니다. 이렇게 서버 개발 해보고 싶으신분들은 bwcho75@gmail.com 단.. 수원 출퇴근입니다. (강남까지 30분 통근 버스 다녀요~ 그리고 세 끼 무료 식사 제공)

×