what / why / how we’re engineering at smartstudy

Post on 18-Dec-2014

5.175 Views

Category:

Technology

5 Downloads

Preview:

Click to see full reader

DESCRIPTION

스마트스터디 창업 3년을 맞이하여, 지난 시간동안 스마트스터디는 무엇을, 왜, 어떻게 개발해왔는가를 정리해보았습니다.

TRANSCRIPT

WHAT / WHY / HOWWE’RE ENGINEERING AT SMARTSTUDY

박현우 / @lqez2013-05

•2010년 6월에 시작했습니다.

•제품과 서비스를 위해서 기술을 파고들며, 최신 기술 자체에 빠져서 허우적거리지 않습니다.

•2013년 5월, 26명이 이 배에 타고 있고,그 중 14명이 코드를 읽고 쓰고 있습니다.

우리는“서비스에 미쳤어요”

스마트스터디는

무엇을 하는지, 그걸 왜 하는지,그리고 어떻게 하고 있는지.

그래서, 무엇을

무엇을

이런 걸 만들었습니다.}•모바일 앱

•로그 수집기

•로그 분석기

•푸시 솔루션

•웹 기반 도구

•오픈 소스

그런데 왜

•모바일 앱

•로그 수집기

•로그 분석기

•푸시 솔루션

•웹 기반 도구

•오픈 소스

모바일 앱의 시장은 공평합니다. 누구나 앱을 만들어 글로벌 시장에 내놓아 경쟁할 수 있습니다.

: 우리는 300개 이상의 앱을 만들어 글로벌 시장에 출시했습니다.

서비스의 성공은 사용자의 행동을 유심히 보고, 얘기를 귀기울여 듣는데 있다고 알고 있습니다.

:다중 접속 온라인 게임을 10년 이상 서비스 하며 얻은 경험을 살려 모바일에서도 실천하고 있습니다.

•모바일 앱

•로그 수집기

•로그 분석기

•푸시 솔루션

•웹 기반 도구

•오픈 소스

로그는 그저 로그일 뿐입니다.이를 가공해, 시각적인 데이터로 만들어야 의미가 있습니다.

:우리는 로그를 다듬어 데이터로 만들고, 다시 정보로 가공한 후에 이를 통해 통찰력을 얻습니다.

•모바일 앱

•로그 수집기

•로그 분석기

•푸시 솔루션

•웹 기반 도구

•오픈 소스

모바일 서비스의 푸시 메세지는 과거 이메일과 같습니다.심지어 더 강력합니다.

:우리는 자체적인 푸시 토큰 수집데이터베이스와 대용량 메세지 발송 시스템을 만들었습니다.

•모바일 앱

•로그 수집기

•로그 분석기

•푸시 솔루션

•웹 기반 도구

•오픈 소스

웹은 모든 플랫폼에서 동작하는 가장 완전한 기반이 됩니다.

골치아픈 업데이트도 필요 없이요.:

HTML5 위에서, Django와 같은 높은 생산성을 자랑하는 웹 개발 도구를 이용하고 있습니다.

•모바일 앱

•로그 수집기

•로그 분석기

•푸시 솔루션

•웹 기반 도구

•오픈 소스

오픈 소스는 단순한 코드의 공유를 넘어서는, 개발자의 문화입니다.

:우리는 오픈소스를 널리 사용하고 우리의 코드도 공유하고 있습니다.

•모바일 앱

•로그 수집기

•로그 분석기

•푸시 솔루션

•웹 기반 도구

•오픈 소스

그러면 어떻게

어떻게/ 모바일 앱

어떻게/ 모바일 앱

OpenGLNativeWeb

어떻게/ 모바일 앱

OpenGLNativeWeb

OpenGLNativeWeb

어떻게/ 모바일 앱

어떻게/ 모바일 앱

OpenGLNativeWeb개발에는 경계나 정해진 룰이 없습니다.최적의 아키텍처를 골라 사용합니다.

어떻게/ 모바일 앱

iOS / AndroidNative API

OpenGL

SMARTSTUDY 라이브러리

Cocos2d-x

C/C++

NDKPythonHTML

JavascriptCSS

모바일 앱 & 서비스

어떻게/ 모바일 앱개발자 Z

iOS Android

개발자 M

iOS Android Web

개발자 B

Android Windows

개발자 H

iOS Android Bada

어떻게/ 모바일 앱개발자 Z

iOS Android

개발자 M

iOS Android Web

개발자 B

Android Windows

개발자 H

iOS Android Bada

