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

39
제 13 제 제제제제제제제 제제제제 Server Side Software Development Server Side Architect Group http://www.facebook.com/groups/serve rside 조조조 ([email protected])

Upload: terry-cho

Post on 20-Aug-2015

15.250 views

Category:

Documents


0 download

TRANSCRIPT

제 13 회 한국자바개발자 컨퍼런스

Server Side Software Development

Server Side Architect Group http://www.facebook.com/groups/serverside

조대협 ([email protected])

제 13 회 한국자바개발자 컨퍼런스

필자 소개

지금은 수원으로 출근해요

조대협• 개발자• 웹로직 기술 지원• 장애 진단 , 성능 튜닝• 컨설턴트 (SOA,EAI,ALM)• 아키텍트 ( 대용량 분산 시스템 )• 클라우드 컴퓨팅 APAC 아키텍트• 프리렌서 • 지금은 Chief(Cheap?) 아키텍트

블로그 : http://bcho.tistory.com서버사이드 아키텍트 그룹 : http://www.facebook.com/groups/serverside이메일 : [email protected]

제 13 회 한국자바개발자 컨퍼런스오늘 이야기 할것은 ?

• 서버 사이드 개발

제 13 회 한국자바개발자 컨퍼런스시간 관계상…

• 4 가지

개발 프로세스 개발도구 아키텍쳐 테스트

시간이 짧아서 , 요점만 간단히 !!

제 13 회 한국자바개발자 컨퍼런스요즘 트랜드는 ?

• 요즘 잘 나가는 실리콘 밸리 START UP

사람이 재산

끊임 없는 공부

소규모 조직 [10~20명 ] 오픈 소스

애자일Devops

잘하는 것 부터 해서 발전No more vendor

스스로 하자 !!클라우드 컴퓨팅

제 13 회 한국자바개발자 컨퍼런스

개발프로세스Software Development Life Cycle

제 13 회 한국자바개발자 컨퍼런스개발 프로세스

소프트웨어 개발현실 ?

결과물… .

개발자의 현실• 요구 사항 추가 변경• 문서 , 교육 , 미팅 , 보고• 야근• 티도 안나는 일

관리자의 현실•항상 99.999 % 완료•항상 야근 , 근데 모하는지 ?•릴리즈는 언제 ?•위험 요소는 모지 ?•이슈는 모야 ?•일의 우선 순위 ?

소프트웨어 결과물• 짚으로 만든집• 낮은 품질 . 버그 투성이• 실패한 프로젝트는 없다 .• 끝나고 바로 고도화 프로젝트 시작

제 13 회 한국자바개발자 컨퍼런스개발 프로세스

<Insert Picture Here>

그래서…

저명한 박사님들께서 .. 방법론을 만드시니 .. RUP,CBD,CMMI

제 13 회 한국자바개발자 컨퍼런스개발 프로세스

But…

그러나 현실은 방법론은 방법론… 우리는 조금 더 현실적인 방법론이 필요합니다 .

제 13 회 한국자바개발자 컨퍼런스개발 프로세스

실용주의 방법론

• 실용주의 방법론– Erich Gamma, Joel Spolsky, Kent beck, Andrew Hunt– Iterative & Incremental– 애자일 기반

• 기존 방법론과 차이– 요구 사항이 변화할 것을 가정– 에러가 있을 것을 가정하여 , 자주 테스트– 협업과 커뮤니케이션

제 13 회 한국자바개발자 컨퍼런스개발 프로세스

• 대표적인 개발 방법론

스크럼이 대세 !!

관리자 입장에서는 예측 불가조직에 맞게 바꿔서 쓰세요

http://agilescout.com/learn-more-agile-software-development-methods-this-year/

제 13 회 한국자바개발자 컨퍼런스개발 프로세스

• 대안 - Big Umbrella 방법론

전체 개발은 WATER-FALL 등 전통적인

방법론 사용

각 단계를 세분화 하여애자일 방법론 적용

관리층에는 예측성 , 실무진에게는 실용성

제 13 회 한국자바개발자 컨퍼런스개발 프로세스

• 어떻게 ?

분석 설계 개발 테스팅

분석 설계 개발 테스팅 분석 설계 개발 테스팅 분석 설계 개발 테스팅

Iteration N Iteration N+1 Iteration N+2

어려운 것중요한것

쉬운것없어도 되는것

성능 테스트 성능 테스트

이건 주요 단계마다 !!

제 13 회 한국자바개발자 컨퍼런스개발 프로세스

• 태스크 흐름

Open Assigned In Progress Resolved Closed

PL

Need more

Information

Postponed

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

Developer Developer DeveloperDeveloper PL

PL

Developer discuss with PLPL lets developer to postpone the sub task.The postponed task should be finished in same iteration phase. Or closed

제 13 회 한국자바개발자 컨퍼런스개발 프로세스

• 도구들

