deploying and scaling using aws

11
Deploying and Scaling with AWS Matt Conway, VP Engineering [email protected]

Upload: wr0ngway

Post on 18-Nov-2014

5.290 views

Category:

Technology


3 download

DESCRIPTION

A presentation for the AWS Startup Challenge tour on how we use AWS to deploy and operate snapmylife.com

TRANSCRIPT

Page 1: Deploying and Scaling using AWS

Deploying and Scaling with AWS Matt Conway, VP Engineering

[email protected]

Page 2: Deploying and Scaling using AWS

About Us

 Company Profile •  Founded 2007 •  Tier 1 venture-backed •  Experienced team of eleven in

Needham, MA •  Developer of direct-to-consumer

mobile services

 SnapMyLife Service •  Mobile photo sharing community •  Best mobile user experience •  Premium demographic •  Rapidly growing local & global

audience

2

Key Stats

•  Launched April 2008

•  Mobile website (no download required), iPhone web/app, Internet

•  1.5+ million unique visitors / month

•  15+ million monthly page views (Aug 2008)

•  Over 90% traffic from mobile devices

•  Visitors from every country in the world

•  400,000+ registered users

Page 3: Deploying and Scaling using AWS

Screenshots

Mobile iPhone

Desktop

Page 4: Deploying and Scaling using AWS

Overview

 EC2 •  Entire web serving stack •  Daemons for background/batch processing •  Internal infrastructure

 S3 •  Cheap CDN •  Backups for EC2

 Mechanical Turk •  Content filtering •  Content classification

4

Page 5: Deploying and Scaling using AWS

EC2 Costs

 Xen based cluster on leased hardware •  Time sink •  Not as flexible •  Slow to provision (Days vs Minutes) •  More expensive (~$1.8K/month)

 EC2/S3 •  We hardly ever think about it, just use it •  Unlimited playground without fear of breakage •  Clone your entire production stack in minutes •  Works out cheaper (~$1.2K/month)

5

Page 6: Deploying and Scaling using AWS

EC2/S3 Architecture

 Fairly standard architecture  DNS – Web – App – Memcached - Mysql  Assume and plan for failure  Use a role based architecture to easily scale

roles independently of each other (e.g. add an app server or db slave)

 Roles scale in as well as out – incredibly useful to have production cloned to a single instance for testing new features.

6

Page 7: Deploying and Scaling using AWS

EC2 Instance Allocation

  Static Vs Dynamic instance allocation •  We went static route •  Our traffic graph pretty flat due to global nature •  Easier, dynamic cost savings not worth the extra

complexity for us •  We watch our load carefully, given a critical alert, we

can scale up in a matter of minutes by increasing the instance count for the impacted roles.

  All instance configuration lives in our source tree. New instances to handle any combination of roles is only a couple of commands and a few minutes away

  We open sourced our framework for doing so: The rubber project on github - http://github.com/wr0ngway/rubber/wikis

7

Page 8: Deploying and Scaling using AWS

Mechanical Turk

 All of our content gets classified through turk  Some of our content gets tagged  We interact with turk solely through

automation – large quantities preclude use of web interface

 Results were better than anticipated   Incredibly quick turnaround, 24x7  Very hard to match this performance given

the hiring constraints of a startup

8

Page 9: Deploying and Scaling using AWS

Mturk costs

 Depends a lot on how you do it  Keep questions simple, pay less  Multiple questions, better result  Example of a months usage •  ~64K picture moderations (x3) •  ~28K pictures tagged •  Total Cost ~$3.3K (AWS commission $1.1K)

9

Page 10: Deploying and Scaling using AWS

Things we’d like to see

 A reliable way to send mail from EC2  Faster S3 response - New AWS CDN

should address this  Automatic billing for Mturk  A better plan for large volume mturk usage –

commission is normally 10%, but the half cent minimum makes it 50% if all you do are 1c HITs

10

Page 11: Deploying and Scaling using AWS

Questions?

 Contact Matthew Conway VP Engineering [email protected]

11