Panorama des différentes offres de cloud computing : Google App Engine
Dans un premier article nous avons présenté l'offre cloud d'Amazon Web Services. Nous allons aujourd'hui nous intéresser à son concurrent Google avec le Google App Engine. La forme sera ici similaire au premier article : il s'agit d'une cartographie où la description de chaque service fourni apparaît lorsque l'on survole la zone en question. Elle est également accessible en bas de page (cliquer sur la zone pour l'atteindre). Les zones de couleur claire représentent les fonctionnalités internes au fournisseur, les zones de couleur bleue les services interrogeables par l'utilisateur.
![AWS](GAE.png)
Conclusion
L'offre de Google a un positionnement différent de l'offre d'Amazon. Le contrat de service proposé repose entièrement sur une plateforme dans laquelle seront déployées des applications. Les services sont conçus pour être accessibles à travers les API Java ou Python mises à disposition. L'utilisateur de Google App Engine n'a pas à gérer les détails d'infrastructure (provisionning de machine même virtuelle), gestion du système d'exploitation. Pour que les applications déployées soient directement scalables, Google AppEngine impose des contraintes fortes sur l'utilisation des API : le temps de traitement est limité, le dataStore, un stockage faiblement relationnel, est le seul stockage persistant disponible sur cette plateforme. Ainsi autant une application conçue pour une machine virtuelle pourra fonctionner sans grande modification sur Amazon, autant les applications devront être spécialement conçues pour Google AppEngine. Les deux grandes forces de cette plateforme sont une offre d'appel gratuite, l'image de marque de Google et une promesse de scalabilité quasi illimitée. Offrir un déploiement gratuit lui permet d'être la plateforme de cloud la plus massivement testée par les développeurs. A l'inverse, Amazon, plus proche du modèle étude/production, est plus rassurant pour les entreprises. L'offre Google peut inquiéter du fait de la dépendance totale au géant du web mais ce problème de confiance se résoudra très certainement avec le temps et le nombre d'acteurs visibles utilisant cette plateforme.
La suite de ce document contient une version fixe du texte présent dans les info-bulles. Il s'agit du texte visualisé lorsque vous cliquez sur une zone de la cartographie.
Début de la version imprimable
Google App Engine : points généraux
Deux langages possibles :
- Python
- Java (certaines classes du JDK ne sont pas supportées. La liste des classes disponibles peut être consultée dans la documentation.)
Quotas : Ils existent à deux niveaux
- Quota fixé par l’utilisateur pour ne pas dépasser un budget
- Quota imposé par Google App Engine pour préserver ses ressources. Dans ce second cas les valeurs en version gratuite limitent l'usage à environ 5 millions de pages vues par mois. Les valeurs en version payante sont beaucoup plus élevées et peuvent être augmentées à la demande.
Facturation L'utilisation de Google App Engine est facturé en fonction :
- Des débits entrant et sortant
- Du temps CPU
- Des données stockées
- Des emails envoyés
DataStore
Description Stockage persistant de données structurées
Caractéristiques
- Le dataStore est implémenté sur la BigTable de Google (elle-même basée sur le GFS). BigTable est une Map distribuée, persistante multi-dimensionnelle (indexée par clé de ligne, de colonne et un timestamp). Elle se base sur un stockage B-Tree avec une tablette mère (méta-données) et un niveau de table.
- Il s'agit d'un stockage sans schéma, typé (types d’une base de données classique en natif).
- Le dataStore stocke des entités avec des propriétés et des groupes d’entités (owned relationship). Une propriété peut contenir la clé d’une entité à l’intérieur du groupe (unowned relationship).
- DataStore est transactionnel pour la mise à jour d’un groupe unique.
- Accès peut se faire par API de bas niveau ou via JPA ou JDO en Java. Cependant les relations many to many ne sont pas supportées et les jointures disponibles uniquement à l'intérieur d'un groupe. L'opérateur
!=
n'est pas supporté et une seule inégalité est possible par requête. - L'indexation se fait par ligne et propriété de façon automatique. Il est possible de définir des index composites (stockés dans 3+1 Bigtables partagées)
Facturation et quotas
- Facturation par quantité stockée (1 GB gratuit)
- Quotas sur : le nombre d’appels, la quantité stockée, la quantité échangée, la consommation CPU
MemCache
Description Stockage en mémoire de paires clé/valeur
Caractéristiques
- C’est une implémentation différente mais réalisée par le développeur de MemCached.
- MemCache est accessible par une API JCache et une API de plus bas niveau.
- La valeur cachée ne doit pas excéder 1 MB
Quotas Quotas sur : le nombre d’appels, la quantité échangée
URLFetch et Google Secure Connector
Description Accès à des données situées chez Google via Internet
Caractéristiques
- Accès en http ou https
- Accès derrière un firewall à l’aide du Google Secure Connector
- Quota à des requêtes de 1MB
- Timeout à 2 s.
Quotas Quotas sur : le nombre d’appels, la quantité échangée
Images
Description Manipulation d’images
Caractéristiques
- Redimensionnement, rotation, bascules horizontale et verticale, rognage, ajustement des couleurs et du contraste (service nommé I’m feeling lucky)
- Supporte les formats JPEG, PNG, GIF (et animé), BMP, TIFF et ICO
- Images limitées à 1MB
Quotas Quotas sur : le nombre d’appels, le nombre de transformations, la quantité échangée
Google Accounts
Description Service d’authentification et d’habilitation
Caractéristiques
- Gestion de l’authentification à l’aide du compte google
- Redirection fournie pour se logger et se délogger, pour obtenir des informations sur le compte (e.g. ce compte est admin)
- Peut stocker un compte directement dans la DataStore
- Sécurisation des pages via dans le web.xml. Un seul rôle particulier est disponible : admin
Quota Aucun Quota
Description Service d'envoi de mails
Caractéristiques
- Accessible via Java Mail API (
javax.mail
) - Il utilise l’infrastructure SMTP de google
- Dans le serveur du SDK de développement le mail est simplement loggé
Facturation et Quotas
- Facturation par mail envoyé (2000 gratuits)
- Quotas sur le nombre d’appels, sur le nombre d’envois, sur le nombre de mails à des administrateurs d’application, sur la taille du corps et des attachements
XMPP
Description Service de messagerie instantanée
Caractéristiques
- XMPP est le protocole de messagerie instantanée utilisé par GTalk
- Google App Engine permet à l’application de recevoir ou d’envoyer des messages XMPP, d’envoyer ou de répondre à des invitations
- Cela permet d’écrire des bots, d’interagir par chat avec l’application, etc.
- La réception d’un message se traduit par l’appel d’une URL
- L’application envoie et reçoit des messages d’adresses du type app-id@appspot.com et anything@app-id.appspotchat.com
- Possibilité de gérer la notion de ressource dans une adresse XMPP (node@domaine/resource)
Facturation et quotas
- Facturation par CPU consommée et par débit entrant et sortant
- Quotas sur la taille du message, le nombre d’appels par jour, la quantité échangée et le débit, le nombre de destinataires et d’invitations
Cron Jobs
Description Ordonnanceur
Caractéristiques
Appelle une URL au déclenchement. Ces URL peuvent être sécurisées car le CRON a les droits admin
Se configure par un fichier
WEB-INF/cron.xml
Il est possible de mettre à jour uniquement les crons (AppCfg update_cron)
Ne fonctionne pas dans le serveur du SDK de développement
Format proche de l’anglais
Quota 20 tâches planifiées par application
Tasks queues (bêta)
Description Service d’exécution d’une file de tâches (queue + daemon)
Caractéristiques
Définition des fiches au format yaml
Une tâche est représentée par une requête (URL, paramètres, en-têtes, corps)
Possibilité de nommer une tâche (pour garantir l’unicité)
Les requêtes sont soumises aux mêmes quotas que toutes les requêtes (temps de traitement maximum de 30 s. …)
Les requêtes peuvent être protégées, l’exécuteur a les droits d’administration
La requête est rejouée si son code retour n’est pas 200
Il est prévu que chaque requête soit exécutée une seule fois mais GAE ne le garantit pas (un rejeu peut arriver en cas de crash)
Possibilité de configurer les files (ex. réglage du débit)
Les tâches sont traitées en FIFO (sans que cela soit une garantie) et peuvent être traitées simultanément
Une file par défaut est disponible (par défaut 5 tâches par seconde)
Facturation et Quotas
- Tâches de 10 KB, 10 files actives
- Limites par le nombre de tâches par jour et par le débit (10 tâches par seconde)
SDK
Le SDK de Google App Engine est publié en Open Source. Il fournit les librairies requises et un serveur de développement permettant de tester l'application sur tout poste de travail supportant le langage Java.
Console
La console du Google App Engine permet d'administrer les applications. Parmi les fonctions disponibles on notera :
- La gestion de l'application (configuration de son identifiant, des développeurs autorisés, suppression)
- Une interface de consultation des données du DataStore via l'utilisation de requêtes GQL
- La consultation des logs
- La gestion de la configuration (index du DataStore, files d'attente et tâches planifiées)
- La consultation des statistiques de l'application (ce qui permet de surveiller si l'application risque de dépasser les quotas fixés)
- La gestion de la facturation
Logs
Fonctionnalité interne à Google App Engine Ils sont entièrement gérés par le Google App Engine. Les logs configurés dans l'application sont directement consultables dans la console.
BigTable
Fonctionnalité interne à Google App Engine sur laquelle repose le DataStore. L'utilisateur n'interagit pas avec ce service. Le caractère non relationnel de la BigTable transparait cependant au travers des contraintes imposées par le DataStore. Le blog de google nous informe sur ce choix.
Google File System
Fonctionnalité interne à Google App Engine sur laquelle repose la BigTable. C'est donc une brique très bas niveau de l'infrastructure de Google. L'utilisateur n'interagit pas avec ce service. Son utilisation par la BigTable ainsi que son architecture interne sont décrites dans des publications de Google..