• Atlassian JIRA ** + Green Hop-per

• Redmine (Open source) *• Trac• Mantis

도구는 도구일뿐 , 프로세스를 정립 하고 실천하는 것이 우선 !!

※ Off Site 개발에 유리

내가 휴가를 떠나더라도 , 다른 사람이 태스크 노트만 보고 일을 할 수 있도록

제 13 회 한국자바개발자 컨퍼런스개발 프로세스

• 액셀부터 시작하세요

• JIRA 가 멋지긴 하지만 ,• 액셀로도 10~15 명 팀 프로젝트 관리는

충분 합니다 .• 프로세스가 성숙되면 툴을 고민하세요

제 13 회 한국자바개발자 컨퍼런스

개발 환경Development Environment

제 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 테스트까지 자동으로 완료 한다 . 만약에 배포나 테스트가 실패하면 , 이전 버전으로 자동 롤백한다 .

다들 이 정도는 하시져 ?

제 13 회 한국자바개발자 컨퍼런스개발 환경

• 툴셋업 보다는 실천

일일 빌드80% 라인 커버리지

테스트 자동화빌드 태깅

daily check out & commit

제 13 회 한국자바개발자 컨퍼런스개발 환경

• DEV,QA & STAGE

DEV QA STAGE

테스트完

가상화 or 클라우드필요할때만 전개

릴리즈

연계

시스

클라

이언

단말

(모바

일)

자동 빌드 배포 시스템

Python Fabric

Ruby Capistrano

제 13 회 한국자바개발자 컨퍼런스

서버 아키텍쳐Server Side Architecture

제 13 회 한국자바개발자 컨퍼런스아키텍쳐

• 기술 트랜드의 변화

웹로직 , 오라클 ,EJB,J2EE 몇몇 기술만 알던 시대

HP 수퍼돔 같은 소수의 대형 서버

벤더 지원

예전의 기술 트랜드기업 중심의 벤더 주도형IBM,HP,Oracle,MS

수 많은 오픈소스 조합

x86 기반 분산 시스템, 클라우드 컴퓨팅

(Devops)

구글링

현재의 기술 트랜드SNS 중심의 서비스회사 주도형

Google,Facebook,Amazon,Apache

뉴타

입?

제 13 회 한국자바개발자 컨퍼런스아키텍쳐

• 아키텍쳐 설계 순서

제 13 회 한국자바개발자 컨퍼런스아키텍쳐

• 일반적인 서버 아키텍쳐

내부 트렌젝션 처리( 동기 / 비동기 )

시스템간 연동

통계 분석 , 리포팅

운영

• 계정계 시스템• OLTP• 비지니스 로직

• 정보계• OLAP,BI, 빅데이타

• 대외계• EAI (Enterprise Application Integra-

tion), AIA, • 시스템간 , 컴포넌트간 , 데이타 센터간 연계

제 13 회 한국자바개발자 컨퍼런스아키텍쳐

• 레퍼런스 아키텍쳐

제 13 회 한국자바개발자 컨퍼런스아키텍쳐

• 컴포넌트

제 13 회 한국자바개발자 컨퍼런스아키텍쳐

분류 컴포넌트 솔루션

Internal Business Logic

User Interface Layer JQuery,bootstrap,ExtJs,HighChartReverse Proxy Apache, NginX,HAProxyEnterprise Service Bus Mule, ServiceMixMessage Queue Rabbit MQ,Active MQ,Zero MQData Grid memcached,redis,Oracle coherenceSync Transaction Processing Tomcat,Jboss,Netty,JettyWorking Space Gluster FSRDBMS MySQL, MariaDBFile System Openstack SwiftNoSQL mongodb,cassandra,hbaseProtocol REST JSON/HTTP, Thrift, Protocol Buffer

External Integration Integration Apache Camel

Reporting

Log Gathering Flume, Pentaho (ETL)CEP EsperTransform & Analysis Hadoop, Hive, Pig,Sqoop,R, MahoutReporting Postgres,Redshift

OperationCoordinator ZookeeperMonitoring Nagios,Ganglia,Zabbix,CactiConfiguration mgmt Puppet,Chef,Fabric

• 솔루션

제 13 회 한국자바개발자 컨퍼런스아키텍쳐

• Global roll out 시스템의 설계1. 위치 선정

• 법적 이슈• 회선 속도• 세금• 3 센터 : 미서부 , 영국 ,

중국

2. API 라우팅• ESB (Enterprise Service Bus) 를 이용한 라우팅

3. 데이타 복제• ETL, CDC• 과연 데이타 복제가 필요할까 ? ( 한국에서 미국 출장간 사용자 )

제 13 회 한국자바개발자 컨퍼런스아키텍쳐

• 클라우드 컴퓨팅상의 아키텍쳐 설계

빠른 시장 진입

운영비 절감

초기 투자비 절감

