15. 프론트-엔드 개발 in 웹
개발언어 : HTML, CSS, JavaScript
웹 브라우저에서 동작 할 수 있는 언어를 이용하여 사용자가 이용하는
웹 페이지를 만드는 작업
웹 사이트가 다이나믹한 UI 로 구성되어 있어 프론트-엔드 개발의
역할이 중요
JavaScript를지원하지않을경우제대로이용하지못하는서비스증가
5
24. 프론트-엔드 개발 in NAVER
11
프론트-엔드
마크업 JavaScript
JavaScript를 이용하여 복잡한 사용자 UI를 구현 하거나 Ajax를 이
용하여 백-엔드와 통신부분을 개발
25. 프론트-엔드 개발 in NAVER
11
프론트-엔드
마크업 JavaScript
JavaScript를 이용하여 복잡한 사용자 UI를 구현 하거나 Ajax를 이
용하여 백-엔드와 통신부분을 개발
HTML5 및 node.js를 등장으로 웹앱, 데스크탑 애플리케이션,
백-엔드 서비스까지 개발 범위를 확장
26. !
KEY POINT
글로벌 IT 기업들도 자바스크립트를 사용하여 풍부한 사용자 경험을
제공하고 있음
사용자에게 제공하는 UI 가 복잡해짐에 따라 자바스크립트 개발이
웹 서비스 개발에서 중요한 역할을 함
프론트-엔드 기술이 다양한 플랫폼으로 영역이 확대되고 있음
네이버에서의 프론트-엔드 개발은
브라우저 기술로 사용자 UI를 개발하는 것
12
28. 소속 : NHN Technology Services / UIT 개발실
팀원 : 14명 + @
역할 :
- 네이버 서비스 프론트엔드 개발
- 최신 IT 기술 RD
- 프론트엔드 교육 커리큘럼 운영
- 페이스북 프론트엔드개발 그룹 운영
https://www.facebook.com/groups/webfrontend/
프론트엔드개발팀
14
254. 프레임워크
반복적으로 만들어야 하는 로직은 프레임워크에 의존하여 개발
프레임워크 규칙에 의해 개발자들이 일관된 코드를 작성 할 수 있는
환경을 마련
21http://designzum.com/2014/02/19/top-best-javascript-framework-2014/
373. 일정 산출
개발자가 직접 스펙 분석 후 일정 산출
회의, 휴식 시간, 리서치 등 실제 개발
시간 외에 일상적으로 소모되는 시간도
개발 일정에 포함하여 추정
프로젝트 스펙이 복잡하거나 투입 인원
이 많을 경우 플래닝 포커 게임을 통해
일정 추정의 오차를 줄임
28
374. 플래닝포커?
애자일 프로젝트 관리에서 일정 추정시 많이 사용하는 방법
모든 팀원이 일정 추정에 참여하여 스펙 이해도 증가
토론을 통해 팀원 모두가 동의할 수 있는 일정 추정 가능
29
375. 플래닝포커 방법
1. 스펙을 잘아는 사람이 팀원들에게 스펙 설명
2. 스펙을 듣고 각자가 가진 숫자카드 하나씩 제출
3. 가장 큰 숫자와 가장 작은 숫자를 낸 사람의 의견을 듣고,
다시 숫자카드 제출
4. 숫자가 통일될때까지 반복적으로 숫자 카드를 제출
5. 의견 일치가 안될 경우 토론을 통해 의견 조율 후 평균값으로
일정 산출
30
376. !
KEY POINT
스펙 분석을 철저하게 할 수록 개발 이슈 감소
프레임워크 사용 여부는 필수가 아닌 선택
개발자간 협의를 통해 사용할 라이브러리를 선택하여 중복
된 라이브러리 사용 방지
객관적인 일정 산출 방법을 도입하여 일정 추정에 정확도
부여
데드라인(오픈일정)이 촉박하게 정해진 프로젝트는...
31
379. 마크업 구조 협의
일부 UI 콤포넌트를 사용하게 될 경우 정해진 마크업 구조가 존재
하므로 해당 구조에 맞게 개발되도록 마크업 조직에 협조 요청
UI 를 신규 개발 할 경우 마크업 개발자와의 긴밀한 협업이 필요
개발 경험이 많은 마크업 개발자일수록 자바스크립트 작업을 고려하여
마크업개발진행
34
389. !
KEY POINT
기술 이슈가 있을 경우 바로 협의를 통해 스펙 조절
특정 콤포넌트를 사용하게 될 경우 마크업 조직과 협의
데이터 API 를 사용하게 될 경우 백-엔드 개발자와 협의
API에서 제공하는 데이터를 미리 정의하여 개발 진행
프로젝트 진행시 타 부서와의 커뮤니케이션은 중요
38
396. 프레임워크 라이브러리 설치
npm, bower 와 같은 패키지 관리 도구의 출현으로 쉽게 라이브러리
관리 가능
패키지/라이브러리 파일은 코드 버전 관리에 포함하지 않고 패키지
관리 도구를 통해 각 개발자가 관리하므로 저장소 용량 절약에 도움
패키지 검색 사이트를 운영
NPM : https://www.npmjs.org
Bower: http://bower.io/search/
45
409. 구조 설계
최근의 JavaScript는 복잡한 UI를 가진 어플리케이션을 구현하기
때문에 구조 설계 필요
대부분의 개발자가 백-엔드 개발에 익숙하여 객체 지향 구조 설계
최근 객체 지향 구조 설계방식이 JavaScript의 장점을 해치는 것
같아 다양한 개발 방식 도입 시도
프레임워크를 사용할 경우 프레임워크에서 지향하는 설계방식을
따라 구조 설계
49
421. !
KEY POINT
프로젝트 시작시 개발환경을 세팅(프레임워크, 라이브러리 다운로드)에
많은 리소스 낭비
yeoman, bower, npm, grunt 등을 활용하여 관련 프레임워크라이
브러리들을 쉽게 관리
사용하는 프레임워크, 개발자들의 역량, 프로젝트종류에 따라 구조 설계
작업이 필요
52
431. 배포 자동화
반복적인 작업이 필요할 경우 Grunt 를 이용하여 자동화
Copy, Clean, Uglifyjs, JSDoc 플러그인을 자주 사용
CoffeeScript, SASS 등 전처리 언어도 플러그인으로 자동화 가능
이미 수 많은 Grunt 플러그인이 제작되어 활용
56
446. 성능 최적화
Chrome 개발자 도구가 제공하는도구를 통해 추가 최적화 작업 진행
Network
네트워크 요청에 대한 정보를 분석하여 리소스 최적화
Timeline
불필요한 이벤트 및 메모리 낭비 분석
Profiles
JavaScript CPU 사용율 분석
62
456. 서비스 적용
백-엔드 개발자에게 동작하는 샘플 페이지와 코드를 전달하여
배포 요청
몇몇 프로젝트의 경우 프론트-엔드 개발자가 서비스 페이지에
직접 적용
66
457. !
KEY POINT
반복적인 작업들은 Grunt 작업 관리 도구를 활용하여 자동화
배포시 수 많은 Grunt 플러그인 활용
성능 측정도구(YSlow, Pagespeed 등)가 제시해 주는
가이드라인을 수행하여 웹 페이지 성능 최적화 70~80% 달성
크롬 개발자 도구처럼 성능 모니터링을 제공하는 툴 적극 활용
67
459. 네이버 윙버스
국내(네이버 지도), 해외(구글 지도) API 를 통해 여행 정보 연동
각각의 API 를 랩핑하여 윙버스만의 라이브러리 제작
현재 서비스 종료
69
460. 네이버 자동차 모바일
네이버 Jindo 라이브러리를 사용하여 개발
이미지플리킹,컨텐츠플리킹,탭컨텐츠등다이나믹한사용자UI제공
70
461. Line for Firefox OS
웹기반OS인FirefoxOS위에작동하는프론트-엔드기술로제작
localStorage, Indexeddb, web worker 등 HTML5 스펙 활용
실시간 데이터 수신을 위해 long-polling push 처리
FirefoxOS네이티브API활용(카메라,sdcard,갤러리등)
71https://marketplace.firefox.com/app/line
462. 2014 네이버 지방선거
프론트-엔드 기술을 활용 하여 득표율 레이싱 개발
개표 진행 상황을 실시간으로 서버와 통신하여
여러 가지 차트 형태로 사용자에게 빠른 정보를 제공
72
463. 테트리스 게임
네이버 D2 in 부산 세미나에서 발표한
테트리스
HTML5 스펙들을 활용하여 클라이언트
개발
mongodb, express, nodejs를 활용
하여 테트리스 게임서버 개발
프론트-엔드 기술로 프론트-엔드부터
백-엔드까지 Full-Stack을 구현
73
464. !
KEY POINT
많은 서비스가 사용자에게 보다 편리하고 다양한 경험을 제공하기
위해서 프론트-엔드 기능 개발에 집중
웹이 구동되는 디바이스가 늘어남에 따라 웹기술로 제작 가능한
서비스의 범위 확대
기존에 플래시, Silver light 등의 도움을 받아야 했던 기능을
HTML5 최신 스펙을 활용하여 구현 가능
node.js 의 등장으로 자바스크립트 만으로 웹 서비스 full-stack
개발 가능한 환경 도래
74