google developer days brazil 2009 - java appengine

31
Google App Engine Now Serving Java Chris Schalk June 29, 2009

Upload: patrick-chanezon

Post on 11-Jan-2015

3.737 views

Category:

Technology


0 download

DESCRIPTION

slides for java appengine talk, from Chris Schalk

TRANSCRIPT

Page 1: Google Developer Days Brazil 2009 -  Java Appengine

Google App Engine Now Serving Java Chris Schalk June 29, 2009

Page 2: Google Developer Days Brazil 2009 -  Java Appengine

2

Goals

• Help you understand... – what App Engine is.

– what App Engine is not.

– where App Engine preserves programming models.

– where App Engine changes programming models.

• Demonstrate that App Engine really is fast and free to get started.

Page 3: Google Developer Days Brazil 2009 -  Java Appengine

3

Overview

• Google App Engine

• Java on App Engine

• The App Engine Datastore

• Demo

• Questions

Page 4: Google Developer Days Brazil 2009 -  Java Appengine

4

What Is Google App Engine?

• A cloud-computing platform

• Run your web apps on Google’s infrastructure

• We provide the container and services (PaaS) – Hardware, connectivity

– Operating system

–  JVM

– Servlet container

– Software services

Page 5: Google Developer Days Brazil 2009 -  Java Appengine

5

Key Features

• No need to install or maintain your own stack

• We scale for you

• Use Google’s scalable services via standard APIs

• Charge only for actual usage – Always free to get started

• Built-in application management console

Page 6: Google Developer Days Brazil 2009 -  Java Appengine

6

App Engine Architecture

App Engine Front End

App Engine Front End

App Engine Front End

Incoming Requests

AppServer AppServer AppServer

Load Balancer

AppServer

API Layer

Other Google Infrastructure

- Bigtable

- Google Accounts

- Memcache

- Image manipulation

App App App

Page 7: Google Developer Days Brazil 2009 -  Java Appengine

7

When To Use Google App Engine

• Targeting web applications – Serve HTTP requests, limited to 30 seconds

– No long-running background processes

– No server push

• Sandboxed environment – No threads

– Read-only file system

Page 8: Google Developer Days Brazil 2009 -  Java Appengine

8

Java Support

• Servlets

• Software services

• Sandboxing

• DevAppServer

• Deployment

• Tooling

Page 9: Google Developer Days Brazil 2009 -  Java Appengine

Demo! Java App Engine Basics

Page 10: Google Developer Days Brazil 2009 -  Java Appengine

10

Servlet API

• Full Servlet 2.5 Container – HTTP Session

–  JSP

• Uses Jetty and Jasper

– Powered by Google’s HTTP stack

– No Jetty-specific features

– Subject to change

Page 11: Google Developer Days Brazil 2009 -  Java Appengine

11

Software Services

Authentication Servlet API Google Accounts

Datastore JPA, JDO Bigtable

Caching javax.cache memcacheg

E-mail javax.mail Gmail gateway

URLFetch URLConnection Caching HTTP proxy

Page 12: Google Developer Days Brazil 2009 -  Java Appengine

12

Sandboxing

• What do we do? – Restrict JVM permissions

– WhiteList classes

• Why is it necessary? – Clustering - JVMs come and go

– Protect applications from one another

Page 13: Google Developer Days Brazil 2009 -  Java Appengine

13

Sandboxing Restrictions

Threads Async API (coming soon)

Direct network connections URLConnection

Direct file system writes Memory, memcache, datastore

Java2D Images API

Software rendering

Native code Pure Java libraries

Page 14: Google Developer Days Brazil 2009 -  Java Appengine

14

Flexible Sandboxing

• JVM Permissions often too coarse

• Reflection

– Access private fields, call private methods

• Class Loading

– Custom Class Loaders

– Dynamic bytecode

• Alternate JVM languages

Page 15: Google Developer Days Brazil 2009 -  Java Appengine

15

DevAppServer

• Emulates the production environment

• Customized Jetty server

• Local implementation of services –  LRU memcache

– Disk-backed datastore

– HttpClient-backed URLFetch

• Some sandbox restrictions difficult to emulate

Page 16: Google Developer Days Brazil 2009 -  Java Appengine

16

Deployment

• Your app lives at –  <app_id>.appspot.com, or

– Custom domain with Google Apps for your Domain

• Command line and IDE tools

• Application

• Datastore Indexes

• Cron Jobs

Page 17: Google Developer Days Brazil 2009 -  Java Appengine

17

Quotas and Billing

CPU 6.5 hours/day $0.10/hour

Bandwidth In 1GByte/day $0.10/GByte

Bandwidth Out 1GByte/day $0.12/GByte

Stored Data 1 GB $0.005/GB-day

Emails sent 2000/day to users 5000/day to admins $0.0001/email

Page 18: Google Developer Days Brazil 2009 -  Java Appengine

18

Tooling

• SDK Tools API – Command-line tools, Ant, and IDE plugins

• Provides – Deployment

– DevAppServer

– WhiteList for compile-time checks

– XML validation

• Google Eclipse Plugin

Page 19: Google Developer Days Brazil 2009 -  Java Appengine

19

The Datastore Is...

• Distributed

• Scalable

• Transactional

• Natively Partitioned

• Hierarchical

• Schema-less

• Based on Bigtable

Page 20: Google Developer Days Brazil 2009 -  Java Appengine

20

The Datastore Is Not...

• A relational database

• A SQL engine

• Just Bigtable

Page 21: Google Developer Days Brazil 2009 -  Java Appengine

21

Simplifying Storage

• Simplify development of apps

• Simplify management of apps

• App Engine services build on Google’s strengths

• Scale always matters – Request volume

– Data volume

Page 22: Google Developer Days Brazil 2009 -  Java Appengine

22

Datastore Storage Model

• Basic unit of storage is an Entity consisting of – Kind (table)

– Key (pk)

– Entity Group (top level ancestor) •  Has locking implications

–  0..N typed Properties (columns)

Page 23: Google Developer Days Brazil 2009 -  Java Appengine

23

Interesting Datastore Modeling Features

•  Ancestor

•  Multi-value properties

•  Variable properties

•  Heterogenous property types

Kind Person

Entity Group /Person:Ethel

Key /Person:Ethel

Age Int64: 30

Hobbies String: Tennis

Kind Person

Entity Group /Person:Ethel

Key /Person:Ethel/Person:Jane

Age Double: 3.5

Pets Key:/Turtle:Sam Key:/Dog:Ernie

Page 24: Google Developer Days Brazil 2009 -  Java Appengine

24

/Person:Ethel/Person:Jane

/Person:Ethel

/Person:Max

Transaction

Datastore Transactions

• Transactions apply to a single Entity Group – Global transactions are feasible

• get(), put(), delete() are transactional

• Queries are not transactional (yet)

Page 25: Google Developer Days Brazil 2009 -  Java Appengine

25

Datastore Queries

• Every query must be supported by an index – Built-in or user-defined

• Filters – Equality, inequality, intersection, ancestor

– Union, IN not supported (yet)

–  Joins not supported (unlikely, but never say never)

• Sorting

Page 26: Google Developer Days Brazil 2009 -  Java Appengine

26

Standards-based Persistence

• JDO or JPA (your choice) – Established apis and existing tooling

– Easier porting

– Mappable (mostly) to the datastore

– Soft schemas

• DataNucleus App Engine plugin

• Why not a JDBC driver instead?

Page 27: Google Developer Days Brazil 2009 -  Java Appengine

27

Kind Pet

Entity Group /Person:Ethel

Key /Person:Ethel/Pet:Sam

Transparent Entity Group Management

• Entity Group layout is important – Write throughput

– Atomicity of updates

• Ownership implies co-location within Entity Group

Page 28: Google Developer Days Brazil 2009 -  Java Appengine

Demo! Building Apps with Java App Engine

Page 29: Google Developer Days Brazil 2009 -  Java Appengine

29

Coming Soon

• Task queues

• Full text search

•  Incoming email

• XMPP

• Large file storage and retrieval

• Datastore export tools

Page 30: Google Developer Days Brazil 2009 -  Java Appengine

Q & A

Page 31: Google Developer Days Brazil 2009 -  Java Appengine