Google Cloud Endpoints
Développer un backend sur App Engine pour des applications
Android, iOS et Web


Maxime Gréau, Architecte Technique, Ministère des Finances
Pourquoi sommes nous là


                          Utiliser Google App Engine en
                          tant que backend pour de
                          multiples clients

                          Introduire Google Cloud
                          Endpoints



                                                    #devfestnantes
Donc vous souhaitez créer une application




                                            #devfestnantes
Donc vous souhaitez créer une application
... car vous avez une super idée !




                                            #devfestnantes
Donc vous souhaitez créer une application
... vous voyez, l'idée qui va vous rendre millionnaire




                                                         #devfestnantes
Donc vous souhaitez créer une application
... elle doit donc être disponible sur plusieurs plate-formes




                                                                #devfestnantes
Donc vous souhaitez créer une application
... elle doit également être capable de gérer des montées en charge




                                                                      #devfestnantes
Vous pensez l'architecture
ça ressemblerait à quelque chose dans ce genre




                                                 #devfestnantes
Vous commencez à l'implémenter
Vous choisissez votre stack open source




                                          #devfestnantes
Vous commencez à l'implémenter
Vous décidez du fonctionnement de votre API




                                              #devfestnantes
Vous commencez à l'implémenter
Vous décidez du fonctionnement de votre API




                                              #devfestnantes
Vous commencez à l'implémenter
Vous commencer à développer vos applications clientes




                                                        #devfestnantes
Et vous lancez votre application !
La gestion des ressources, du load balancing... va devenir un travail à temps plein




                                                                                      #devfestnantes
Que faisons nous VS Qu'est ce que nous voulions faire




                                                   #devfestnantes
App Engine
Un framework web et une plate-forme de déploiement


                             Facile à coder/déployer
                             Scalabilité simplifiée
                             Administration triviale




               1 mois d'activité sur App Engine
                1,000,000 applications actives
           2 Trillion d'opérations dans le datastore

                                                       #devfestnantes
Google App Engine: Principales caractéristiques




     Stockage                 Calcul                 Services


Datastore, Cloud SQL,   Frontends, Backends,    Users, Mail, Images,
     Memcache            Task Queues, Cron     UrlFetch, MapReduce,
                                               TrafficSplitting, Search




                                                                 #devfestnantes
Utiliser App Engine en tant que Backend, et le reste ?




                                                         #devfestnantes
Présentation de Google Cloud Endpoints   Available for Trusted Testers




                                                               #devfestnantes
Endpoints: Comment ça marche


Ecrire son code   Annoter les   Générer les     Développer les
côté backend      méthodes de   bibliothèques   applications
                  l'API         clientes        clientes




                                                                 #devfestnantes
Endpoints: Comment ça marche


Write your code
Ecrire son                      Annoter les          Générer les     Développer les
côté backend
backend code                    méthodes de          bibliothèques   applications
                                l'API                clientes        clientes



                                                                               Java
 public class HotelEndpoint {
     public List<Hotel> searchHotel(String term) {
         // method logic here
         return hotelList;
     }
 }



                                                                                      #devfestnantes
Endpoints: Comment ça marche


Ecrire son code                 Annotate API
                                Annoter les     Générer les         Développer les
côté backend                    methods de
                                méthodes        bibliothèques       applications
                                l'API           clientes            clientes



                                                                              Java
 @Api(name = "bookingendpoint")
 public class HotelEndpoint {
     public List<Hotel> searchHotel(@Named("term") String term) {
         // method logic here
         return hotelList;
     }
 }


                                                                                     #devfestnantes
Endpoints: Comment ça marche


Ecrire son code        Annoter les             Generate client
                                               Générer les               Développer les
côté backend           méthodes de             libraries
                                               bibliothèques             applications
                       l'API                   clientes                  clientes



 localhost:home user$ ./endpoints.sh get-java-client-lib HotelEndpoint            Java

 ==========================================================
 ..
 API configuration written to war/WEB-INF/bookingendpoint-v1.api
 API Discovery Document written to war/WEB-INF/bookingendpoint-v1-rest.
 discovery
 API client library written to war/WEB-INF/bookingendpoint-v1-java.zip



                                                                                          #devfestnantes
