68

Run corporate applications on Google App Engine? Yes we do

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Run corporate applications on Google App Engine? Yes we do
Page 2: Run corporate applications on Google App Engine? Yes we do

"Run corporate applications onGoogle App Engine? Yes we do."Ben Fried, Google CIOJustin McWilliamsMatt SimmonsIrwin Boutboul2010-05-19

Page 3: Run corporate applications on Google App Engine? Yes we do

View live notes and ask questions aboutthis session on Google Wave http://bit.ly/appengine2

Page 4: Run corporate applications on Google App Engine? Yes we do

Introductions

Page 5: Run corporate applications on Google App Engine? Yes we do
Page 6: Run corporate applications on Google App Engine? Yes we do

What?

Page 7: Run corporate applications on Google App Engine? Yes we do

Why?

Page 8: Run corporate applications on Google App Engine? Yes we do
Page 9: Run corporate applications on Google App Engine? Yes we do
Page 10: Run corporate applications on Google App Engine? Yes we do
Page 11: Run corporate applications on Google App Engine? Yes we do
Page 12: Run corporate applications on Google App Engine? Yes we do

There's a better way

Page 13: Run corporate applications on Google App Engine? Yes we do

Have to do things differently

Page 14: Run corporate applications on Google App Engine? Yes we do
Page 15: Run corporate applications on Google App Engine? Yes we do
Page 16: Run corporate applications on Google App Engine? Yes we do
Page 17: Run corporate applications on Google App Engine? Yes we do

IntroducingAppReduce,

Tech Stop Online,and CloudCourse

Page 18: Run corporate applications on Google App Engine? Yes we do

AppReduce

Justin McWilliams, CorpEng Developer

Page 19: Run corporate applications on Google App Engine? Yes we do

Reduce License Spend

Page 20: Run corporate applications on Google App Engine? Yes we do

Design Iterations - LAMP

Page 21: Run corporate applications on Google App Engine? Yes we do

Framework Familiarities

PythonDjango

Google Closure JavaScript Library

Google Chart API

Google Analytics

Page 22: Run corporate applications on Google App Engine? Yes we do

Challenges

Accessing corp APIs and services

Page 23: Run corporate applications on Google App Engine? Yes we do

SDC BackgroundSecure Data Connector (aka SDC) allows for a secure tunnel to Corp HTTP services.

Page 24: Run corporate applications on Google App Engine? Yes we do

SDC: Wrap non-HTTP services

Page 25: Run corporate applications on Google App Engine? Yes we do

Challenges

Accessing corp APIs and services

Realtime user performance

Page 26: Run corporate applications on Google App Engine? Yes we do

Cache corp data with BulkloaderBulkloader makes it easy to import large amounts of datafrom anywhere into AppEngine.

Page 27: Run corporate applications on Google App Engine? Yes we do

Design Iterations - GAE

Page 28: Run corporate applications on Google App Engine? Yes we do

Results and Success

Putting information into employees' hands can be powerful$450K+ worth of returns to date$150K+ in first 24 hours after launch

50 QPS spike; 20 QPS sustainedBuilt, released and supported by only 2 engineers

Page 29: Run corporate applications on Google App Engine? Yes we do

TechStop Online

Matthew Simmons, CorpEng Developer

Page 30: Run corporate applications on Google App Engine? Yes we do

Tech Stop Online: What's in a name?

Home of internal Google IT support

“Self-powered”

Page 31: Run corporate applications on Google App Engine? Yes we do

Tech Stop Online

Documentation repository

Managed LAMP -> App Engine

Django + App Engine + Closure

SDC, Task Queues, Bulk Loader

Page 32: Run corporate applications on Google App Engine? Yes we do

Motivations and Challenges

Scalability

Search

Long running tasks

Page 33: Run corporate applications on Google App Engine? Yes we do

What is "Bursty" demand?

Page 34: Run corporate applications on Google App Engine? Yes we do

Scalability

Old platform:Scalability == Expensive

Cycles from applicationdevelopment "stolen" byplatform concerns.

Page 35: Run corporate applications on Google App Engine? Yes we do

AppEngine: Scalable by default

It just works

What did we do with our extra time?

Page 36: Run corporate applications on Google App Engine? Yes we do

Tech Stop Online: Navigation is king.

Problem: No native TextProperty indexing

SolutionsDIY indexingOffload to Google Search Appliance

Page 37: Run corporate applications on Google App Engine? Yes we do

Search - Solution 1: DIY Indexing

Page 38: Run corporate applications on Google App Engine? Yes we do

Search - Solution 2: GSA Indexing

IndexingProblem: content behind authenticationPush feed to GSA index over SDC

SearchingPull from GSA API over SDCDisplay results inline

Page 39: Run corporate applications on Google App Engine? Yes we do

Using SDC

Secure Data Connector - http://code.google.com/securedataconnector

from google.appengine.api import urlfetch

