nantes gtug - restlet & appengine

41
Restlet Framework et Google App Engine 17 janvier 2012

Upload: gdg-nantes

Post on 08-Jul-2015

2.122 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Nantes GTUG - Restlet & AppEngine

Restlet Framework et Google App Engine17 janvier 2012

Page 2: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

INTERVENANTNoelios Technologies

•Editeur de logiciel– création en 2008

•R&D– open source (Restlet)– collaboratif (Cap Digital)

•Services– conseil– co-développement– support technique

Thierry Templier

– Architecte R&D chez Noelios Technologies– Co-auteur « Spring par la pratique » et

« JavaScript pour le Web 2.0 »– Co-auteur « Spring DM in action » et

« Spring Batch in action »– Co-auteur « Restlet in action »

Page 3: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

AGENDAIntroduction: Restlet et le multiplateforme

– Restlet : fonctionnements, extensions,...– Ouverture au cloud

Restlet et GAE– Développer une application Restlet pour GAE– Prise en charge des restrictions de GAE– SDC

Perspectives: Restlet et les APIs web– Marché des APIs web– Livre « Restlet in Action »– Lancement d’APISpark

Page 4: Nantes GTUG - Restlet & AppEngine

INTRODUCTION: RESTLET ET LE MULTIPLATEFORME

Partie 1/3

Page 5: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

RESTLET FRAMEWORK• Premier framework REST pour Java

– Lancement en 2005– Large communauté– Innovation constante– http://www.restlet.org

• Fonctionnalités principales– Couverture complète de HTTP et REST– API Java à la fois cliente et serveur– Routage intégré (basé sur les URIs, virtual hosts, etc.)– Sécurité intégrée (authentification, autorisation,

confidentialité)– Serveur web complet (fichiers statiques, conneg)– 36 extensions (Atom, EMF, JSON, OData, JAAS, OAuth,

etc.)

Page 6: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

RÉFÉRENCES

Page 7: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

STRUCTURE D’UN PROJET RESTLET

Projets utilisateurs

API Restlet

Moteur Restlet

Restlet ExtensionsRestlet Extensions

Extension Restlet

Page 8: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

FILTRAGE ET ROUTAGE

Next Restlet

Filter

B

C

A

Router

B

C

A

Route 1

Route 2

Route 3

A

B

C

Page 9: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

INTERFACES ANNOTÉES

HTTP

Annotated Java interface

REST API

Clientresource

Serverresource

Clientproxy

Serversubclass

Page 10: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

SERVICE DE CONVERSION

Resource

XML

HTML

JSON

StateRepresentation

bean

Form Data

RDF

Atom

Converter service

Page 11: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

EDITIONS DE RESTLET FRAMEWORK

Page 12: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

PORTAGE SEMI-AUTOMATIQUE

Page 13: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

PERSONNALISATION DU CODE SOURCE

• Inclusion ou exclusion

– par fichier via extensions spéciales

– au niveau d’une méthode

– au niveau d’un bloc de code

Page 14: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

OUVERTURE AU CLOUDCÔTÉ SERVEUR ET CLIENT

Page 15: Nantes GTUG - Restlet & AppEngine

RESTLET ET GAEPartie 2/3

Page 16: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

GOOGLE APP ENGINE

• Description

– Plateforme Cloud de Google– Développement et hébergement d'applications Web

dans les systèmes de Google– PAAS : Plateform As A Service– Java et Python supportés

• Caractéristiques

– Hardware et scalabité gérés de manière transparente– BigTable pour les données– Console d'administration– SDK GAE

Page 17: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

APPLICATION RESTLET

• Caractéristiques

– Utilisation de l'édition GAE de Restlet– Utilisation de l'extension Servlet

(org.restlet.ext.servlet)– Mécanismes classiques de Restlet sont supportés– Utilisation de l'extension GAE si nécessaire

(org.restlet.ext.gae >2.1)

• Packaging et déploiement

– Packaging classique des applications GAE (WAR)– Ajout d'un fichier appengine-web.xml– Déploiement via la console ou le SDK GAE

Page 18: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

EXTENSION SERVLET

Page 19: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

APPLICATION RESTLET (1/6)

• Caractéristiques

– Utilisation de l'édition GAE de Restlet– Utilisation de l'extension Servlet

(org.restlet.ext.servlet)– Mécanismes classiques de Restlet sont supportés– Utilisation de l'extension Net (org.restlet.ext.net) pour

les appels HTTP

• Packaging et déploiement

– Packaging classique des applications GAE (WAR)– Ajout d'un fichier appengine-web.xml– Déploiement via la console ou le SDK GAE

Page 20: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

APPLICATION RESTLET (2/6)

• Modèle

Page 21: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

APPLICATION RESTLET (3/6)

• ServerResource

- Sélection des méthodes de traitement via annotations

- Conversion automatique en bean

Page 22: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

APPLICATION RESTLET (4/6)

• Application Restlet

Page 23: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

APPLICATION RESTLET (5/6)

• web.xml

Page 24: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

APPLICATION RESTLET (6/6)

• appengine-web.xml

Page 25: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

CLIENT RESTLET

• Utilisation des classes Client ou ClientResource

Page 26: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

LIMITATIONS (1/2)• Chunk encoding pour les requêtes