다양한 플랫폼에서 개발하고 있기 때문에,모든 개발자는 둘 이상의 플랫폼을 담당합니다.

어떻게/ 모바일 앱

•플랫폼을 구축하려하지 않고, 각각의 앱과 콘텐츠에 집중했던 것.

•윈도우 스토어나 스마트 TV 등의 비주류 플랫폼에도 진출하여 좋은 관계를 맺은 것.

•모든 개발자가 ‘주 플랫폼’ 외에 ‘부 플랫폼’을 익혀 대응하고 있는 것.

잘한 점

어떻게/ 모바일 앱

•플랫폼 독립적인 엔진, 라이브러리나 미들웨어를 충실히 가지지 못한 것.

•너무 많은 앱을 서비스하고 있는 것.

•개발자에게 여러 플랫폼으로 강요하고 있는 것은 아닌지?

못한 점

어떻게/ 모바일 앱

•각각의 앱과 서비스에 코드 베이스는 많이 가지고 있으므로,

•잘 정리해서 모두가 각자의 바퀴를 만들지 않고 쓸 수 있도록 하기.

•문서화, 문서화, 문서화, 그리고 문서화...그리고 널리 공유하기.

앞으로

어떻게/ 로그 수집과 분석

어떻게/ 로그 수집과 분석

•전통적인 RDB + NoSQL 의 결합.

•MySQL InnoDB / MyISAM 와 함께MongoDB 를 이용해 로그를 저장하고 분석하고 있습니다.

어떻게/ 로그 수집과 분석

초당 230 건

하루에 약 20,000,000 건

하루에 약10GB 정도

어떻게/ 로그 수집과 분석

이제까지

30억건의 로그를 수집하고 있습니다

Server

Apache httpd

mod_php

Server

Redis

Apache httpd

mod_php

Predis

Server

Apache httpd

mod_php

PredisPredis

ReplicaSet

Secondary Secondary

Primary

Redis

PV / UVDAU / MAUPU / ARPUNRU / RR

ReplicaSet

참고

Redis, MongoDB and MySQL모바일 애플리케이션 서비스에서의 로그 수집과 분석

링크 : http://www.slideshare.net/lqez/redis-mongodb-mysql영상 : http://youtu.be/NYtRr2URAkI

어떻게/ 로그 수집과 분석

•각각의 시스템 장애를 허용하도록 한 것.

•서버의 장애나 네트워크 문제로 클라이언트가 로그를 보내는데 실패해도, 로컬 저장소에 저장해 나중에 다시 보내는 것.

•MongoDB 점검 중에도 Redis에서 로그를 보관하고 있다, 복원된 후에 쓰도록 한 것.

잘한 점

어떻게/ 로그 수집과 분석

•다양한 형태의 로그를 테이블 생성 없이MongoDB를 통해 손쉽게 쌓았던 것.

•장시간의 ‘ALTER TABLE’ 등으로 고민하는 일이 없어졌던 것.

•MySQL로 이전한 후에 SQL을 통한 분석 작업도 익숙했던 점.

잘한 점

어떻게/ 로그 수집과 분석

•하나의 콜렉션(테이블)에 모든 로그를 담았던 것.

•MongoDB의 Lock 과 관련된 문제들.

•MongoDB 로부터 분석을 위해 MySQL 로 옮기는데 너무 많은 시간과 비용이 발생.

못한 점

어떻게/ 로그 수집과 분석

•여러 콜렉션으로 잘게 나눠서 넣을 것.

•2.1 버전에 추가된 통계 프레임워크 사용하기.

•짧은 키(key) 이름을 사용할 것.

•메모리와 SSD 장비를 추가하는 일.

•여전히 Lock은 문제가 되므로, 용도에 따라 물리적으로 장비를 나누기.

앞으로

어떻게/ 푸시 솔루션

어떻게/ 푸시 솔루션

•APNS, GCM, C2DM 을 지원합니다.

•초당 200 개의 토큰을 수집.

•2천만개의 토큰을 MongoDB에 보관.

•로그 수집 시스템과 유사한 형태입니다.

어떻게/ 푸시 솔루션

•개인 정보를 제외한 기기의 언어 설정, 시간대, 앱 버전 정보 등을 같이 수집합니다.

•예약 시스템을 통해, 특정 대상에게 푸시 메세지를 전송하고 있습니다.

•한 달에 약 3천만 건 정도를 발송합니다.

•Urban Airship 등의 외부 푸시 솔루션의 약 $3,000 에 상응합니다.