유연한 자원 사용(Auto Scale Out)

느려요 IO Performance

싸지 않아요

기존 솔루션이 안돌아요

장애가 납니다 .( 멀티 데이타 센타 설계 )

클라우드 컴퓨팅의 장점 설계시 고려 사항

제 13 회 한국자바개발자 컨퍼런스아키텍쳐

• 그리고

스크립트 언어 하나 정도는 더 해놔야…Python,Ruby,Scala,Clojure,Erlang ….

제 13 회 한국자바개발자 컨퍼런스

테스트Testing

제 13 회 한국자바개발자 컨퍼런스테스트

• 테스팅 모델

단위 테스트 통합 테스트 시스템 테스트 인수 테스트

개발 단계 제품 출시전

개발자 테스트팀

화이트 박스 블랙 박스

기능 중심 컴포넌트간 연계성

비 기능① 성능② 장애③ 확장성④ 안정성

UX & VOC법률 체크운영성

단계

주체

타입

레벨

제 13 회 한국자바개발자 컨퍼런스테스트

• 테스트 레벨별 키 포인트

단위 테스트

통합 테스트

시스템 테스트

인수 테스트

• 컴포넌트 기능 검증• 회귀 (regression) 테스트• 라인 커버리지

• End2End 시나리오 검증• 인터페이스 검증 ( 메세지 )+ 기능 검증 ( 다른 사람이 !!)

• 성능 및 비기능 ( 장애 )• 최대 용량

• UX• 출시 여부 결정

제 13 회 한국자바개발자 컨퍼런스테스트

• 시스템 테스트는 짚고 넘어 갑시다 .– 언제 ? 주요 릴리즈 때 마다 . ( 한달에 한번 ? 두달에 한번 ?)– 기능 검증 ( 통합 테스트를 포함 가능 ) + 비기능 검증 – 비기능 검증

종류 테스트 방법 측정 가능 항목

성능 단일 거래 테스트복합 거래 테스트 **

성능 및 용량 측정병목 발견

장애 WAS 장애 kill -9 tomcatDB 장애 kill -9 mysqld서버 장애 전원끄기네트워크 장애 랜선 뽑기

장애 대응성복구 시간

확장성 부하 주면서 톰캣 늘리기 증설에 필요한 용량 산정

안정성 7 일동안 부하 주기 메모리 누수 , 디스크 용량 체크

제 13 회 한국자바개발자 컨퍼런스테스트

• 마이크로 벤치 마크 테스트– 기술 검증– 1~2 일 소요– 30 vuser 정도의 부하 – SOAP UI, Python

제 13 회 한국자바개발자 컨퍼런스테스트

• 테스트 절차

테스트 계획 **

테스트 분석 및 디자인

구현 및 수행

평가 및 리포팅 *

• 테스트 범위 및 목표 정의• 조직 및 스케쥴 정의 **• 테스트 도구 결정

• 테스트 대상 시스템 분석 ( 리버스 엔지니어링 )• 테스트 환경 디자인 및 구성• 상세 테스트 시나리오 정의

• 개통 ** [ 오래 걸림 ]• 수행• 로깅 [ 중요 ]

• 결과 정리• 문서화• 개선 사항 리포팅

제 13 회 한국자바개발자 컨퍼런스테스트

• 코드 리뷰– 투자 대비 효율 최고– 코드 리뷰는 문화 ( 정기적으로 수행 , 자유로운 의견 교환 , 창던지기 금지 )

Peer review Walk Through Team review Inspection

사수와 부사수 서로 돌아가면서 발표와 의견 교환이

목적

팀장이나 시니어가 주도

전문 inspector 사용

발표자가 스스로 주제를 정함

사회자가 리뷰 대상을 지정하여 수행 .

리뷰의 결과는 다음 태스크에 반영

캐주얼 정식

제 13 회 한국자바개발자 컨퍼런스테스트

• 테스트 도구

종류 테스트 방법 측정 가능 항목

단위 테스트 • JUnit **, TestNG

단위 테스트커버리지분석 • Cobertura,EMMA

Mock up • EasyMock, Mockito

인터페이스 테스트 • SOAPUI ** 단위테스트 , 통합 테스트

부하 생성 • nGrinder (Jython) **• Multi-mechanize

(Python)시스템 테스트

모니터링 • Cacti,Gaglia ( 인프라 )• Jennifer (APM)• Jconsole, Visual VM (JVM)

시스템 테스트

제 13 회 한국자바개발자 컨퍼런스

더 자세한 이야기는http://bcho.tistory.com/category/ 조대협의 %20 소프트웨어 %20

개발

AND

사람 뽑습니다 .이렇게 서버 개발 해보고 싶으신분들은

[email protected]

단 .. 수원 출퇴근입니다 . (강남까지 30 분 통근 버스 다녀요 ~ 그리고

세끼 무료 식사 제공 )