Transcript
Page 1: 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

Assaf Gannon

FullStack Developers Israel

20.5.2014Google Campus TLV Hosted by:

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

Assaf Gannon

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

The project’s goal:Provide a set of server side services and SDK

for the company’s apps

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

Mobile Device

Client App

SDK

Server

First Sketch

Page 5: Tabtale story: Building a publishing and monitoring mobile games architecture with high scale
Page 6: Tabtale story: Building a publishing and monitoring mobile games architecture with high scale
Page 7: 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

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

The Tricky Stuff

text

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

Zero downtime

Clients must never be affected from server failures or

downtime

text

Page 10: Tabtale story: Building a publishing and monitoring mobile games architecture with high scale
Page 11: 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

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

Zero Downtime - Solution

• A good contingency:

○ Fallback to static content on S3

text

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

Large Scale from Day 1text

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

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

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

Effective Cachetext

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

Effective Cache, cont.text

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

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

Page 18: Tabtale story: Building a publishing and monitoring mobile games architecture with high scale
Page 19: 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

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

Nodejs Internal Overviewtext

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

The Event Looptext

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

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

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

MongoDB

Great for managing document oriented data and Meta Data

● No schema management

● Very fast reads

● Very simple and powerful DSL

text

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

Tricky Stuff Checklist

• Zero downtime

• Large scales from day 1

• Vague and rapidly changing requirements

text

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

THANK YOU

Assaf GannonEmail: [email protected]


Recommended