TabTale Architecture Overview

26
TabTale story: Building a publishing and monitoring mobile games architecture with high scale FullStack Developers Israel 20.5.2014 Google Campus TLV Hosted by:

description

A slideshow from Fullstack Developers Israel, "Mind The Stack - Architecture stories by Israeli startups" - May 20 2014, Google Campus Tel Aviv.

Transcript of TabTale Architecture Overview

Page 1: TabTale Architecture Overview

TabTale story: Building a publishing and monitoring

mobile games architecture with high

scale

FullStack Developers Israel

20.5.2014Google Campus TLV Hosted by:

Page 2: TabTale Architecture Overview

Assaf Gannon

Page 3: TabTale Architecture Overview

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

for the company’s apps

Page 4: TabTale Architecture Overview

Mobile Device

Client App

SDK

Server

First Sketch

Page 5: TabTale Architecture Overview
Page 6: TabTale Architecture Overview
Page 7: TabTale Architecture Overview

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 Architecture Overview

The Tricky Stuff

text

Page 9: TabTale Architecture Overview

Zero downtime

Clients must never be affected from server failures or

downtime

text

Page 10: TabTale Architecture Overview
Page 11: TabTale Architecture Overview

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 Architecture Overview

Zero Downtime - Solution

• A good contingency:

○ Fallback to static content on S3

text

Page 13: TabTale Architecture Overview

Large Scale from Day 1text

Page 14: TabTale Architecture Overview

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 Architecture Overview

Effective Cachetext

Page 16: TabTale Architecture Overview

Effective Cache, cont.text

Page 17: TabTale Architecture Overview

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 Architecture Overview
Page 19: TabTale Architecture Overview

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 Architecture Overview

Nodejs Internal Overviewtext

Page 21: TabTale Architecture Overview
Page 22: TabTale Architecture Overview

The Event Looptext

Page 23: TabTale Architecture Overview

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 Architecture Overview

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 Architecture Overview

Tricky Stuff Checklist

• Zero downtime

• Large scales from day 1

• Vague and rapidly changing requirements

text

Page 26: TabTale Architecture Overview

THANK YOU

Assaf GannonEmail: