introduction à google app engine - waq 2011

30
Google App Engine L’introduction /'ɛn.dʒin/

Upload: jimmybourassa

Post on 15-Jul-2015

940 views

Category:

Technology


0 download

TRANSCRIPT

Google App EngineL’introduction

/'ɛn.dʒin/

En 15 secondes...

Google App Engine permet aux développeurs de bâtir des applications web sur les mêmes infrastructures scalable qui sont derrière les applications de Google.

En ~30 minutes

• La plateforme

• Les APIs

• La tarification

• Quelques scénarios

Google App Engine

La plateforme

Position dans le Cloud

Application

Plateforme

Infrastructure

EC2

Support communautaire de Google

‣ Blog

‣ Groups

Mises à jour du SDK

‣ 9 MAJs dans la dernière année

Pas de support commercial

Plateforme d’actualité

Facilité à scaler

Facilité à scalerD

ouleur

Nombre d’utilisateurs

Douleur vs nombre d’utilisateurs

App EngineArchitecture régulière

Les langages

Les frameworks

• Grails

• Play!

• Spring MVC

• Django

• web.py

Phase 1: Développer

Phase 2:

Phase 3: Profit!

Comment ça marche?

?

• Aucune écriture sur le système de fichier

• Aucun socket

• 30 secondes d’exécution

• Tout doit passer en HTTP

• Pas de SSL pour les domaines personnalisés

Limitations

Google App Engine

Les APIs

• Datastore (BD non relationnelle)

• Blobstore (gros fichiers)

• Memcache

• TaskQueue (background workers)

• Mail (envoi, réception)

• URLFetch

• ...

Les APIs

• BigTagle : key-value storage

• Architecture distribuée

• Performance et disponibilité variable

• Optimisé pour la lecture

• Transactions avec limitations

• API facile d’utilisation

DatastoreC’est quoi?

• Pas de fonction d’agrégat

• Pas de jointure

• Latence élevée

• 1 mb max / entité

• 1 mb max / appel à l’API

DatastoreLes limitations

DatastoreExemple : Déclarer une entité

from google.appengine.ext import db

class Message(db.Expando): de = db.EmailProperty(required=True) a = db.EmailProperty(required=True)

DatastoreExemple : Enregistrer une entité

m = Message( de = '[email protected]', a = '[email protected]', message = 'Hello World!', priorite = 0)m.put()print m

# ------------------------# Message# De : [email protected]# A : [email protected]# Priorite : 0

m = Message( de = '[email protected]', a = '[email protected]', message = 'Hello World!', priorite = 'URGENT', pjs = ['chat.jpg', 'chien.jpg'])m.put()print m# ------------------------# Message# De : [email protected]# A : [email protected]# Priorite : 'URGENT'# Pjs : ['chat.jpg', 'chien.jpg']

DatastoreExemple : Obtenir et supprimer des entités

#Obtenir 2 entités où Message.de = '[email protected]'requete = Message.all().filter('de', '[email protected]')messages = requete.fetch(2)print messages# ------------------------#[<Message object at ...>, <Message object at ...>]

#Supprimmer les entitésdb.delete(messages)messages = requete.fetch(2)print messages# ------------------------#[]

• Supporte HTML5 multiple file input

• Jusqu’à 2 Go

• Ne permet aucun autre input à partcelui du fichier

Blobstore

• Rapide, sauf latence

• Persistance non garantie

• Sauve du temps et de l’argent

• 1 mb max par entité

Memcache

• 30 secondes 10 minutes par task

• Parallélisme

• Chaque tâche doit êtreidempotente

Taskqueue

Google App Engine

La tarification

Gratuité

• Bande passante et CPUpour env. 5 millions de pages

• Limitations importantes au niveaude l’espace de stockage

Ressource Quota Prix / mois

Données du Blobstore 1 gig $0.15

Données du Datastore 1 gig $0.15

Bande passante entrante 1 gig / j. $3.00

Bande passante sortante 1 gig / j. $3.60

Courriels envoyés 2000 / j. $6.00

CPU 6.5 h / j. $9.50

Total mensuel $22.40

Tarification

Ressource Unité AppEngine Amazon

Bande passante sortante gig $0.12 $0.08 - $0.15

Bande passante entrante gig $0.10 $0.10

Temps CPU Heure CPU $0.10 $0.14

Données sauvegardées gig/mois $0.15 $0.25

Courriel envoyé destinataire $0.0001 $0.0001

Payez uniquement ce que vous utilisez

Google App Engine

Scénarios

Les scénariosBon cas d’utilisation

Backend pour conserver les scores d’un jeusur plateforme mobile

‣ Application non-critique

‣ Le nombre de clients peut changerd’ordre de magnitude rapidement

‣ Peu de relations entre les entités

‣ Gratuit pour une bonne période

Les scénariosMoins bon cas d’utilisation

Application de gestion d’inventaire,de fournisseurs et de facturation

‣ Application critique

‣ L’ordre de magnitude est peu sujet à changement

‣ Beaucoup de relations entre les entités

Google App Engine

Retour

@JimmyBourassa sur Twitter

jbourassa sur GitHub

[email protected]

Questions?Commentaires?