result = urlfetch.fetch( url='http://corp.example.com/people.csv', headers={'use_intranet': 'yes'})

if result.status_code == 200: parseCSV(result.content)

Page 40: Run corporate applications on Google App Engine? Yes we do

Computing Similarity

Goal: Automatically generate “related articles”

Idea: Use document x document similarity

Feasible, but...New documents need to be addedUpdates too much for a single request

Page 41: Run corporate applications on Google App Engine? Yes we do

Task Queues

Defer expensive jobs to Task Queue

Write a handler like usual, but run it asynchronously

Gets the technology out of the way of the task.

Page 42: Run corporate applications on Google App Engine? Yes we do

Flatten Your Data

Kiss BCNF goodbye!

Datastore denormalization

Use Reference properties where necessary

Watch out for reference properties in loops

It's OK to create "cached" copies of data on multiple models

Page 43: Run corporate applications on Google App Engine? Yes we do

Testing Instances: The Easy Way

application: techstop-onlineversion: 1runtime: pythonapi_version: 1

handlers:- url: /script: main.py

application: techstop-online-qaversion: 1runtime: pythonapi_version: 1

handlers:- url: /script: main.py

Page 44: Run corporate applications on Google App Engine? Yes we do

Testing Instances: Another Easy Way

application: techstop-online-qaversion: mattruntime: pythonapi_version: 1

handlers:- url: /script: main.py

application: techstop-online-qaversion: justinruntime: pythonapi_version: 1

handlers:- url: /script: main.py

Page 45: Run corporate applications on Google App Engine? Yes we do

Summary

Scalable by default!

Fetch corporate data with SDC

Defer expensive jobs to Task Queue

Datastore denormalization

Set up a -qa instance and iterate away

Page 46: Run corporate applications on Google App Engine? Yes we do

CloudCourse

Irwin Boutboul, CorpEng Developer

Page 47: Run corporate applications on Google App Engine? Yes we do

1

2

Create an Activity

Schedule a Session

Page 48: Run corporate applications on Google App Engine? Yes we do

3 Find a session

Page 49: Run corporate applications on Google App Engine? Yes we do

Technology

App Engine / PythonDjango (w/ patch)ClosureGData

Page 50: Run corporate applications on Google App Engine? Yes we do

Challenges

No joinsLong running computationHigh performance transactional system

Page 51: Run corporate applications on Google App Engine? Yes we do

Challenges

No joinsLong running computationHigh performance transactional system

Page 52: Run corporate applications on Google App Engine? Yes we do

Schema - Relational

Python 101 June 5th - MTVJune 6th - SFOJune 6th - Webcast

Page 53: Run corporate applications on Google App Engine? Yes we do

Schema - non relational

exploding indices1 MB limitperformance / quota

Python 101[session1 .... sessionN][June 5th:MTV, ..., June 6th:VC]

Page 54: Run corporate applications on Google App Engine? Yes we do

Schema - non relational

exploding indexes1 MB limitperformance / quotatrade-offs

Page 55: Run corporate applications on Google App Engine? Yes we do

Challenges

No joinsLong running computationHigh performance transactional system

Page 56: Run corporate applications on Google App Engine? Yes we do

Long running computation

Push burden of work to backend processesDefer tasks / transactionalTasks chaining / cron jobs

Page 57: Run corporate applications on Google App Engine? Yes we do

Challenges

No joinsLong running computationHigh performance transactional system

Page 58: Run corporate applications on Google App Engine? Yes we do

Schema - App Engine

Page 59: Run corporate applications on Google App Engine? Yes we do

Enterprise constraints

Each signup is a transaction on an activity1-10 writes/sec per entity groupToo slow !

Page 60: Run corporate applications on Google App Engine? Yes we do

Schema - App Engine

Page 61: Run corporate applications on Google App Engine? Yes we do

Schema - App Engine

Page 62: Run corporate applications on Google App Engine? Yes we do

Solution

memcache.incr(max_people)Conservative responseHigh level locks offline -> correct response

Page 63: Run corporate applications on Google App Engine? Yes we do

Scalability

Online ~ 600 ms per enrollment

100+ writes per second for an activity

Page 64: Run corporate applications on Google App Engine? Yes we do

Scalability

Page 65: Run corporate applications on Google App Engine? Yes we do

Summary

De-normalization trade-offsAsynchronous processingLeverage memcache atomic ops

Page 66: Run corporate applications on Google App Engine? Yes we do

Releases and Sandbox DemosCloudCourse

http://code.google.com/p/cloudcourse AppReduce

http://code.google.com/p/appreducehttp://code.google.com/p/gord

Techstop Online: coming soon

Visit our sandbox booth for demos and questions!

Page 67: Run corporate applications on Google App Engine? Yes we do

View live notes and ask questions aboutthis session on Google Wave http://bit.ly/appengine2

Page 68: Run corporate applications on Google App Engine? Yes we do