Endpoints: Comment ça marche


Ecrire son code                Annoter les                      Générer les                Write client apps
                                                                                           Développer les
côté backend                   méthodes de                      bibliothèques              applications
                               l'API                            clientes                   clientes



 import com.appspot.api.services.bookingendpoint.Bookingendpoint;                                     Java

 Bookingendpoint service = new Bookingendpoint(transport, jsonFactory, null);
 List<Hotel> list = service.searchHotel(term).execute().getItems();

    JS           <script src="https://apis.google.com/js/client.js?onload=loadGapi"></script>
                 gapi.client.load('bookingendpoint', 'v1', function() {
                 gapi.client.bookingendpoint.hotels.search({term: term}).execute(function(resp) {
                             console.log(resp);    });
                       }, 'https://cloud-booking.appspot.com/_ah/api');


                                                                                                               #devfestnantes
Cloud Booking Application




                            #devfestnantes
Google Cloud Endpoints pour "Cloud Booking"




                       ●   Filtre
                       ●   Recherche
                       ●   Authentification




                                              #devfestnantes
Démo
Cloud Booking Application



- Web : https://cloud-booking-client.appspot.com/client-js/
- Android : https://cloud-booking-client.appspot.com/client-android/booking-client-android.apk
Caractéristiques

             API                         Client                      Outils

Python ou Java backend        Génération du code client   App Engine Dev AppServer

Configuration basée sur des      iOS (Objective C)        Google Plugin for Eclipse
annotations
                                 Android (Java)           Discovery et APIs Explorer
OAuth2 support
                                 Browser (Javascript)
GZip




                                                                            #devfestnantes
Google App Engine et Google Cloud Endpoints

     Scalabilité        Flexibilité           Simplicité




                                                     #devfestnantes
Merci !
Merci à Thomas Delhoménie pour l'application Android
Thank you to Dan Holevoet for slides




 +Maxime Gréau @mgreau github.com/mgreau
Web           Android




Questions?
                          Code source:
                          http://github.com/mgreau




    Formulaire d'inscription en tant que testeur
           endpoints-trusted-tester.appspot.com
#devfestnantes

