TabTale Architecture Overview

Post on 08-Jul-2015

158 views 0 download

Tags:

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

TabTale story: Building a publishing and monitoring

mobile games architecture with high

scale

FullStack Developers Israel

20.5.2014Google 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 GannonEmail: