SlideShare a Scribd company logo
TabTale story: Building a
publishing and monitoring
mobile games
architecture with high
scale
Assaf Gannon
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 story: Building a publishing and monitoring mobile games architecture with high scale
Tabtale story: Building a publishing and monitoring mobile games architecture with high scale
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
Tabtale story: Building a publishing and monitoring mobile games architecture with high scale
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
Tabtale story: Building a publishing and monitoring mobile games architecture with high scale
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
Tabtale story: Building a publishing and monitoring mobile games architecture with high scale
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: assaf@tikalk.com

More Related Content

Tabtale story: Building a publishing and monitoring mobile games architecture with high scale

  • 1. TabTale story: Building a publishing and monitoring mobile games architecture with high scale Assaf Gannon FullStack Developers Israel 20.5.2014 Google Campus TLV Hosted by:
  • 3. The project’s goal: Provide a set of server side services and SDK for the company’s apps
  • 7. 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
  • 9. Zero downtime Clients must never 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. Large Scale from Day 1text
  • 14. 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
  • 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 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
  • 23. 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
  • 24. MongoDB Great for managing document 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. THANK YOU Assaf Gannon Email: assaf@tikalk.com