85
착 하면 척! CHAK 서비스 개발기 (부제. 나의 오픈소스 활용기) 오승현 [email protected]

[D2 campus]착 하면 척! chak 서비스 개발기

Embed Size (px)

Citation preview

Page 1: [D2 campus]착 하면 척! chak 서비스 개발기

착 하면 척! CHAK 서비스 개발기(부제. 나의 오픈소스 활용기)

오승현 [email protected]

Page 2: [D2 campus]착 하면 척! chak 서비스 개발기

네팔 코이카 국제 협력 요원 (컴퓨터 교육)

Page 3: [D2 campus]착 하면 척! chak 서비스 개발기

XE 공모전 모듈 부문 수상 (중고장터 모듈)

Page 4: [D2 campus]착 하면 척! chak 서비스 개발기

국내 최초 오픈소스를 위한 공간 XEHUB

Page 5: [D2 campus]착 하면 척! chak 서비스 개발기

아직 1.학.년이니까.. 잘부탁드려요

Page 6: [D2 campus]착 하면 척! chak 서비스 개발기

착 프로젝트 팀원

전창완

선지훈

오승현

이준하

Page 7: [D2 campus]착 하면 척! chak 서비스 개발기

CHAK 서비스?

Page 8: [D2 campus]착 하면 척! chak 서비스 개발기

CHAK 이란?

XpressEngine 등 오픈소스 프로젝트 개발자와 사용자간의

커뮤니케이션을 위해서 시작

Page 9: [D2 campus]착 하면 척! chak 서비스 개발기

CHAK 이란?

어디에나 착! 댓글 혹은 포럼을

커뮤니케이션에 필요한 기능들을 착!착!착!붙일 수 있다

Page 10: [D2 campus]착 하면 척! chak 서비스 개발기

착(CHAK)이란?

단 코드 몇줄로!

소셜로그인 기능

Page 11: [D2 campus]착 하면 척! chak 서비스 개발기

착(CHAK)이란?

단 코드 몇줄로!

코드 하이라이팅

Page 12: [D2 campus]착 하면 척! chak 서비스 개발기

착(CHAK)이란?

단 코드 몇줄로!

파일 첨부

Page 13: [D2 campus]착 하면 척! chak 서비스 개발기

착(CHAK)이란?

www.xpressengine.com

!

Page 14: [D2 campus]착 하면 척! chak 서비스 개발기

착(CHAK)이란?

www.xpressengine.com

!

Page 15: [D2 campus]착 하면 척! chak 서비스 개발기

서비스 시연

데모페이지에 CHAK 댓글을 붙일 거예요

Page 16: [D2 campus]착 하면 척! chak 서비스 개발기

여기에서 볼 수 있어요!

http://d2.naver.com

Page 17: [D2 campus]착 하면 척! chak 서비스 개발기

오픈소스를 활용하다

Page 18: [D2 campus]착 하면 척! chak 서비스 개발기

착 서비스에

사용된 오픈소스

Page 19: [D2 campus]착 하면 척! chak 서비스 개발기
Page 20: [D2 campus]착 하면 척! chak 서비스 개발기

# CHAK 서비스 요구사항

Dynamic UI를 제공하는

Single Page Application (SPA)

Page 21: [D2 campus]착 하면 척! chak 서비스 개발기

# CHAK 서비스 요구사항

아 웃겨 ㅋㅋㅋㅋㅋㅋㅋㅋ

댓글달기

오승현 아 웃겨 ㅋㅋㅋㅋㅋㅋㅋㅋ

Page 22: [D2 campus]착 하면 척! chak 서비스 개발기

자바스크립트 프레임워크

Page 23: [D2 campus]착 하면 척! chak 서비스 개발기

ReactJS

Page 24: [D2 campus]착 하면 척! chak 서비스 개발기

ReactJS

Page 25: [D2 campus]착 하면 척! chak 서비스 개발기

웹 개발을 앱 개발 처럼

http://www.satter.org/2013/05/embarcaderos-rad-studio-xe4.html

Page 26: [D2 campus]착 하면 척! chak 서비스 개발기

웹 개발을 앱 개발 처럼

이 버튼 HTML로 만들어볼까요?

좋아요 12

Page 27: [D2 campus]착 하면 척! chak 서비스 개발기

웹 개발을 앱 개발 처럼

http://jsfiddle.net/o3y6dxbj/

좋아요 12

Page 28: [D2 campus]착 하면 척! chak 서비스 개발기

웹 개발을 앱 개발 처럼

http://jsfiddle.net/o3y6dxbj/

좋아요 12

Page 29: [D2 campus]착 하면 척! chak 서비스 개발기

웹 개발을 앱 개발 처럼

Likebtn 이라는 새로운 컴포넌트를 정의

HTML 과 같은 방식인 JSX 문법으로 커스텀한 컴포넌트를 사용

