TabTale story: Building a
publishing and monitoring
mobile games
architecture with high
scale
FullStack Developers Israel
20.5.2014
Google Campus TLV
Hosted by:
Assaf Gannon
The project’s goal:
Provide a set of server
side services and SDK
for the company’s apps
Mobile Device
Client App
SDK
Server
First Sketch
TabTale is a very successful startup that develops
interactive books, games, and educational apps
• Released Over 250 apps for children on both iOS and
Android devices
• Over 350 million downloads
• Over 25M active monthly users
text
The Tricky Stuff
text
Zero downtime
Clients must never be affected from server failures or
downtime
text
Zero Downtime - Solutiontext
Solid Infrastructure - AWS
● Elastic Beanstalk - PaaS to run the services
● S3 - static content storage and delivery service
● MongoHQ - Managed MongoDB
● RedisLab - Managed Redis
Zero Downtime - Solution
• A good contingency:
○ Fallback to static content on S3
text
Large Scale from Day 1text
Large Scale from Day 1
• Horizontal Scaling - Stateless servers
• Prevent heavy server loads
○ Setup multiple tiers of static content
delivery:
■ CDN (Cloud Front)
■ S3
■ Nginx / Apache
■ Pre-generated permutations on Redis / in
memory
• Use cache effectively
text
Effective Cachetext
Effective Cache, cont.text
Rapidly Changing Requirements
• Avoid Monolithic Application
• Take the “Micro Services” approach from the
beginning
• Dynamic Model - loose types
• Separate Data Base per Service
• Services are entirely stateless
• Services are decoupled, and talk JSON
text
Node js
Ideal for rapid development of IO intensive
applications
● Extremely easy and fast to setup, develop, and
deploy
● Very low learning curve
● Speaks JSON as mother tongue
● Great performance doin IO operations
● NPM
● Can be deployed to multiple PaaS providers
including Elastic Beanstalk
text
Nodejs Internal Overviewtext
The Event Looptext
Spring Boot
The Java way to rapidly bootstrap applications
● Create stand-alone Spring applications
● Embed Tomcat or Jetty directly (no need to deploy WAR
files)
● Provide opinionated 'starter' POMs to simplify your
Maven configuration
● Automatically configure Spring whenever possible
● Provide production-ready features such as metrics,
health checks and externalized configuration
● Absolutely no code generation and no requirement for
XML configuration
text
MongoDB
Great for managing document oriented data and
Meta Data
● No schema management
● Very fast reads
● Very simple and powerful DSL
text
Tricky Stuff Checklist
• Zero downtime
• Large scales from day 1
• Vague and rapidly changing requirements
text
THANK YOU
Assaf Gannon
Email:

TabTale Architecture Overview

  • 1.
    TabTale story: Buildinga publishing and monitoring mobile games architecture with high scale FullStack Developers Israel 20.5.2014 Google Campus TLV Hosted by:
  • 2.
  • 3.
    The project’s goal: Providea set of server side services and SDK for the company’s apps
  • 4.
  • 7.
    TabTale is avery successful startup that develops interactive books, games, and educational apps • Released Over 250 apps for children on both iOS and Android devices • Over 350 million downloads • Over 25M active monthly users text
  • 8.
  • 9.
    Zero downtime Clients mustnever be affected from server failures or downtime text
  • 11.
    Zero Downtime -Solutiontext Solid Infrastructure - AWS ● Elastic Beanstalk - PaaS to run the services ● S3 - static content storage and delivery service ● MongoHQ - Managed MongoDB ● RedisLab - Managed Redis
  • 12.
    Zero Downtime -Solution • A good contingency: ○ Fallback to static content on S3 text
  • 13.
  • 14.
    Large Scale fromDay 1 • Horizontal Scaling - Stateless servers • Prevent heavy server loads ○ Setup multiple tiers of static content delivery: ■ CDN (Cloud Front) ■ S3 ■ Nginx / Apache ■ Pre-generated permutations on Redis / in memory • Use cache effectively text
  • 15.
  • 16.
  • 17.
    Rapidly Changing Requirements •Avoid Monolithic Application • Take the “Micro Services” approach from the beginning • Dynamic Model - loose types • Separate Data Base per Service • Services are entirely stateless • Services are decoupled, and talk JSON text
  • 19.
    Node js Ideal forrapid development of IO intensive applications ● Extremely easy and fast to setup, develop, and deploy ● Very low learning curve ● Speaks JSON as mother tongue ● Great performance doin IO operations ● NPM ● Can be deployed to multiple PaaS providers including Elastic Beanstalk text
  • 20.
  • 22.
  • 23.
    Spring Boot The Javaway to rapidly bootstrap applications ● Create stand-alone Spring applications ● Embed Tomcat or Jetty directly (no need to deploy WAR files) ● Provide opinionated 'starter' POMs to simplify your Maven configuration ● Automatically configure Spring whenever possible ● Provide production-ready features such as metrics, health checks and externalized configuration ● Absolutely no code generation and no requirement for XML configuration text
  • 24.
    MongoDB Great for managingdocument oriented data and Meta Data ● No schema management ● Very fast reads ● Very simple and powerful DSL text
  • 25.
    Tricky Stuff Checklist •Zero downtime • Large scales from day 1 • Vague and rapidly changing requirements text
  • 26.