Introduction à Google App Engine

| brocoli | Ricky81 |

Cet article constitue une introduction à Google App Engine. Il s'agit de la traduction française de la présentation originale de Google App Engine.

Commentez

- Titre : Introduction à Google App Engine

- Auteurs : brocoli, Ricky81

- Parution : 18 novembre 2009

- Mise à jour : 8 février 2020

- Licence : Copyright ® 2009 brocoli. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Qu'est-ce que Google App Engine ?

- II. L'environnement applicatif

- II-A. L'environnement sécurisé et indépendant (« Sandbox »)

- II-B. L'environnement d'exécution Java (JRE)

- II-C. L'environnement d'exécution Python

- II-D. La base de données (« Datastore »)

- II-E. Les comptes Google (« Google Accounts »)

- II-F. Les services App Engine

- II-F-1. Rapatriement d'URL (« URL Fetch »)

- II-F-2. Messagerie

- II-F-3. Memcache

- II-F-4. Manipulation d'images

- II-F-5. Tâches planifiées

- III. Processus de développement

- IV. Limites et quotas

- V. Pour plus d'informations…

I - Qu'est-ce que Google App Engine ?

Google App Engine permet d'exécuter vos applications web sur l'infrastructure de Google. Les applications App Engine sont faciles à construire, faciles à maintenir, et supportent facilement la montée en charge de votre trafic et de vos besoins croissants de stockage de données. Avec App Engine, il n'y a pas de serveurs à maintenir : vous chargez juste vos applications, et elles sont aussitôt disponibles pour vos utilisateurs.