Page 30: [D2 campus]착 하면 척! chak 서비스 개발기

웹 개발을 앱 개발 처럼

Page 31: [D2 campus]착 하면 척! chak 서비스 개발기

웹 개발을 앱 개발 처럼

<Editor />

Page 32: [D2 campus]착 하면 척! chak 서비스 개발기

웹 개발을 앱 개발 처럼

<Editor />

Page 33: [D2 campus]착 하면 척! chak 서비스 개발기

웹 개발을 앱 개발 처럼

Page 34: [D2 campus]착 하면 척! chak 서비스 개발기

MVC 중 View

MODEL VIEW

CONTROLLER

Page 35: [D2 campus]착 하면 척! chak 서비스 개발기

XpressEngine 3 (Alpha 버전)

http://xpressengine.io

Page 36: [D2 campus]착 하면 척! chak 서비스 개발기

필요한 기능만 컴포넌트로 구현 가능 (확장성)

https://www.flickr.com/photos/bdesham/2432400623https://flic.kr/p/9aJJ5m

Page 37: [D2 campus]착 하면 척! chak 서비스 개발기

아이디어 구상

Document

<script></script>

댓글 창 생성

Page 38: [D2 campus]착 하면 척! chak 서비스 개발기

API를 통한 비동기 통신

RESTful JSON API

Page 39: [D2 campus]착 하면 척! chak 서비스 개발기

API를 통한 비동기 통신

CRUD (Create, Read, Update, Delete)

GET chak.it/articles/:id

HTTP REQUEST

POST chak.it/articles

PATCH chak.it/articles/:idDELETE chak.it/articles/:id

Page 40: [D2 campus]착 하면 척! chak 서비스 개발기

API를 통한 비동기 통신

SUCCESS or FAIL

{ "data": { "type" : "articles", "id" : "000110" } }

HTTP RESPONSE

Page 41: [D2 campus]착 하면 척! chak 서비스 개발기

데이터 및 VIEW 처리

{ "data": { "type" : "articles", "id" : "000110" } }

Page 42: [D2 campus]착 하면 척! chak 서비스 개발기

PROBLEM #1

점점 많아지는 컴포넌트(=Javascript) 파일들

Page 43: [D2 campus]착 하면 척! chak 서비스 개발기

수많은 리엑트 컴포넌트 (javascript)

HTML

Page 44: [D2 campus]착 하면 척! chak 서비스 개발기

수많은 리엑트 컴포넌트 (javascript)

HTML

의존관계

Page 45: [D2 campus]착 하면 척! chak 서비스 개발기

수많은 리엑트 컴포넌트 (javascript)

https://www.flickr.com/photos/nicksieger/280662707/

Page 46: [D2 campus]착 하면 척! chak 서비스 개발기

Javascript를 모듈화하는 방법

CommonJS

AMD (Asynchronous Module Definition)

Page 47: [D2 campus]착 하면 척! chak 서비스 개발기

Browserify를 통한 모듈화

기존의 자바스크립트를 NodeJS(Common JS)와 같은 방식으로

모듈화 하고 의존성을 관리하여 하나의 번들 파일로 만들어준다.

Page 48: [D2 campus]착 하면 척! chak 서비스 개발기

오픈소스 Browserify를 통한 모듈화

의존 관계의 모듈을 자바스크립트 내에서 require 하여 사용한다.

Browserify를 통해 번들화

Page 49: [D2 campus]착 하면 척! chak 서비스 개발기

Dependency까지 깔끔하게 번들처리

BEFORE AFTER

Page 50: [D2 campus]착 하면 척! chak 서비스 개발기

SASS를 사용하여 스타일 모듈화

Page 51: [D2 campus]착 하면 척! chak 서비스 개발기

SASS를 사용하여 스타일 모듈화

Page 52: [D2 campus]착 하면 척! chak 서비스 개발기

SASS를 사용하여 스타일 모듈화

Page 53: [D2 campus]착 하면 척! chak 서비스 개발기

SASS를 사용하여 스타일 모듈화

Page 54: [D2 campus]착 하면 척! chak 서비스 개발기

컴포넌트 & 스타일 디렉토리 구조 일치화

components

AlphabetAvatar.jsx

CommentAction.jsx

CommentActionArea.jsx

CommentFooter.jsx

CommentForm.jsx

CommentEditor.jsx

CommentLoginBtn.jsx

CommentHeader.jsx

CommentList.jsx

CommentListRow.jsx

.

.

.

components

_alphabet_avatar.scss

.

.

.

_comment_action.scss

_comment_action_area.scss

_comment_footer.scss

_comment_form.scss

_comment_editor.scss

_comment_login_btn.scss

_comment_header.scss

_comment_list.scss

_comment_list_row.scss

React 컴포넌트 SASS 스타일시트

Page 55: [D2 campus]착 하면 척! chak 서비스 개발기

