Code in the Cloud

CodeInTheCloud Ca y est ! j’ai emprunté mon premier livre à la librairie officielle du JUG.

J’ai opté pour « Code in the Cloud » (programming Google App Engine) de Mark C. Chu-Carroll.

Voici ce que j’en retiens.

Ce livre est une très bonne introduction aux différents concepts et aux différentes problématiques liés à la programmation sur le cloud de Google. L’auteur s’attache plus particulièrement à donner des solutions simples avec des exemples de codes en Python ou en Java (pas encore de Go) qui s’exécutent sur l’AppEngine de Google.

Il commence le livre en se focalisant sur les possibilités de génération de page Web avec les API python disponibles sur cette plate-forme, cela passe notamment par une mise en pratique des fonctions de templating embarquées avec Python.

Une fois une couche graphique sommaire mise en place, l’auteur bascule dans le monde Java pour présenter le Google Web Toolkit. Cette partie présente une bonne introduction à l’utilisation de ce framework dans le cadre d’une application simple mais l’auteur fait l’impasse sur les outils officiels proposés par la firme de Mountain View (le plug-in Eclipse, le designer Graphique), ainsi que sur des concepts cruciaux comme l’UIBinder.

Après la partie centrée sur l’IHM, on plonge littéralement dans les aspects « persistance de données » avec une présentation des possibilités offertes par les API Datastore. Cette problématique sert aussi de support à Mark pour expliquer plus précisément comment tout cela fonctionne sous le capot dans BigTable. Il passe en revue les problèmes communs rencontrés lorsque l’on essaie de calquer un modèle de persistance relationnel sur l’AppEngine, ce point est d’ailleurs abordé en profondeur par l’auteur à la fois du point de vue du modèle de données Java/Python (design du code) mais aussi du point de vue du paramétrage de l’application (nécessité de définir des indexes).

Ces indexes, utilisés par le Datastore pour effectuer des recherches sur des données présentes dans BigTable, font d’ailleurs l’objet d’un chapitre à part entière dans lequel Mark explique ce qui peut être fait automatiquement par la plate-forme et ce qui ne peut pas l’être.

Une fois les principes de base posés et notre application de chat en ligne presque opérationnelle, on a droit à un tour d’horizon plus ou moins détaillé des différents services transverses proposés par AppEngine :

  • gestion et objectif d’un cache applicatif (MemCache)
  • authentification nativement supportée (UserService)
  • communications externes (XMPP, Mail)
  • gestion des jobs et de l’asynchronisme (Cron, TaskQueue)

Ce denier item, auquel un chapitre entier est dédié, est décrit en profondeur permettant ainsi aux futurs développeurs de faire le choix de la bonne API pour leur problématique. Cette partie apporte d’ailleurs beaucoup d’informations aux personnes qui connaissaient déjà les APIs de bases pour pousser un peu plus loin l’utilisation du SDK.

Pour finir, Mark prend un peu de recul sur la plate-forme et explique en quelques pages les pièges à éviter concernant la sécurité dans les applications déployées sur l’AppEngine.

L’ouverture par laquelle se clôt le bouquin prévoit quelques améliorations qui entre temps sont devenues réalité comme la ChannelAPI ou le support du langage Go.

Bilan

Ce livre propose un passage en revue intéressant des possibilités offertes aux applications hébergées sur l’AppEngine, il pêche néanmoins sur la présentation de l’outillage existant qui se résume à présenter la console en ligne d’administration d’une application et les scripts python utilisées pour déployer une application sans s’intéresser ni à l’industrialisation d’un projet (lancement d’une instance locale, tests unitaires), ni aux facilités offertes par le plug-in Eclipse de Google.

Le livre est très agréable à lire, les extraits de code sont clairement expliqués, les concepts abordés de manière assez simple et couvre toutes les préoccupations de base lorsque l’on cherche à faire une application sur AppEngine.