국내외 시장변화 및 NHN의 개발 Practice    

 

세계시장의 변화

A.     스마트폰
-
전체 36%, 휴대폰 사용자중 44%
- 2
년 사이에 스마트폰 사용자의 변화=> 26% 사용자 증가

빠른 속도록 변화하고 있음을 확인 할 수 있다.
-
미국 스마트폰 OS: 안드로이드
44%, iOS 29%, Rim Blackberry 17%
-
스마트 폰을 통한 가장 많은 접속 사이트: 공통
Google, facebook.
-
마켓 다운 로드 수 변화: 안드로이드 시장의 급성장. iOS은 제자리, 이외는 후퇴중

B.      Cloud의 사용화
-Cloud
클라우드 컴퓨팅 회사에 사용한 만큼 가격을 지불하는 정책
- Cloud
서비스를 통해서 다양한 형태의 서비스가 제공 되고있다.(Iaas, Paas,SaaS)
-
개인의 99%, 전산센터의 95% idle상태이다
.
- facebook: 8
억 사용자 3 5천 모바일 사용자, 하루 2 5천개 사진 업그레이드, 70개국어 이상 언어 지원

한국 시장의 변화

A.     인터넷 인구의 포화è 사용연령의 증가 진행
스마트폰을 사용하는 인구 증가 è PC인터넷 대체, 인터넷 접근 확장

B.   40대 이상 인터넷 이용자 급증: 전체 인터넷 이용자중 36% (즉, 이제는 더 이상 인터넷이 젊은 세대들의 전유물이 아니다.)

C.  스마트폰의 PC와는 다른 인터넷 이용시간을 가지고 있다. 즉, Mobile은 이동성과 휴대성이라는 고유의 가치를 기반으로 인터넷 접근 범위를 확장시킴과 동시에, PC 인터넷 이용시간을 대체하는 현상을 나타낸다.

□ Cloud Computing의 상용화

  • IaaS: infra as a service: hardware를 설치 할 필요없이 사용한 대로 계산하는 방식, 이용자는 단지 기타 software는 본인이 빅접 설치하여 사용한다.

  • PaaS: Platform as a service: hardware에서 부터 Dev tools까지 제공된다. 이용 회사는 Application만 개발하면 된다.

  • SaaS: Software as a service: Hardware에서 Application 제공

 

NHN의 소프트웨어 품질 관리

A.     기존 방식(폭포수 개발 방식의 문제점 발견)
-
문제점 해결(코드 완성도, 단계적 빌드 반복 점진 개발
)
-
리펙토링(코드 이해도 증가)및 테스트 자동화 실행

B.      생산 지원 인프라 BTS(Bug Tracking System): 빠른 피드백 가능
BDS(Build & Deployment System),
다양한 환경으로 릴리즈 빌드 및 배포 수행.
마틴 파울러: 컴퓨터가 이해할 수 있는 코드는 어느 바보나 짤 수 있다. 좋은 프로그래머는 사람이 이해할 수 있는 코드를 짠다.

 

반복 점질 개발의 구성 요소

  • SVN: Source code control system
  • BTS: bug tracking test
  • Refactoring(리팩토링): 프로그램 전체 동작은 그대로 유지하면서, 프로그램의 논리적 구조만을 개선하는 것을 지칭한다.
  • 테스트 자동화: 대부분의 결함은 코드를 작성할 때 발생한다. 이러한 결함은 개발 시간이 지날수록 수정에 많은 비용을 발생 시킨다. 따라서 개발자가 코드를 작성할 때 부터 매번 스스로 결함을 검사하는 것이 바람직하다고 볼 수 있다. 이러한 매커니즘을 제공하기 위해서 나온 것이 테스트 자동화 이다.

 

 

 

 

□ Quality Practice: 리팩토링 및 테스트 자동화

 

  • Coding Convention: 코드의 가독성 유지보수성 향상을 위해 코딩 표준을 준수하여 동일한 스타일로 코드를 작성해야함
  • Code Review: 주요 코드에 대해서는 코드 리뷰를 수행- 중요한 기능, 중요도가 높거나 복잡한 로직/알고리즘, 테스트가 어려운 예외처리부분, 신규 개발자가 작성한 코드, 기존에 장애 및 결함 발생이 빈번한 코드 등
  • Code Coverage: 작성한 코드의 완성도를 높이기 위해 개발자 테스트를 수행하고, 테스트가 충분한지 커버리즈 확인- 테스트는 측정 가능하며, 반복적으로 수행 가능해야함
  • Static Analysis: 정적분석 도구를 활용하여 테스트에 검출하기 어려운 잠재오류를 사전에 제거해야 함
  • Code complexity: 작성한 코드의 복잡도를 확인- 복잡한 코드는 리팩토링 필요한지, 테스트가 충분히 수행되었는지 커버리지 확인해야 함
  • Duplicate Analysis: [특히 래거시 코드의 가독성을 높이고 유지보수가 용이하도록] Copy & Paste로 인한 중복코드를 식벽하여 리팩토링 수행

 

C.      오픈 소스의 사용 및 개발
-
운영비 절감, 사회적 기여

 

+ Recent posts