80 likes | 192 Views
2007 기년회. xeraph yang@xeraph.com. 교훈. 남을 위한 프로그래밍도 중요하지만 , 나를 위한 프로그래밍 도 중요하다 ! CC 인증 베이스라인 문서 자동 생성기 100 줄도 안 되는 스크립트가 231 만원 짜리 (7 명 x 11 만원 x 3 일 ) 1000 개가 넘는 소스 파일의 버전 관리 이력 평균 근로일 수 278 일 잡고 , 연봉 평균 3000 만 잡으면 하루 11 만원 7 명의 개발자가 초기 베이스라인 문서 작업으로 3 일 정도 소요
E N D
2007 기년회 xeraph yang@xeraph.com
교훈 • 남을 위한 프로그래밍도 중요하지만,나를 위한 프로그래밍도 중요하다! • CC 인증 베이스라인 문서 자동 생성기 • 100줄도 안 되는 스크립트가 231만원 짜리 (7명 x 11만원 x 3일) • 1000 개가 넘는 소스 파일의 버전 관리 이력 • 평균 근로일 수 278일 잡고, 연봉 평균 3000만 잡으면 하루 11만원 • 7명의 개발자가 초기 베이스라인 문서 작업으로 3일 정도 소요 • 개발자는 노가다 하지 않아서 좋고, 인증 담당자는 오류 없는 문서를 받아서 좋고~ • 수상쩍은 두더지 • 방화벽 정책 상 특정 서버에서만 접속 가능 • 원격 데스크탑 접속 수 제한으로 여러 명이 작업하기 매우 불편한 상황 • 간단한 포워드 프록시 프로그램을 작성하여 해결
깨달음 1 • STOP the Line! • 로그인이 30초 이상 걸리는 상황인데 바쁘기도 하고 아무도 신경 안 씀 • 가져올 데이터가 많으니 부하가 걸려서 원래 느릴 수 밖에 없나보다. • 쿼리 프로파일링해서 특정 쿼리가 인덱스 안 타는 것을 발견하고 튜닝 • 3000배 성능 개선 (0.01초 내 응답) • 이상 징후를 보면 끝까지 추적해서 원인을 밝혀내고 정상화 할 것! • 같은 문제가 다른 곳에도 존재할 수 있다. • 코드 스스로 자신을 드러내도록 만들기 • 메뉴 컨트롤 코드가 어떻게 동작하는지 알아보기 힘든 상황 • 단계적 리팩토링 • Instance Variable 참조를 모두 매개변수로 뽑아내고, • 각 메소드가 최소한의 정보만 요구하도록 리팩토링 • 메뉴 목록과 활성화 된 메뉴 식별자만 필요한 것이 분명하게 드러남
깨달음 2 • 계층 단위보다 기능 단위로 작업을 나누는 것이 좋다! • 매번 레이어 인터페이스를 어떻게 할지 논의하지 않아도 된다. • 하위 계층의 코드가 완성되지 않아서 기다리는 일이 없다. • 누가 아프거나 휴가 가더라도 쉽게 다른 사람이 대체할 수 있다. • 인수인계도 따로 며칠씩 걸려서 어렵게 할 필요가 없다. • 너무 의사소통이 줄어드는 문제는 10분 회의로 막을 수 있다. • 절차보다 표현이 문제의 답을 더 잘 드러낸다! • Diff 알고리즘은 벡터 그래프 한 장 보면 직관적으로 이해할 수 있다. • 브랜치 지옥 • 일관된 브랜치 정책이 없으면 나중에 수습 불가능한 사태가 온다. • 브랜치에서 개발하더라도 빨리 Trunk로 돌아오는 것이 편하다. • 코드 브랜치를 낸다면 테스트 데이터베이스도 브랜치를 낼 것.
성공의 경험 • 완결된 닷넷 개발 사이클 • Trac : 개발 문서 공동 작성 및 이슈 추적 • Subversion : 코드 및 쿼리 버전 관리 • NUnit : 유닛 테스트 • CruiseControl.net : 자동 빌드, 테스트 실행, 사이트 배포 • 강력한 프레임워크와 라이브러리 도입 • WCF • NHibernate • ASP.NET AJAX
통찰 • 파인만 학습법의 응용 • 어떻게? • 몇 가지 문제를 늘 머릿 속에 지니고 다닌다. • 현재 내 수준에서 생각해 낼 수 있는 모든 풀이를 찾는다. • 새로운 것을 배울 때마다 문제에 적용시켜본다. • 실제 사례 • The Goal과 Lean Software Development • 제조업의 아이디어를 소프트웨어 개발 현장으로! • Bloom Filter를 이용한 이벤트 연관 • GPU를 이용한 패턴 매칭 • 검색 엔진 기술의 접목
학습 주제 • Architecture • 4 + 1 View Model • Very Large System Architecture Issues • Microsoft Cluster Server • Language • Erlang • Algorithm • Bloom Filter • O(ND) Diff Algorithm • Statistical Spam Filtering • Efficient Computation of Frequent and Top-k Elements in Data Streams • Foundation of Information Retrieval
2008년은? • Security 2.0 with Open Security! • 참여와 공유의 오픈소스 보안 플랫폼 구현 • http://opensecurity.kr