– Envoi de données par lots dans une même connexion HTTP

– Pas de connaissance de la taille des données avant envoi

– Non supporté par GAE

• Solution dans Restlet

– Désactiver le chuck encoding lors des appels (setRequestEntityBuffering > 2.1)

– Pré calcul de la taille des données à envoyer– Disponible pour tous les environnements

Page 27: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

LIMITATIONS (2/2)

• API restreintes dans GAE

– Utilisation des threads– Fichiers locaux– Sockets

• Solution dans Restlet

– Adaptation du code source pour utiliser les services GAE

– Worker / Task runner– Service Storage– URL Fetch pour les appels client (URLConnection)

Page 28: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

SECURITY AVEC GAE

• Possibilité d'utiliser Google Accounts

– Extension GAE (org.restlet.ext.gae)– A partir de la version 2.1– Authentification et autorisation

• Exemple

Page 29: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

GOOGLE SDC

SDC : Googe Secure Data Connector

• Protocole SDC

– tunnel SSL multiplexé– basé sur Google Prot.Buffer– tunnels HTTP et socket– lecture et écriture

• Agent SDC

– installé dans l’intranet– open source (Apache License)

Page 30: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

RESTLET SDC (1/3)

Page 31: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

RESTLET SDC (2/3)

• Mise en place du Tunnel Server dans Restlet

- JAR de l'extension SDC dans le classpath (org.restlet.ext.sdc)

- Configuration et démarrage du connecteur via la classe Client de Restlet

Page 32: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

RESTLET SDC (3/3)

• Exécution de requêtes vers l'intranet via Restlet:

• Dans le contexte d'applications GAE:

- Entête use-intranet automatiquement positionnée (> 2.1 M4)

- Pas d'authentification nécessaire

Page 33: Nantes GTUG - Restlet & AppEngine

PERSPECTIVES: RESTLET ET LES APIS WEB

Partie 3/3

Page 34: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

ROADMAP RESTLET• Version 2.1 (Mars 2012)

– Connecteur HTTP/NIO interne : alternative à Jetty– Support de SIP unifié : alternative à SIPServlets– Support d’OAuth et OpenID 2.0 : contribution Ericsson

Labs– Connecteur SDC (Secure Data Connector)– Extension EMF : conversion automatique XML/XMI– Formulaires web multi-part client

• Version 2.2 (Octobre 2012)– Optimisation de taille (Android et GWT)– Support du protocole SPDY– Migration GitHub, StackOverflow, Google Groups– Nouveau tutoriel– etc.

Page 35: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

VERSION JAVASCRIPT• Portage de Restlet en JavaScript

– Même mécanisme que pour le framework Java– Edition pour les navigateurs Web– Edition pour Node.js

• Développement en cours

– Source disponible sur GitHub (https://github.com/restlet/restlet-framework-js)

– Première version partie cliente (février 2012)– Première version partie serveur (mai 2012)

Page 36: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

PITCH

• Aujourd’hui tout le monde possède son site web et l’on ne débat plus que sur la meilleure façon de les développer.

• Demain, tout le monde aura son API web, de préférence RESTful et les sites web s’appuieront directement sur des APIs web.

Page 37: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

SITE WEBA N D R O I D

ECOSYSTÈME

C L O U D

AmazonEC2

C L O U D

Google App Engine

C L O U D

WindowsAzure

C L O U D

Cloudprivé

Développeursutilisateurs d’APIs

APIs web

Développeurscréateurs d’APIs

Gestionnairesd’APIs

WEB OS

WW

MASH UP

API web

FACEBOOK

Hébergement Hébergement adaptableadaptable

InteropérabilitéInteropérabilitémaximalemaximale

ServicesDonnées

WW

Ouverture du SIOuverture du SIpar les APIs webpar les APIs web

Page 38: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

QUELQUES CHIFFRES

Page 39: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

CAS D’USAGES

Application mobiles connectées– natives ou HTML 5

Cloud computing– IaaS/PaaS (AWS, GAE, Azure)– SaaS (Basecamp, SalesForce, Google Apps)

Objets communicants– Personnels (Karotz, pèse personnes)– Professionnels (M2M, RFID, GPS, 3G, géoloc.)

E-marketing– Places de marchés, comparateurs de prix, affiliation

(Amazon, eBay, Kelkoo)

Page 40: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

INTÉRÊT POUR UN DÉVELOPPEUR JAVA

• Apprendre REST et HTTP est un investissement sur le long terme

– nécessite du temps, comme l’orienté objet– premiers bénéfices faciles à obtenir– rester pragmatique

• Nombreuses opportunités avec les APIs web

– exposition d’APIs– consommation d’APIs– mashups d’APIs

• Restlet Framework offre

– une boîte à outil multiplateforme, complète et éprouvée– qui peut vous accompagner tout au long de ce chemin

Page 41: Nantes GTUG - Restlet & AppEngine

Copyright Noelios Technologies – Tous droits réservés

POUR ALLER PLUS LOIN…

• Livre « Restlet in Action »

– Publication début 2012– Restlet, REST, ROA/D, cloud– Version « early access » dispo.

• Lancement « API Spark »

– Plate-forme cloud pour APIs web– basée sur Restlet Framework– inscription beta privée:

http://apispark.com