Google Cloud Endpoints - DevFest - Nantes 2012

  • 1.
    Google Cloud Endpoints Développerun backend sur App Engine pour des applications Android, iOS et Web Maxime Gréau, Architecte Technique, Ministère des Finances
  • 2.
    Pourquoi sommes nouslà Utiliser Google App Engine en tant que backend pour de multiples clients Introduire Google Cloud Endpoints #devfestnantes
  • 3.
    Donc vous souhaitezcréer une application #devfestnantes
  • 4.
    Donc vous souhaitezcréer une application ... car vous avez une super idée ! #devfestnantes
  • 5.
    Donc vous souhaitezcréer une application ... vous voyez, l'idée qui va vous rendre millionnaire #devfestnantes
  • 6.
    Donc vous souhaitezcréer une application ... elle doit donc être disponible sur plusieurs plate-formes #devfestnantes
  • 7.
    Donc vous souhaitezcréer une application ... elle doit également être capable de gérer des montées en charge #devfestnantes
  • 8.
    Vous pensez l'architecture çaressemblerait à quelque chose dans ce genre #devfestnantes
  • 9.
    Vous commencez àl'implémenter Vous choisissez votre stack open source #devfestnantes
  • 10.
    Vous commencez àl'implémenter Vous décidez du fonctionnement de votre API #devfestnantes
  • 11.
    Vous commencez àl'implémenter Vous décidez du fonctionnement de votre API #devfestnantes
  • 12.
    Vous commencez àl'implémenter Vous commencer à développer vos applications clientes #devfestnantes
  • 13.
    Et vous lancezvotre application ! La gestion des ressources, du load balancing... va devenir un travail à temps plein #devfestnantes
  • 14.
    Que faisons nousVS Qu'est ce que nous voulions faire #devfestnantes
  • 15.
    App Engine Un frameworkweb et une plate-forme de déploiement Facile à coder/déployer Scalabilité simplifiée Administration triviale 1 mois d'activité sur App Engine 1,000,000 applications actives 2 Trillion d'opérations dans le datastore #devfestnantes
  • 16.
    Google App Engine:Principales caractéristiques Stockage Calcul Services Datastore, Cloud SQL, Frontends, Backends, Users, Mail, Images, Memcache Task Queues, Cron UrlFetch, MapReduce, TrafficSplitting, Search #devfestnantes
  • 17.
    Utiliser App Engineen tant que Backend, et le reste ? #devfestnantes
  • 18.
    Présentation de GoogleCloud Endpoints Available for Trusted Testers #devfestnantes
  • 19.
    Endpoints: Comment çamarche Ecrire son code Annoter les Générer les Développer les côté backend méthodes de bibliothèques applications l'API clientes clientes #devfestnantes
  • 20.
    Endpoints: Comment çamarche Write your code Ecrire son Annoter les Générer les Développer les côté backend backend code méthodes de bibliothèques applications l'API clientes clientes Java public class HotelEndpoint { public List<Hotel> searchHotel(String term) { // method logic here return hotelList; } } #devfestnantes
  • 21.
    Endpoints: Comment çamarche Ecrire son code Annotate API Annoter les Générer les Développer les côté backend methods de méthodes bibliothèques applications l'API clientes clientes Java @Api(name = "bookingendpoint") public class HotelEndpoint { public List<Hotel> searchHotel(@Named("term") String term) { // method logic here return hotelList; } } #devfestnantes
  • 22.
    Endpoints: Comment çamarche Ecrire son code Annoter les Generate client Générer les Développer les côté backend méthodes de libraries bibliothèques applications l'API clientes clientes localhost:home user$ ./endpoints.sh get-java-client-lib HotelEndpoint Java ========================================================== .. API configuration written to war/WEB-INF/bookingendpoint-v1.api API Discovery Document written to war/WEB-INF/bookingendpoint-v1-rest. discovery API client library written to war/WEB-INF/bookingendpoint-v1-java.zip #devfestnantes
  • 23.
    Endpoints: Comment çamarche Ecrire son code Annoter les Générer les Write client apps Développer les côté backend méthodes de bibliothèques applications l'API clientes clientes import com.appspot.api.services.bookingendpoint.Bookingendpoint; Java Bookingendpoint service = new Bookingendpoint(transport, jsonFactory, null); List<Hotel> list = service.searchHotel(term).execute().getItems(); JS <script src="https://apis.google.com/js/client.js?onload=loadGapi"></script> gapi.client.load('bookingendpoint', 'v1', function() { gapi.client.bookingendpoint.hotels.search({term: term}).execute(function(resp) { console.log(resp); }); }, 'https://cloud-booking.appspot.com/_ah/api'); #devfestnantes
  • 24.
  • 25.
    Google Cloud Endpointspour "Cloud Booking" ● Filtre ● Recherche ● Authentification #devfestnantes
  • 26.
    Démo Cloud Booking Application -Web : https://cloud-booking-client.appspot.com/client-js/ - Android : https://cloud-booking-client.appspot.com/client-android/booking-client-android.apk
  • 27.
    Caractéristiques API Client Outils Python ou Java backend Génération du code client App Engine Dev AppServer Configuration basée sur des iOS (Objective C) Google Plugin for Eclipse annotations Android (Java) Discovery et APIs Explorer OAuth2 support Browser (Javascript) GZip #devfestnantes
  • 28.
    Google App Engineet Google Cloud Endpoints Scalabilité Flexibilité Simplicité #devfestnantes
  • 29.
    Merci ! Merci àThomas Delhoménie pour l'application Android Thank you to Dan Holevoet for slides +Maxime Gréau @mgreau github.com/mgreau
  • 30.
    Web Android Questions? Code source: http://github.com/mgreau Formulaire d'inscription en tant que testeur endpoints-trusted-tester.appspot.com
  • 31.