51
1 De l’open source à l’open API avec Restlet par Jérôme LOUVEL @jlouvel

De l'open source à l'open API avec Restlet

Embed Size (px)

DESCRIPTION

L'arrivée en force des APIs web ouvertes révolutionne notre façon de développer sur le Web, d'une façon encore plus importante que l'open source. Nous expliquerons ce qu'est une API web, ferons un tour d'horizon des APIs les plus marquantes, des clés de leur succès et présenterons les principales solutions pour faciliter leur création, leur hébergement, leur gestion et leur utilisation. Nous expliquerons plus en détail comment développer une API web RESTful en Java grâce à Restlet Framework, le premier projet open source pour le développement REST en Java qui sort sa version 2.1 accompagné du livre "Restlet in Action" publié par Manning. Pour finir nous présenterons APISpark, une nouvelle plate-forme cloud tout-en-un pour les APIs web, basée sur Restet Framework.

Citation preview

Page 1: De l'open source à l'open API avec Restlet

1

De l’open source à l’open API avec Restlet

par Jérôme LOUVEL @jlouvel

Page 2: De l'open source à l'open API avec Restlet

2

Abstract

• L’open API, plus importante que l’open source ?

• Tour d’horizon d’APIs web et des acteurs clés

• Restlet Framework 2.1 & Roadmap

• APISpark, PaaS tout-en-un pour APIs web

Page 3: De l'open source à l'open API avec Restlet

3

Speaker • Jérôme LOUVEL (@jlouvel, [email protected], G+)

• Ingénieur PolyTech’Montpellier, 14 ans d’expérience

• Créateur de Restlet Framework, CEO de Restlet SAS

• Expert JAX-RS 1.0 (JSR-311)

• Contributeur à “RESTful Web Services” (O’Reilly)

• Co-auteur de “Restlet in Action” (Manning)

Page 4: De l'open source à l'open API avec Restlet

L’OPEN API, PLUS IMPORTANTE QUE L’OPEN SOURCE ? Partie 1/4

4

Page 5: De l'open source à l'open API avec Restlet

Explosion du nombre d’APIs web

5

Source: ProgrammableWeb Source: ProgrammableWeb

Page 6: De l'open source à l'open API avec Restlet

Croissance des sites web

6

Source: NetCraft / Jacob Nielsen

Un parallèle qui laisse rêveur !

Page 7: De l'open source à l'open API avec Restlet

Prédominance de REST

7

Source: ProgrammableWeb

• REST est souvent synonyme de non-SOAP… • L’hypermédia est rarement exploité… • AtomPub est plutôt la plus RESTful des APIs à ce jour • REST n’est pas indispensable au succès d’une API web • Exigence de qualité croissante : REST comme guide

Source: ProgrammableWeb

Page 8: De l'open source à l'open API avec Restlet

L’open API, ça se consomme

• Enrichir un site web (mashups, flux blog/tweets, Google Maps)

• Import/Export SaaS (libérer ses données, changer de fournisseur)

• Intégration SaaS (notifier / web hooks, automatiser / workflow)

• APIs composites (combiner plusieurs APIs en une autre)

8

Page 9: De l'open source à l'open API avec Restlet

L’open API permet d’exposer

• Backend Mobile (connectées, natives ou HTML 5)

• Backend SaaS (HTML 5/AJAX, API développeur/partenaire)

• Backend Open Data (multi-formats, API développeur, big data)

• Backend Internet des Objets (M2M, RFID, géolocalisation)

9

Page 10: De l'open source à l'open API avec Restlet

Impact de l’open source

10

1. Réduction des coûts (licences) 2. Ecosystème d’innovation (logiciel)

2000 2005

Page 11: De l'open source à l'open API avec Restlet

De l’open source à l’open API

11

1. Réduction des coûts (cloud computing) 2. Accès multicanal (mobilité, convergence)

2005 2010

Page 12: De l'open source à l'open API avec Restlet

Impact de l’open API

12

1. Réduction des coûts (composition d’APIs web, open & privates, gain de temps) 2. Ecosystème d’innovation (places de marché d’APIs web, nouvelles chaînes de valeur)

2015 2020

Page 13: De l'open source à l'open API avec Restlet

Anatomie d’une API web

13

• Un contrat d’API web standard = Mise en concurrence facilitée • Exemples de contrats : Atom/AtomPub, AWS S3, CDMI, etc.

Page 14: De l'open source à l'open API avec Restlet

TOUR D’HORIZON D’APIS WEB ET D’ACTEURS CLÉS Partie 2/4

14

Page 15: De l'open source à l'open API avec Restlet

Twitter et les APIs web

15

Page 16: De l'open source à l'open API avec Restlet

Twilio, l’API web est le produit

16

Page 17: De l'open source à l'open API avec Restlet

Google Maps Image API

17