어떻게/ 푸시 솔루션

•다른 서비스 데이터베이스들과 분리되어 독립적으로 동작하고 있습니다.

•다른 서비스와 유기적으로 결합되어, 더 밀접한 형태의 푸시 메세지 전송을 하는 것이 필요합니다.

•기기의 타임존에 따른 푸시 예약 발송 기능.

앞으로

어떻게/ 웹 기반 도구

어떻게/ 웹 기반 도구

•웹은 복잡한 도구를 빠르게 만들어 공급하는데 최선의 플랫폼입니다.

•Python과 PHP를 사용하고 있으며, 백엔드 프레임워크로 Django와 Flask를 주로 사용합니다.

•그리고 - 뻔한 얘기지만 - 프론트엔드에서 jQuery, Bootstrap, Google Chart 등을 사용하고 있습니다.

참고

만화 서비스 제작 후기“넝쿨째 굴러온 김성모”

링크 : http://www.slideshare.net/lqez/ss-14820081영상 : http://youtu.be/-TEyIAqAB_E

어떻게/ 웹 기반 도구

•다양한 도구들에서 공통적으로 사용하는 Authentication 과 Authorization 이 정의되어 있지 않습니다.

•위에 대응하여 OAuth2 를 이용한 라이브러리를 제작하고 있습니다.

앞으로

어떻게/ 오픈 소스

어떻게/ 오픈 소스

•오픈 소스는 단순한 코드 공유나 라이센스 문제가 아닙니다.

•오픈 소스는 해커들의 문화입니다.

•우리는 오픈 소스를 널리 사용하고 있을 뿐 아니라,

•내부 라이브러리나 도구들을 만들 때에도 오픈 소스로 진행하는 것을 권장합니다.

어떻게/ 오픈 소스

•여기에 다 나열하기도 어렵습니다.

• Linux, OpenLDAP, Redmine, Cacti, Nginx, MySQL, MongoDB, watch, ImageMagicK, ffmpeg, libx264, OpenSSH, awk, sed, find, Python, wget, Celery, PHP, tar, gzip, curl, zlib, iptables, Django, Flask, Werkzeug, vim, fabric, eventlet, Sentry, django-debug-toolbar, Bootstrap, jQuery, Postgres, Redis, uWSGI...

어떻게/ 오픈 소스

•미약하지만, 오픈 소스에 참여하고 있습니다.

• npk : Neat package library

• https://github.com/lqez/npk

• django-project-layout

• https://github.com/smartstudy/django-project-layout

• FormEncode-Jinja2

• https://github.com/Kroisse/FormEncode-Jinja2

어떻게/ 오픈 소스•코드 외에, 실습 세션을 열어 오픈 소스 커뮤

니티에 보답하고 있습니다.

•2012 년 8월, 외부 개발자들을 대상으로 ‘Django In Action’을 진행했습니다.

•40 여명의 개발자들이 이틀 동안, 4시간 에 걸쳐, Python 설치부터 시작하여 Django 를 익히는 시간을 가졌습니다.

• http://blog.naver.com/ez_/140166283139

어떻게/ 오픈 소스

•더 많은 코드를 오픈 소스화 합니다.

•더 많은 실습 세션을 진행합니다.

•다양한 개발자 컨퍼런스의 스폰서가 됩니다.

•사용하고 있는 우수한 오픈 소스 프로젝트에 공헌합니다.

앞으로

그리고,•아마존 웹 서비스 CloudFront 사용기

• http://www.slideshare.net/lqez/using-cloud-front-with-s3-at-smartstudy

•만화 서비스 제작 후기• http://blog.naver.com/ez_/140157300770 (in Korean)

•Django + Sentry 사용하기• http://blog.naver.com/ez_/140177157684 (in Korean)

•모바일 기기를 위한 테스트 환경 구축• http://www.slideshare.net/lqez/ss-20901287 (in Korean)

지금까지는단지 시작일 뿐

대단하거나 우아한 플랫폼이 아니라

좋은 제품을 만듭니다

콘텐츠는 플랫폼을 이기며,

재능을 지배하는 것은 경험입니다.

그래서,

우리의가장큰 자산은

당신과 나,

We, Human do make it works.코드 조각이나 튜링 머신이 하는게 아닙니다.

WHAT / WHY / HOWWE’RE ENGINEERING AT SMARTSTUDY아직도 할 일

이,

잘 하고 싶은 일이

정말 많습니다!

박현우 / @lqez2013-05

top related