PROBLEM #2

개발보다 테스트하는데 오래 걸린다.

Page 56: [D2 campus]착 하면 척! chak 서비스 개발기

Selenium Test

웹 기반 어플리케이션을 테스트할 수 있도록 도와주는

오픈소스 자동화 UI 테스팅 도구

Page 57: [D2 campus]착 하면 척! chak 서비스 개발기

테스트 자동화 (Selenium test) 시연

Page 58: [D2 campus]착 하면 척! chak 서비스 개발기

Selenium 테스트 결과

Page 59: [D2 campus]착 하면 척! chak 서비스 개발기

Continuous Integration(지속적인 통합)

리포팅

결과 통지

테스팅

배포jenkins-ci.org

Page 60: [D2 campus]착 하면 척! chak 서비스 개발기

Continuous Integration(지속적인 통합)

Page 61: [D2 campus]착 하면 척! chak 서비스 개발기

테스트 도입 후

코드 추가 용이함

디버깅 시간 감소

품질 높은 소프트웨어 유지

Page 62: [D2 campus]착 하면 척! chak 서비스 개발기

테스트는 컴퓨터한테 맡겨놓고 커피 한 잔 해요

Page 63: [D2 campus]착 하면 척! chak 서비스 개발기

실무에서 배운 협업 방법

Page 64: [D2 campus]착 하면 척! chak 서비스 개발기

깃으로 소스 형상 관리

착_프로젝트.zip

Page 65: [D2 campus]착 하면 척! chak 서비스 개발기

깃으로 소스 형상 관리

착_프로젝트_20150816.zip

Page 66: [D2 campus]착 하면 척! chak 서비스 개발기

깃으로 소스 형상 관리

착_프로젝트_최종본.zip

Page 67: [D2 campus]착 하면 척! chak 서비스 개발기

깃으로 소스 형상 관리

착_프로젝트_최종본_다시최종본.zip

Page 68: [D2 campus]착 하면 척! chak 서비스 개발기

깃으로 소스 형상 관리

착_프로젝트_최종본_다시최종본_제발최종본.zip

Page 69: [D2 campus]착 하면 척! chak 서비스 개발기

깃으로 소스 형상 관리

Page 70: [D2 campus]착 하면 척! chak 서비스 개발기

깃으로 소스 형상 관리

Page 71: [D2 campus]착 하면 척! chak 서비스 개발기

깃으로 소스 형상 관리 (커밋 히스토리 관리)

Page 72: [D2 campus]착 하면 척! chak 서비스 개발기
Page 73: [D2 campus]착 하면 척! chak 서비스 개발기
Page 74: [D2 campus]착 하면 척! chak 서비스 개발기

요비로 이슈 관리

Page 75: [D2 campus]착 하면 척! chak 서비스 개발기

전체 이슈를 한눈에 파악

Page 76: [D2 campus]착 하면 척! chak 서비스 개발기

# 요약

Page 77: [D2 campus]착 하면 척! chak 서비스 개발기

요약 #1 - 잘부탁드려요

아직 1.학.년이니까.. 잘부탁드려요

Page 78: [D2 campus]착 하면 척! chak 서비스 개발기

요약 #2 - 오픈소스 활용

착 서비스에

사용된 오픈소스

Page 79: [D2 campus]착 하면 척! chak 서비스 개발기

요약 #3 - 서비스를 지탱하는 오픈소스

Page 80: [D2 campus]착 하면 척! chak 서비스 개발기

요약 #3 - 문제해결도 오픈소스

Page 81: [D2 campus]착 하면 척! chak 서비스 개발기

요약 #4 - 테스팅 자동화도 오픈소스

Page 82: [D2 campus]착 하면 척! chak 서비스 개발기

요약 #4 - 협업도 오픈소스

Page 83: [D2 campus]착 하면 척! chak 서비스 개발기

스스로 고민하고 성장할 수 있었던 착 서비스 개발

Page 84: [D2 campus]착 하면 척! chak 서비스 개발기

감사합니다.

Page 85: [D2 campus]착 하면 척! chak 서비스 개발기

reference

• Xpressengine http://xpressengine.com/

• Xpressengine3 http://xpressengine.io/

• React http://facebook.github.io/react/

• AngularJS https://angularjs.org/

• EmberJS http://emberjs.com/

• KnockoutJS http://knockoutjs.com/

• BackboneJS http://backbonejs.org/

• VUEJS http://vuejs.org/

• Jenkins http://jenkins-ci.org/

• NPM http://www.npmjs.com/

• Gulp http://gulpjs.com/

• Codeception http://codeception.com/

• Yobi http://yobi.io/

• Git http://git-scm.com/

• Browserify http://browserify.org/

• Sass http://www.sass-lang.com/

• PHPUnit https://phpunit.de/

• Selenium http://www.seleniumhq.org/

• Codeception http://codeception.com/