De l'Open Source à l'Open API (in French)

1,003 views

Published on

Devoxx Paris. 04/19/2012. Jérôme Louvel

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,003
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
17
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

De l'Open Source à l'Open API (in French)

  1. 1. 1 De l’open source à l’open API avec Restlet par Jérôme LOUVEL @jlouvel
  2. 2. 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
  3. 3. 3 Speaker • Jérôme LOUVEL (@jlouvel, jlouvel@restlet.com, 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)
  4. 4. L’OPEN API, PLUS IMPORTANTE QUE L’OPEN SOURCE ? Partie 1/4 4
  5. 5. Explosion du nombre d’APIs web 5 Source: ProgrammableWeb Source: ProgrammableWeb
  6. 6. Croissance des sites web 6 Source: NetCraft / Jacob Nielsen Un parallèle qui laisse rêveur !
  7. 7. 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
  8. 8. 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
  9. 9. 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
  10. 10. Impact de l’open source 10 1. Réduction des coûts (licences) 2. Ecosystème d’innovation (logiciel) 2000 2005
  11. 11. De l’open source à l’open API 11 1. Réduction des coûts (cloud computing) 2. Accès multicanal (mobilité, convergence) 2005 2010
  12. 12. 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
  13. 13. 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.
  14. 14. TOUR D’HORIZON D’APIS WEB ET D’ACTEURS CLÉS Partie 2/4 14
  15. 15. Twitter et les APIs web 15
  16. 16. Twilio, l’API web est le produit 16
  17. 17. 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
  18. 18. Amazon et les APIs web 18 • Authentification exotique • Anti-pattern d’API RESTful • Mais AWS reste une référence dans le cloud !
  19. 19. 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
  20. 20. RESTLET FRAMEWORK 2.1 & ROADMAP Partie 3/4 20
  21. 21. 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
  22. 22. Nombreuses références 22 • Une communauté internationale • Environ 100 000 développeurs Restlet
  23. 23. Architecture Une API Java, un moteur et 37 extensions ! 23
  24. 24. Multi-protocole Centré sur HTTP 24
  25. 25. Multi-cloud Augmentez la portabilité de vos APIs web 25
  26. 26. Support de Google SDC Accès sécurisé à l’intranet depuis le cloud public 26
  27. 27. Multi-distribution Une forge logicielle sur mesure 27
  28. 28. REST, un paradigme à part entière 28
  29. 29. Compétition Niveaux d’abstraction et paradigmes différents 29
  30. 30. 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
  31. 31. Filtrage et routage Multi-thread et dynamique 31
  32. 32. 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(); }
  33. 33. Service de conversion Extensible, scoring, beans de représentation 33
  34. 34. Restlet API vs JAX-RS API 34
  35. 35. 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
  36. 36. 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
  37. 37. 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)
  38. 38. 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 !
  39. 39. Livre « Restlet in Action » Déjà disponible en MEAP 39
  40. 40. 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)
  41. 41. 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 !
  42. 42. 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
  43. 43. Version 3.0 De framework à plate-forme 43
  44. 44. APISPARK, PAAS TOUT-EN-UN POUR APIS WEB Partie 4/4 44
  45. 45. APISpark, l’offre La plate-forme tout-en-un pour APIs web 45
  46. 46. APISpark, l’offre La plate-forme tout-en-un pour APIs web 46
  47. 47. Annuaire d’APIs web 47
  48. 48. Création d’une API web 48
  49. 49. Statistiques et reporting 49
  50. 50. Roadmap • Beta privée : fin avril 2012 • Beta publique : juin 2012 • Version 1.0 : octobre 2012 Inscrivez-vous ! http://apispark.com 50
  51. 51. 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

×