제13회 JCO 세번째 발표, Server side software development
* 발표자 : 조대협(조병욱), 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가 가장 효과가 좋았다.
* 정리
서버 관련 기술을 검색해보면 많이 나오는 블로그 '조대협의 블로그'를 운영하고 있는 조대협님의 발표다. 삼성에서 아키텍트로 근무하고 있으며, 수원에서 일할 개발자들을 찾고 있다. 처음듣는 조대협님의 발표였다. 꽤 많은 준비를 해온 것으로 보인다. 발표하는 중간중간 가벼운 이야기로 분위기를 전환하면서 이야기에 대한 집중도를 유도하는 기술도 좋았다.
JCO에서 들었던 발표자들 중에서는 잘준비된 발표였다. 기술 트렌드나 서버 사이드 개발과 관련된 4가지 주제로 잘 정리된 이야기도 괜찮았다. 전체적으로 흠을 잡을 데 없는 발표였다.
발표 이후에 발표자료도 자신의 블로그에 빠르게 공개하셨다.