http://maps.googleapis.com/maps/api/staticmap? center=Brooklyn+Bridge,New+York,NY& zoom=14& size=512x512& maptype=roadmap& markers=color:blue%7Clabel:S%7C40.702147,-74.015794& markers=color:green%7Clabel:G%7C40.711614,-74.012318& markers=color:red%7Ccolor:red%7Clabel:C%7C40.718217,-73.998284& sensor=false

• Représentation « image/png » de la ressource de carte • Une ressource REST peut exposer des représentations binaires

Page 18: De l'open source à l'open API avec Restlet

Amazon et les APIs web

18

• Authentification exotique • Anti-pattern d’API RESTful • Mais AWS reste une référence dans le cloud !

Page 19: De l'open source à l'open API avec Restlet

De nouveaux acteurs

19

• Frameworks RESTful • Génération de doc • Frameworks NIO/HTTP

• Backends as a Service • Applis mobiles • SaaS & sites riches • Open data • Internet des Objets

• Sécurisation • Analytics • SDKs clients • Gestion communauté

• Annuaire • Monétisation • Animation • Référencement

• Oracle Jersey • JBoss RESTEasy • XINS, Swagger • Enunciate • Restlet Framework

• StackMob • Parse.com • Sencha.io • Firebase • APISpark

• Apigee • Mashery • 3Scale • WebServius • APISpark

• ProgrammableWeb • Mashape • Alcatel Open API Platform • The Easy API • APISpark

Page 20: De l'open source à l'open API avec Restlet

RESTLET FRAMEWORK 2.1 & ROADMAP Partie 3/4

20

Page 21: De l'open source à l'open API avec Restlet

Restlet Framework 2.1

21

Framework pour exposer et consommer des APIs web de style REST

OSGi environments

Servlet containers

Regular JVM

Android mobiles

GAE PaaS

GWT browsers

Langage Java

Page 22: De l'open source à l'open API avec Restlet

Nombreuses références

22

• Une communauté internationale • Environ 100 000 développeurs Restlet

Page 23: De l'open source à l'open API avec Restlet

Architecture Une API Java, un moteur et 37 extensions !

23

Page 24: De l'open source à l'open API avec Restlet

Multi-protocole Centré sur HTTP

24

Page 25: De l'open source à l'open API avec Restlet

Multi-cloud Augmentez la portabilité de vos APIs web

25

Page 26: De l'open source à l'open API avec Restlet

Support de Google SDC Accès sécurisé à l’intranet depuis le cloud public

26

Page 27: De l'open source à l'open API avec Restlet

Multi-distribution Une forge logicielle sur mesure

27

Page 28: De l'open source à l'open API avec Restlet

REST, un paradigme à part entière

28

Page 29: De l'open source à l'open API avec Restlet

Compétition Niveaux d’abstraction et paradigmes différents

29

Page 30: De l'open source à l'open API avec Restlet

Packages de l’API Restlet Un cœur complet mais compact

30

org.restlet.data

org.restlet.representation

org.restlet

org.restlet.resource

org.restlet.routing

org.restlet.security

org.restlet.service

org.restlet.util

Page 31: De l'open source à l'open API avec Restlet

Filtrage et routage Multi-thread et dynamique

31

Page 32: De l'open source à l'open API avec Restlet

Interfaces Java annotées Approche uniforme, client & serveur

32

public interface RootResource { @Get("txt") public String represent(); } public interface AccountsResource { @Get("txt|json|xml") public String represent(); @Post("txt") public String add(String account); } public interface AccountResource { @Get("txt?depth={level}") public String represent(); @Put(“form:txt") public void store(String account); @Delete public void remove(); }

Page 33: De l'open source à l'open API avec Restlet

Service de conversion Extensible, scoring, beans de représentation

33

Page 34: De l'open source à l'open API avec Restlet

Restlet API vs JAX-RS API

34

Page 35: De l'open source à l'open API avec Restlet

Des styles de codage différents Côté serveur

35

@POST @Path(“withdrawal") @Consumes("text/plain") @Produces("application/json") public Money withdraw( @PathParam("card") String card, @QueryParam("pin") String pin, String amount){ return getMoney(card, pin, amount); }

@Post(“txt:json”) public Money withdraw(){ String card = getAttribute(“card”); String pin = getQueryValue(“pin”); String amount = getQueryValue(“amount”); return getMoney(card, pin, amount); }

JAX-RS API 1.1 Restlet API 2.1

Page 36: De l'open source à l'open API avec Restlet

Des styles de codage différents Côté client

36

// Get instance of Client Client client = ClientFactory.newClient(); // Get account balance String bal = client.target("http://.../atm/{cardId}/balance") .pathParam("cardId", "112233") .queryParam("pin", "9876") .request("text/plain").get(String.class);

// Get instance of Client ClientResource client = new ClientResource(""http://.../atm/{cardId}/balance"); // Get account balance client.setAttribute("cardId", "112233"); client.setQueryValue("pin", "9876"); client.accept(MediaType.TXT_PLAIN); String bal = client.get(String.class);

JAX-RS API 2.0 Restlet API 2.1

Page 37: De l'open source à l'open API avec Restlet

Sortie version 2.1 2 ans de développement !

37

1) Améliorations incrémentales de l’API Restlet

• Sucre syntaxique (ClientResource#get/setQuery, get/setAttribute, etc.)

• Amélioration annotations. Example: @Get("form|xml:json?level=2")

• Traçage des requêtes individuel facilité

• ConnegService, DecoderService côté client

• Gestion côté client de l’absence de chunk encoding dans GAE

• Extension EMF (converter XMI/XML), HTML (multi-part upload)

2) Sécurité des APIs web renforcée

• Support des schémas AWS S3, AWS Query, Cookie et GAE

• Support de Google Secure Data Connector (SDC) hors GAE

• Nouvelles extensions OAuth 2.0 et OpenID 2.0 (draft specs)

Page 38: De l'open source à l'open API avec Restlet

Sortie version 2.1 Prévu en juin 2012

38

3) Nouveau connecteur HTTP interne

• Design NIO non-bloquant, peu de threads

• Zéro dépendance, centré HTTP/Restlet, lecture représ. asynchrone

• Dépréciation des extensions Grizzly et Netty

• Documenté et extensible (extension SIP)

4) Option « Apache Public License 2.0 »

