2013년 4월 25일 목요일

QCon Tokyo 2013


이번주 화요일, 개발자 커뮤니티인 InfoQ에서 진행하는 컨퍼런스인 QCon Tokyo 2013에 다녀왔습니다.
올해는 크라우드,모바일/HTML5,임베디드,에자일/모델링,빅데이터/분산처리를 중심으로 세션이 펼쳐졌으며 저는 개인적인 관심 분야인 클라우드와 DDD(Domain Driven Design)을 중심으로 세션에 참가하였습니다.

QCon Tokyo 2013 프로그램

개인적으로 인상깊었던 세션에 대해서 간단히 소개해 봅니다.

Scaling Pinterest - Marty Weiner

사진공유 서비스인 Pinterest의 엔지니어인 Marty Weiner씨가 처음 1명의 개발자와1대의 서버로 시작한Pinterest가 서비스 규모를 키워감에 따라 어떻게 스케일링 문제에 대응해 나갔는지에 대해 발표한 세션으로 실제 서비스 상에서 발생한 문제에 대한 성공과 실패에 대한 개발자의 생생한 경험담을 들을 수 있는 값진 시간이었습니다. 개인적으로는 이번 컨퍼런스에서 가장 건질것이 많지 않았나 싶습니다.
간단히 요약 하자면
-소규모에서는 MySQL이 짱임.
-스케일링 성공의 열쇠는 아마존 EC2/S3의 활용
-대규모 데이터베이스 구축에 있어서의 클러스터링 보다는 분할(Sharding)이 유리
프레젠테이션 자료는 위에 링크한 프로그램 안내표에서 받으실 수 있으며 조만간 동영상 링크가 추가될 예정입니다.

DDD를 스크럼으로 진행하자! 또는 스크럼을 DDD로 진행하자! - 하라다 키로

도메인 드리븐 디자인. 요즘 공부하고 있는 분야기인 한데 도통 감이 안와세 헤메이고 있습니다. 하라다씨는 어제도 같이 술한잔 했던 분인데 적지 않은 나이임에도 불구하고 열정으로 가득찬 열혈 개발자 이십니다. 솔직히 일본에서 일하면서 놀랐던 점은 나이 많은 분들이 현역에서 활동하면서 경험과 지식을 후배들 전해주고 있다는 점 입니다.

암튼 요약하자면
-처음부터 완벽한 모델링을 추구하려 하지 마라. 어차피 쓸모 없어진다. 빨리 만들어서 돌려보고 피드백 하라.
-전통적인 워터플 개발프로세스에선  DDD는 위의 이유로 성공하기가 어렵다.
DDD로 수행하는 Scrum 플로우

Model Exploration Whirlpool
하라다씨가 자신의 세션에서 필살기로 준비한 그림입니다. 문제는 아직도 제 눈에  C자 세개 겹처놓은것으로 밖에는 보이질 않는다는 점 입니다.
Model Exploration Whirlpool 설명 PDF자료


작은 오브젝트로 도메인모델을 작성하라 : DDD실전가이드 - 마스다 토루

바로위의 하라다 키로씨의 세션이 DDD와 에자일의 개념 소개에 치중한 반면 이번 세션은 실제 DDD를 개발에 적용함에 있어서 신경 써야 할 사항들을 구체적으로 제시합니다. 마스다 토루씨도 컨퍼런스후에 열린 맥주파티에서 이야기 할 수 있는 기회가 있었는데 제 아버지 연배임에도 개발 전반에 대해 이야기가 잘 통해서 놀랐습니다. (특히 클라이언트 뒷담화)

세션 내용을 요약하면
- 커뮤니케이션의 불완전함이 결국 모델의 불완전함으로 이어진다. 완벽한 소통을 위해서는 움직이는 프로그램을 하루라도 빨리 고객에게 제공하고 피드백을 받아야 한다. (위 세션 내용과 거의 같은 맥락임)
- 도메인 모델을 가능한한 잘게 나눌것
- 도메인 층을 UI.데이터베이스,외부인터페이스와 분리하여 관리할것
- 확장성을 생각한답시고 복잡하게 디자인하지 마라. 눈에 보이는것을 구현하는것으로 충분할 때가 많다.
- 도메인 오브젝트는 작명에 신경쓰고, 작게, 잘게.
- 무조건 작게 만들라! -예) 클래스는 50줄 이내, 메소드는 3줄 이내, 팩키지는 10파일 이내. 커지는것은 결국 재사용을 어렵게 하고 리팩토링을 힘들게 하여 점점 프로그램을 망가트린다.
등등등.. 암튼 적다보니 상당히 알찬 세션이였구나 하는 생각이 듭니다.

끝나고보니 버벅대는 영어로 들이대며 다닌 데다가 잘 못하는 술에 맥주한잔 마시고 얼굴이 벌게서 돌아다닌게 생각나 챙피한 하루였습니다. 요번 골든위크 연휴때는 조용히 집에서 에릭 에반스의 Domain Driven Design 이나 정독해 봐야겠습니다.