Vous pouvez mettre à disposition vos applications depuis votre propre nom de domaine (tel que http://www.example.com/) en utilisant Google Apps. Ou, vous pouvez utiliser directement le nom qui vous est fourni sur le domaine appspot.com. Vous pouvez partager votre application avec le monde, ou limiter l'accès aux membres de votre organisation.

Google App Engine supporte les applications écrites dans plusieurs langages de programmation. Avec l'environnement d'exécution Java\x{0099} App Engine (JRE), vous pouvez construire votre application en utilisant les technologies standard Java, incluant la JVM, les servlets Java, et le langage de programmation Java – ou n'importe quel autre langage utilisant un compilateur ou un interpréteur basé sur une JVM, tel que le JavaScript ou le Ruby. App Engine comprend également un environnement d'exécution Python dédié, qui inclut un interpréteur Python rapide et une bibliothèque Python standard. Les environnements Java et Python sont construits de sorte à assurer à vos applications qu'elles fonctionnent rapidement, dans un espace sécurisé, et sans interférences avec les autres applications du système.

Avec App Engine, vous payez seulement pour ce que vous utilisez. Il n'y a pas ni coût de mise en service ni commissions récurrentes. Les ressources que vos applications utilisent, telles que le stockage et la bande passante, sont mesurées en gigaoctets, et facturées à des taux compétitifs. Vous contrôlez le niveau maximum de ressources que peut consommer votre application, de sorte que votre budget ne soit jamais dépassé.

App Engine ne coûte rien pour démarrer. Toutes les applications peuvent utiliser jusqu'à 500 Mo de stockage et assez de CPU et de bande passante pour supporter une demande d'environ 5 millions de pages vues par mois, absolument gratuitement. Quand vous activez la facturation pour votre application, vos limites gratuites sont augmentées, et vous ne payez seulement que les ressources que vous consommez au-delà de ces limites gratuites.

II - L'environnement applicatif

Google App Engine rend facile la construction d'une application qui s'exécute de façon fiable, même sous une forte charge et avec d'importantes quantités de données. App Engine inclut les caractéristiques suivantes :

- mise à disposition d'applications web dynamiques, avec support complet des technologies communes du web ;

- stockage persistant avec recherches, tris et transactions ;

- dimensionnement automatique selon la montée en charge et load-balancing ;

- API pour l'authentification des utilisateurs et envoie de courriers électroniques en utilisant les comptes Google ;

- un environnement de développement local complet qui simule Google App Engine sur votre ordinateur ;

- tâches planifiées pour déclencher des évènements à des horaires spécifiés et à des intervalles réguliers.

Votre application peut s'exécuter dans un des deux environnements : l'environnement Java, et l'environnement Python. Chaque environnement fournit des protocoles standards et des technologies communes pour le développement d'applications web.

II-A - L'environnement sécurisé et indépendant (« Sandbox »)

Les applications s'exécutent dans un environnement sécurisé qui fournit des accès limités au système d'exploitation. Ces limitations permettent à App Engine de distribuer les requêtes web pour l'application à travers de multiples serveurs, et de démarrer et arrêter les serveurs selon la charge. Votre application est isolée dans son propre environnement sécurisé et fiable qui est indépendant du matériel, du système d'exploitation et de la localisation physique du serveur web.

Quelques exemples des limitations de l'environnement sécurisé

- Une application peut accéder aux autres ordinateurs sur Internet seulement via les services de rapatriement d'URL et d'email fournis. Les autres ordinateurs peuvent se connecter à l'application seulement en faisant des requêtes HTTP (ou HTTPS) sur les ports standards.

- Une application ne peut pas écrire sur le système de fichiers. Une application peut lire des fichiers, mais seulement les fichiers chargés avec le code de l'application. L'application doit utiliser la base de données App Engine (« datastore »), memcache ou d'autres services pour toutes les données qui persistent entre les requêtes.

- Le code de l'application s'exécute seulement en réponse à une requête web ou à une tâche dans la cron, et doit dans tous les cas retourner une réponse dans les 30 secondes. Un gestionnaire de requêtes ne peut pas lancer de process ou exécuter du code après que la réponse a été fournie.

II-B - L'environnement d'exécution Java (JRE)

Vous pouvez développer votre application pour l'environnement d'exécution Java en utilisant les outils communs de développement web Java ainsi que les API standards. Votre application interagit avec l'environnement en utilisant le standard des Servlet Java, et peut utiliser des technologies courantes d'applications web telles que les JavaServer Pages (JSP).

Le JRE utilise Java 6. Le SDK Java App Engine supporte le développement d'application utilisant le Java 5 ou 6.

L'environnement inclut la plateforme Java SE Runtime Environment (JRE) 6 et les bibliothèques. Les restrictions de l'environnement indépendant sont implémentées dans la JVM. Une application peut utiliser n'importe quelle propriété de code binaire ou de bibliothèque, tant qu'elle n'outrepasse pas les restrictions de l'environnement. Par exemple, le code binaire qui essaye d'ouvrir une socket ou d'écrire un fichier provoquera une exception d'exécution.

Votre application accède à la plupart des services App Engine en utilisant les API Java standards. Pour le datastore App Engine, le SDK Java inclut une implémentation des Java Data Objects (JDO) et des interfaces Java Persistence API (JPA). Votre application peut utiliser l'API JavaMail pour envoyer des courriers électroniques avec le service de messagerie App Engine Mail. Les API HTTP java.net utilisent le service de rapatriement d'URL App Engine. App Engine inclut également des API bas-niveau pour ses services pour implémenter des adaptateurs additionnels, ou pour les utiliser directement depuis l'application. Consultez les documentations de ces services sur le datastore, memcache, URL fetch, mail, images et Google Accounts API.

Typiquement, les développeurs Java utilisent le langage de programmation Java et les API pour implémenter des applications web pour la JVM. Avec l'utilisation d'interpréteurs ou de compilateurs compatibles avec la JVM, vous pouvez aussi utiliser d'autres langages pour développer des applications web, tels que le JavaScript, le Ruby, ou Scala.

Pour plus d'informations à propos de l'environnement d'exécution Java, consultez L'Environnement d'Exécution Java (JRE).

II-C - L'environnement d'exécution Python

Avec l'environnement d'exécution Python App Engine, vous pouvez implémenter votre application en utilisant le langage de programmation Python, et l'exécuter dans un interpréteur Python optimisé. App Engine inclut des API riches et des outils pour le développement d'applications web en Python, incluant des API de modélisation de données riches, un framework d'application web simple d'utilisation, et des outils pour manager et accéder aux données de votre application. Vous pouvez aussi profiter d'une grande variété de bibliothèques matures et de frameworks pour le développement d'applications web en Python, tels que Django.

L'environnement d'exécution Python utilise Python version 2.5.2. Le support additionnel de Python 3 est envisagé lors d'une prochaine mise à jour.

L'environnement Python inclut la bibliothèque standard Python. Bien sûr, toutes les caractéristiques de la bibliothèque ne fonctionnent pas dans l'environnement sécurisé. Par exemple, un appel à une méthode qui essaye d'ouvrir une socket ou d'écrire un fichier générera une exception. Par commodité, plusieurs modules de la bibliothèque standard dont les caractéristiques de base ne sont pas supportées par le système d'exploitation ont été désactivés, et le code qui les importe provoquera une erreur.

Le code applicatif écrit pour l'environnement Python doit être écrit exclusivement en Python. Les extensions écrites en langage C ne sont pas supportées.

L'environnement Python fournit des API Python riches pour le datastore, Google Accounts, le rapatriement d'URL et les services de messagerie (non traduit). App Engine fournit aussi un framework simple d'application web en Python nommé webapp afin de faciliter le démarrage de votre application.

Vous pouvez charger des bibliothèques tierces dans votre application, tant qu'elles sont implémentées en Python pur et qu'elles ne nécessitent aucun module non supporté de la bibliothèque standard.

Pour plus d'informations à propos de l'environnement d'exécution Python, consultez The Python Runtime Environment.

II-D - La base de données (« Datastore »)

App Engine fournit un service performant de stockage distribué de données qui comprend un moteur de recherche et la gestion des transactions. En même temps que les serveurs web distribués augmentent avec votre trafic, la base de données grossit avec vos données.

Le datastore App Engine n'est pas comme une base de données relationnelle traditionnelle. Les objets de données ou « entités » ont des propriétés. Les recherches peuvent retourner des entités selon un filtre donné et les trier selon les propriétés de leurs valeurs. Les valeurs de ces propriétés peuvent être l'un des types de valeur de propriété supportés.

Les entités Datastore n'ont pas de schéma. La structure de données des entités est fournie et mise en place par le code de votre application. Les interfaces JDO/JPA et l'interface Python datastore incluent les dispositifs pour mettre en place la structure à l'intérieur de votre application. Votre application peut aussi accéder au datastore directement pour mettre en place une structure répondant plus précisément à vos besoins.

Le datastore est fortement consistant et utilise le contrôle d'accès simultané optimiste. Une mise à jour de l'entité se déroule dans une transaction qui est réessayée un nombre de fois fixe si d'autres applications tentent de mettre à jour la même entité simultanément. Votre application peut exécuter plusieurs opérations concernant la base de données dans une seule transaction qui soit réussit entièrement, soit ne réussit pas du tout, assurant l'intégrité de vos données.

Le datastore implémente les transactions à travers son réseau distribué en utilisant des « groupes d'entités ». Une transaction manipule des entités à l'intérieur d'un simple groupe. Les entités du même groupe sont enregistrées ensemble par souci d'efficacité d'exécution des transactions. Votre application peut attribuer des entités à des groupes quand les entités sont créées.

II-E - Les comptes Google (« Google Accounts »)

App Engine permet à une application d'interagir avec l'authentification des comptes utilisateurs Google. Votre application peut autoriser un utilisateur de se connecter avec un compte Google, et accéder à l'adresse email et au nom affichable associé avec le compte. En utilisant les comptes Google, l'utilisateur utilise votre application plus rapidement, car il n'a pas besoin de créer un nouveau compte. Cela vous évite également les travaux d'implémentation d'un système d'authentification juste pour votre application.

Si votre application tourne sur Google Apps, elle peut utiliser les mêmes dispositifs avec les membres de votre organisation et avec les comptes Google Apps.

L'API des utilisateurs (Users API) peut aussi dire à l'application si l'utilisateur actuel est un administrateur déclaré pour cette application. Cela vous permet facilement de gérer une zone de votre site réservée aux administrateurs.

Pour plus d'informations à propos de l'intégration de Google Accounts, consultez the Users API reference.

II-F - Les services App Engine

App Engine fournit une variété de services qui vous permet d'exécuter des opérations communes pour manager votre application. Les API suivantes sont fournies pour accéder à ces services.

II-F-1 - Rapatriement d'URL (« URL Fetch »)

Les applications peuvent accéder aux ressources sur Internet, telles que les services web ou d'autres données, en utilisant le service de rapatriement d'URL App Engine. Le service de rapatriement d'URL récupère des ressources web en utilisant la même infrastructure à haute vitesse de Google que celle qui récupère les pages web pour beaucoup de produits Google.

II-F-2 - Messagerie

Les applications peuvent envoyer des courriers électroniques en utilisant le service de messagerie App Engine. Le service de messagerie utilise l'infrastructure de Google pour envoyer des courriers électroniques.

II-F-3 - Memcache

Le service Memcache fournit à votre application un cache mémoire de clés-valeurs à haute performance qui est accessible par plusieurs instances de votre application. Memcache est utile pour les données qui n'ont pas besoin de persistance et des caractéristiques transactionnelles du datastore, telles que les données temporaires ou les données copiées depuis le datastore vers le cache pour des accès très rapides.

II-F-4 - Manipulation d'images

Le service Image permet à votre application de manipuler des images. Avec ses API, vous pouvez redimensionner, rogner, tourner et inverser des images aux formats JPEG et PNG.

II-F-5 - Tâches planifiées

Le service Cron vous permet de planifier des tâches à exécuter à des intervalles réguliers. Pour plus d'informations, consultez les documentations cron pour Python ou Java.

III - Processus de développement

Les kits de développement logiciel App Engine (SDK) pour Java et Python incluent chacun un serveur d'application web qui émule tous les services App Engine sur votre ordinateur local. Chaque SDK inclut toutes les API et bibliothèques disponibles sur App Engine. Le serveur web simule également la sécurisation et l'indépendance de l'environnement, incluant les vérifications d'essais d'accès aux ressources du système non autorisées dans l'environnement d'exécution App Engine.

Chaque SDK inclut aussi un outil pour charger son application sur l'App Engine. Une fois que vous avez créé le code de votre application, les fichiers statiques et les fichiers de configurations, vous pouvez exécuter l'outil pour charger vos données. L'outil vous demande l'adresse email et le mot de passe de votre compte Google.

Quand vous construisez une nouvelle modification majeure d'une application qui fonctionne déjà sur App Engine, vous pouvez mettre en ligne la nouvelle modification en tant que nouvelle version. L'ancienne version continuera de servir les utilisateurs jusqu'à ce que vous passiez à la nouvelle version. Vous pouvez tester la nouvelle version sur App Engine tandis que l'ancienne version continue de fonctionner.

Le SDK Java fonctionne sur n'importe quelle plateforme avec Java 5 ou Java 6. Le SDK est disponible en fichier Zip. Si vous utilisez l'environnement de développement Eclipse, vous pouvez utiliser le Plugin Google pour Eclipse pour créer, tester, et charger vos applications App Engine. Le SDK inclut également des outils en ligne de commande pour exécuter le serveur de développement et charger votre application sur App Engine.

Le SDK Python est implémenté en Python pur, et s'exécute sur n'importe quelles plateformes possédant Python 2.5, telles que Windows, Mac OS X et Linux. Le SDK est disponible en fichier Zip, et les programmes d'installation sont disponibles pour Windows et Mac OS X.

La Console d'Administration est une interface web pour gérer vos applications tournant sur App Engine. Vous pouvez l'utiliser pour créer de nouvelles applications, configurer des noms de domaines, sélectionner quelle version de votre application doit fonctionner, examiner les accès et les logs d'erreurs, et parcourir vos données du datastore via l'utilisation de l'outil de visualisation de données.

IV - Limites et quotas

Non seulement la création d'une application App Engine est facile, mais c'est également gratuit ! Vous pouvez créer un compte et publier votre application que les visiteurs peuvent utiliser de suite sans coût, et sans engagement. Une application d'un compte gratuit peut utiliser jusqu'à 500 Mo de stockage et servir 5 millions de pages vues par mois. Quand vous êtes prêt pour plus, vous pouvez activer la facturation, spécifier votre budget journalier maximum, et allouer votre budget pour chacune des ressources selon vos besoins.

Vous pouvez publier jusqu'à 10 applications par compte.

Chaque application se voit allouer des ressources avec des limites ou « quotas ». Un quota détermine pour chacune des ressources une limite que l'application peut utiliser durant une journée calendaire. Dans un futur proche, vous pourrez ajuster quelques-uns de ces quotas en achetant des ressources additionnelles.

Quelques caractéristiques imposent des limites indépendantes aux quotas afin de protéger la stabilité du système. Par exemple, quand une application est appelée par une requête web, elle doit fournir une réponse dans les 30 secondes. Si l'application prend trop de temps, le traitement est terminé et le serveur retourne un code d'erreur à l'utilisateur. Le délai d'expiration est dynamique, et peut être raccourci si un gestionnaire de requête atteint fréquemment cette limite afin de préserver les ressources.

Un autre exemple de limite de service est le nombre de résultats renvoyés par une recherche dans la base de données. Une recherche peut retourner au plus 1000 résultats. Celles qui devraient retourner plus de résultats en retourneront seulement 1000. Dans ce cas, une requête qui exécute une telle recherche devrait prendre plus de 30 s pour s'exécuter et donc dépasser le temps autorisé. Cependant, cette limite permet de limiter les ressources du datastore.

Les tentatives de corruption ou d'abus de quotas, telles que l'utilisation d'applications sur plusieurs comptes qui fonctionnent ensemble, sont une violation des Conditions Générales du Service, et peuvent résulter à la désactivation des applications ou à la fermeture du compte.

Pour obtenir la liste des quotas et des explications sur le système de quota, y compris les quotas pouvant être augmentés par l'activation de la facturation, consultez Quotas.

V - Pour plus d'informations…

Pour plus d'informations à propos de Google App Engine :

- Visionner la vidéo Campfire One ou lisez le compte-rendu.

- Visionner la vidéo de la démo de App Engine.

- Télécharger le SDK, Ouvrez un compte Google, puis lisez le Guide de Démarrage Java et réalisez le tutoriel.

- Parcourez la App Gallery pour des exemples d'applications construites avec App Engine.

- Explorez le reste de la documentation App Engine.