Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY (English)
1. WHAT / WHY / HOW
WE’RE ENGINEERING AT SMARTSTUDY
Park Hyunwoo / @lqez
2013-05
2.
3. • We started at Jun, 2010.
• We do engineering for products and services,
not for playing with breeding-edge technologies.
• 26 freaks in this ship.
And 14 of them are hackers. (May 2013)
We are
“Service Freak”
8. WHY
•Mobile Apps
• Log Crawler
• Log Analyzer
• Push Solution
• Web-based tools
• Open Source
Mobile application markets are
fair.Anybody can upload their
apps and deploy globally.
:
We’ve developed and deployed
300+ apps in mobile era.
9. WHY
• Mobile Apps
•Log Crawler
• Log Analyzer
• Push Solution
• Web-based tools
• Open Source
We knew that the success of
business is up to keep eyes on
the behavior of users.
:
We adapt technologies and
experiences what we learned
from 10y+ online game services.
10. WHY
• Mobile Apps
• Log Crawler
•Log Analyzer
• Push Solution
• Web-based tools
• Open Source
a Bunch of logs has no meaning.
We have to examine them in
various ways via visualization.
:
We polish logs into Data,
and again to Information,
at last, we’ll get Insight from it.
11. WHY
• Mobile Apps
• Log Crawler
• Log Analyzer
•Push Solution
• Web-based tools
• Open Source
In mobile market, push message
works as same as email.
Even more powerful.
:
We build redundant storing
& massive reservation
system.
12. WHY
• Mobile Apps
• Log Crawler
• Log Analyzer
• Push Solution
•Web-based tools
• Open Source
Web is the best platform
to serve tools without a
headache of updating, and
runs on every machines.
:
We stand on HTML5
with high-productivity
framework like Django.
13. WHY
• Mobile Apps
• Log Crawler
• Log Analyzer
• Push Solution
• Web-based tools
•Open Source
Open source is not only codes,
but also culture.
:
We uses open sources and
open our codes to the world.
20. HOW/ Mobile apps
iOS / Android
Native API
OpenGL
SMARTSTUDY Library
Cocos2d-x
C/C++
NDKPython
HTML
Javascript
CSS
Mobile Apps and Services
21. HOW/ Mobile apps
Developer Z
iOS Android
Developer M
iOS Android Web
Developer B
Android Windows
Developer H
iOS Android Bada
22. HOW/ Mobile apps
Developer Z
iOS Android
Developer M
iOS Android Web
Developer B
Android Windows
Developer H
iOS Android Bada
We develop on various platforms, so
Every developer are needed to work on
two or more platforms.
23. HOW/ Mobile apps
• We’ve focused on each app and content,
not on making platform.
• Release apps on various mobile platforms
even on Windows Store and Smart TV.
• Each developer has their own ‘Main role’
but also ‘Sub role’ to expand experiences.
GOOD
24. HOW/ Mobile apps
• We have own platform-independent data
format and service models, but do not have
own rich middleware or library.
• Too many apps to be serviced.
• Pressure of multi-platform experience.
BAD
25. HOW/ Mobile apps
• We have lots of codebase on each apps.
• If we can refine them into loose-tied
libraries, it’ll be good to prevent making a
‘Wheels’ again.
• Document it and Share it.
TO-BE
33. PV / UV
DAU / MAU
PU / ARPU
NRU / RR
ReplicaSet
34. See also:
Redis, MongoDB and MySQL
Crawl and Analysis log in Mobile Application Service
Link : http://www.slideshare.net/lqez/redis-mongodb-mysql
Video : http://youtu.be/NYtRr2URAkI
35. HOW/ Log Crawler & Analyzer
GOOD
• Fault tolerance log crawler.
• Client stores logs in own local storage
when it failed to send logs by any reason.
(i.e. server problem, network unreachable)
• Redis can hold logs while MongoDB have
problems while upgrading or replicating.
36. HOW/ Log Crawler & Analyzer
GOOD
• MongoDB can hold various types of log
without creating tables for each log type.
• And good bye long ‘ALTER TABLE’.
• MySQL is very familiar for us.
37. HOW/ Log Crawler & Analyzer
BAD
• Storing entire logs in only one collection is
not a good idea.
• Lock strangle us every each second.
• Copying logs from MongoDB to MySQL
needs logs of time.
38. HOW/ Log Crawler & Analyzer
• Divide logs into small pieces in MongoDB.
• Use aggregation framework added in 2.1.
• Use shorter key name.
• Add more memory and SSD.
• There are (still) many global locks.
Use more physical instances for each purpose.
TO-BE
40. HOW/ Push Solution
• Support APNS, GCM and C2DM.
• Collect ~200 tokens per every second.
• Storing 20M+ tokens in MongoDB.
• Adapt a similar architecture of the Log
crawling system.
41. HOW/ Push Solution
• Stores tokens with version of app,
language, timezone and other meaningful
device information without personal’s.
• With reservation system, we can send
messages to the targeted users.
• We sent ~30,000,000 msgs per month.
• via Urban Airship = $3,000 per month.
42. HOW/ Push Solution
TO-BE
• Current token database is isolated from
other application database.
• To make better user experience,
combination of two databases is needed.
• Timezone awareness.
44. HOW/ Web-based tools
• Web - actually, web browser is a good
platform to provide rich toolkits rapidly.
• We use Python and PHP as backend and
mainly use Django and Flask.
• And also use jQuery, Bootstrap and Google
Chart library for frontend. (as like as you)
45. See also:
Creating a comic service
Link : http://www.slideshare.net/lqez/ss-14820081
Video : http://youtu.be/-TEyIAqAB_E
46. See also:
Do not use Django as like as
SMARTSTUDY
Link : http://www.slideshare.net/lqez/do-not-use-django-
as-like-as-smartstudy
47. HOW/ Web-based tools
TO-BE
• Currently, there is no rule for
Authentication and Authorization.
(some uses just LDAP)
• So,We’re building standard A-A library via
OAuth2.
49. HOW/ Open Source
• Open source is not only code or license.
• It is a culture for hackers.
• We’re using open source projects for our
service widely.
• We also recommend to make in-house
library or middleware as open source.
51. HOW/ Open Source
• And open our sources, even they’re tiny.
• 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
52. HOW/ Open Source
• And we gave back to Open source by
another way - Open a hands-on session.
• Django In Action,Aug 2012 at
SMARTSTUDY Seoul HQ.
• 40 developers learned from the
installation of Python to Django in 4H.
• http://blog.naver.com/ez_/140166283139
53. HOW/ Open Source
TO-BE
• Open more codes to community.
• Open more sessions, especially hands-on
sessions. It’s very rare in Korea.
• Be more sponsors for developer conferences.
• Contribute to open source projects.
54. AND
• Using AWS CloudFront with S3
• http://www.slideshare.net/lqez/using-cloud-front-with-s3-at-smartstudy
• Post-mortem of Making a comic service
• http://blog.naver.com/ez_/140157300770 (in Korean)
• Using Sentry for Django applications
• http://blog.naver.com/ez_/140177157684 (in Korean)
• Test environment for mobile devices
• http://www.slideshare.net/lqez/ss-20901287 (in Korean)