Java/Language

제13회 JCO 세번째 발표, Server side software development

허니몬 2013. 2. 24. 21:30

* 발표자 : 조대협(조병욱), http://bcho.tistory.com

* 발표자료 : http://bcho.tistory.com/717


* 서버 사이드 개발 

* 모바일 개발쪽으로 엔지니어들의 대거 이동이 일어남

* 4가지 이야기


* 개발프로세스

* 개발도구

* 아키텍처

* 테스트 

* 요즘 트렌드는?

* 서버 사이드 트렌드가 많이 바뀜

- 과거 : EJB, WebLogic만 알면 되었다.

- 벤더를 이용한 테스트 가능

- 현재 : 동물원처럼 tomcat, camel, 코끼리 등

* 소규모(10~20)

* 새로운 트렌드에 대한 수용이 용이함

* 끊임없이 공부, 사람이 재산

* 개발 프로세스 : 소프트웨어 개발 현실 

* 개발자의 현실

* 관리자의 현실

* 소프트웨어 결과물

* 망한 프로젝트가 없다 : 망하기 전에 차세대 진행!

* RUP, CBD, MUI, 방법론

- 방법론은 방법론

- 소프트웨어 개발은 하향평준화 해야한다.

- 웹 서비스는 어렵다.

- REST

* 하향 평준화 : 실용적으로 개발하자

- 기존 방법론과의 차이점

- 요구사항이 변한다는 것을 인정하다.

- 에러가 있음을 인정하여, 자주 테스트

- 협업과 커뮤니케이션

- 애자일 방법론 적용시 자신의 조직 문화에 맞춰서 해야한다.

* 대표적인 개발 방법론

- 스프린트

- 매니지먼트 쪽에서 가시성이 나타나지 않음

- 대안 : Big Umbrella 방법론

- 관리층에게는 예측성, 실무진에게는 가시성

- 각 단계를 스프린트 형태로 세분화하여 애자일 방법론 적용

- 제약

- 어떻게?

- 어려운 것, 중요한 것 먼저

* 테스크 흐름을 만듬

- 태스크를 하루나 이틀의 크기로 나눠 주어야 한다.

- 팀의 속도, 예측이 가능하다.

* 도구들 : JIRA, Redmine, Trac, Mantis

- off site 개발에 유리

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

- 실무 적용 : 이슈를 등록하고, 이 이슈를 내가 하고 있는 일을 다른 사람에게 전달할 수 있는 형태로 전달

- 디테일한 기록을 남기기 위해서

- 내가 휴가를 떠나더라도, 다른 사람이 노트만 보고 일을 할 수 있도록 해준다.

- 도구를 공부하는데 너무 많은 시간이 할당된다.

* 엑셀부터 시작하세요.

- 프로젝트의 흐름을 몸에 익히는 것이 중요하다.

* 스크럼, 툴 등 자신에게 맞춰서 하면 된다.

* 개발방법론은 한가지만 사용하지 마라.

- 린(큰 그림), 스크럼(작은 업무처리를 어떻게 할 것인가), XP(커뮤니케이션)

* 개발환경

* 소스 체크아웃 -> 작업 확인 -> 코딩 -> 빌드 등등...

* 툴셋업 보다는 실천

- 커밋 후 일일 빌드

- 일일 빌드 후 메일 알림 처리, 빌드 처리

- 80% 라인 커버리지 

- 빌드 태깅, 테스트 자동화

* daily check out & commit

- 소스 형상화 최신 상태 유지

- SomeUI

- REST API만 테스트

* DEV, QA & STAGE

- 자동빌드 -> 배포시스템(Python Fabric, Ruby Capistrano) -> DEV -> QA -> STAGE

- Python Fabric, Ruby Capistrano : 하루 이틀 정도로 할 수 있을까?

* 아키텍처

* 기술 트렌드의 변화

- 기업 중심의 벤더 주도형 : 기업 중심의 벤더 주도형

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

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

- 벤더 지원

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

- 수 많은 오픈소스 조합

- x86기반 분산 시스템 클라우드 컴퓨팅(Devops)

- 구글

- 개발자가 똑똑해진 시대가 되었다.

* 아키텍처 설계순서

1. 비즈니스 아키텍처

- 비즈니스 관점

2. 시스템 아키텍처

- 아미텍쳐 기본Architecture Principals

- Application Architecture

1. Static Arch.

2. Dynamic Arch.

3. interface Arch.

- Technical Architecture

1. SW deployment arch.

2. HW deployment arch.

- Data Architecture

- Reference Architecutre를 찾아라.

- Reference Arch

- Vendor Consulting

- Case study

3. Architecture Decision Process

- 기술트렌드 : 장애가 나면 빠르게 고치는 것으로 변화

* 일반적인 서버 아미텍처

- 내부 트랜잭션 처리

- 시스템간 연동

- 통계 분석

- 운영

* 레퍼런스 아키텍처 

- User Interface Layer

- Access Layer

- Business Component Layer

- Stroace Layer

* 솔루션

- Apache Camel : 외부 연계가 쉬워?

* Global roll out 시스템의 설계

1. 위치선정

- 법적 이슈 : Regulation

- 회선 속도

- 세금

- 3센터 : 미서부, 영국, 중국

- 중국은 서비스하려면 중국내에서 위치해야하며, 26개 성에 각각 있어야 한다.

2. API 라우팅

3. 데이터 복제

- ETL, CDC

- 과연 데이터 복제가 필요할까?

* 클라우 컴퓨팅상의 아키텍처 설계

- 클라우드 컴퓨팅의 장점

- 빠른 시장 진입

- 운영비 절감

- 초기 투자비용

- 유연한 자원

- 설계시 고려사항

- 느려요 :IO Performance

- 싸지 않다.

- 자신에게 맞는 환경을 선정하는 것이 중요

- 기존 솔루션이 안돌아요

- 장애가 납니다.

* 언어 트렌드

- 스크립트 언어 하나정도는 더 해놔야...

* 테스트

* 테스팅 모델

* 테스트 레벨별 키 포인트

- 단위 테스트

- 통합 테스트 : End2End 시나리오 : 웹은 화면, 단말은 단말에서, 기능검증은 다른 사람이!

- 시스템 테스트 : 성능, 장애, 확장성(증설에 대한 안정성), 안정성

- 마이크로 벤치 마크 테스트

- 기술검증, 1~2일 소요, 30 vuser 정도의 부하

- SOAP UI, Python

- 부하테스트

* 코드 리뷰

- Peer review -> Walk Through -> **Team review** -> Inspection

- Team review가 가장 효과가 좋았다. 

* 정리

01234


    서버 관련 기술을 검색해보면 많이 나오는 블로그 '조대협의 블로그'를 운영하고 있는 조대협님의 발표다. 삼성에서 아키텍트로 근무하고 있으며, 수원에서 일할 개발자들을 찾고 있다. 처음듣는 조대협님의 발표였다. 꽤 많은 준비를 해온 것으로 보인다. 발표하는 중간중간 가벼운 이야기로 분위기를 전환하면서 이야기에 대한 집중도를 유도하는 기술도 좋았다.

    JCO에서 들었던 발표자들 중에서는 잘준비된 발표였다. 기술 트렌드나 서버 사이드 개발과 관련된 4가지 주제로 잘 정리된 이야기도 괜찮았다. 전체적으로 흠을 잡을 데 없는 발표였다.

    발표 이후에 발표자료도 자신의 블로그에 빠르게 공개하셨다.