• En plus d’EPL 1.0, LGPL 2.1/3.0 et CDDL 1.0

• Licences commerciales possible si nécessaire

5) Migration vers GitHub

• Historique SVN avec branches importé

• Tickets Tigris.org importés

• Forge Restlet automatisée mise à jour

• Augmentation des contributions constatée !

Page 39: De l'open source à l'open API avec Restlet

Livre « Restlet in Action » Déjà disponible en MEAP

39

Page 40: De l'open source à l'open API avec Restlet

Version 2.2 Ecouter sa communauté !

40

• Migration vers Google Groups

• Listes de diffusion utilisateurs et développeurs encore sur Tigris.org

• Migration vers StackOverFlow

• Déjà largement utilisé pour les questions simples et bogues

• Augmenter la qualité des échanges dans le groupe sur Google en retour

• Migration vers Java SE 6

• Java SE 5 supporté depuis Restlet Framework 1.0 !

• Réduire la taille du code (ex: service pattern)

Page 41: De l'open source à l'open API avec Restlet

Version 2.2 Améliorations incrémentales

41

• Nouvelles fonctionnalités • Optimiser la taille des éditions Android et GWT • CacheService : générique et extensible • Edition OSGi : gestion entièrement dynamique • Injection : Guice, Spring (amélioration)

• Portage en JavaScript natif

• Même niveau d’abstraction qu’en Java • Côté client (browser/XHR et Node.JS) • Côté serveur (Node.JS) • Prototype déjà disponible !

Page 42: De l'open source à l'open API avec Restlet

Version 3.0 Les grandes lignes

42

• Site web : nouveau design et tutoriel • Restlet Studio : IDE basé sur Eclipse 4.0 • Restlet Apps : applications réutilisables (recherche, etc.) • Connecteur interne

• Unification runtime client et serveur • Pool de threads unique (via TaskService) • Support de SPDY [et/ou HTTP 2.0] (sur NIO)

• Nouveau convertisseur interne • Support multi-formats (XML, JSON, RDF, Form, CSV, etc.) • Support des hyperliens et des métadonnées HTTP • Remplaçant des extensions Jackson, XStream, etc.

• Nouveau portage : Google Dart • Support HTML 5 : Server-Sent Events, Cross-origin policies

Page 43: De l'open source à l'open API avec Restlet

Version 3.0 De framework à plate-forme

43

Page 44: De l'open source à l'open API avec Restlet

APISPARK, PAAS TOUT-EN-UN POUR APIS WEB

Partie 4/4

44

Page 45: De l'open source à l'open API avec Restlet

APISpark, l’offre La plate-forme tout-en-un pour APIs web

45

Page 46: De l'open source à l'open API avec Restlet

APISpark, l’offre La plate-forme tout-en-un pour APIs web

46

Page 47: De l'open source à l'open API avec Restlet

Annuaire d’APIs web

47

Page 48: De l'open source à l'open API avec Restlet

Création d’une API web

48

Page 49: De l'open source à l'open API avec Restlet

Statistiques et reporting

49

Page 50: De l'open source à l'open API avec Restlet

Roadmap

• Beta privée : fin avril 2012

• Beta publique : juin 2012

• Version 1.0 : octobre 2012

Inscrivez-vous ! http://apispark.com

50

Page 51: De l'open source à l'open API avec Restlet

Conclusion Merci !

51

• Apprendre REST & HTTP c’est un investissement sur le long terme

• Nombreuses opportunités autour des APIs web

• Restlet Framework : solution open source puissante et complète

• APISpark : solution en ligne tout-en-un et simple d’usage