Des commentaires sur l'utilisation de Google App Engine? [fermé]


125

Vous cherchez à faire un très petit projet de côté rapide et sale. J'aime le fait que Google App Engine fonctionne sur Python avec Django intégré - me donne une excuse pour essayer cette plate-forme ... mais ma question est la suivante:

Quelqu'un a-t-il utilisé le moteur d'application pour autre chose qu'un problème de jouet? Je vois de bons exemples d'applications, donc je suppose que c'est assez bon pour la vraie affaire, mais je voulais obtenir des commentaires.

Toute autre note de succès / échec serait géniale.


8
devrait être wiki de la communauté
SilentGhost

Réponses:


63

J'ai essayé le moteur d'application pour ma petite application de surveillance des tremblements de terre http://quakewatch.appspot.com/

Mon objectif était de voir les capacités du moteur d'application, voici donc les principaux points:

  1. il ne vient pas par défaut avec Django, il a son propre framework web qui est pythonic a un répartiteur d'URL comme Django et il utilise des modèles Django Donc si vous avez Django exp. vous le trouverez facile à utiliser
  2. Vous ne pouvez pas exécuter de processus de longue durée sur le serveur, ce que vous faites est de répondre à la demande et ce qui devrait être rapide sinon appengine le tuera Donc si votre application a besoin de beaucoup de traitement backend, appengine n'est pas le meilleur moyen sinon vous devrez faire le traitement sur votre propre serveur
  3. Mon application quakewatch a une fonction d'abonnement, cela signifie que j'ai dû envoyer par e-mail les derniers tremblements de terre au fur et à mesure qu'ils se produisent, mais je ne peux pas exécuter un processus d'arrière-plan dans le moteur d'application pour surveiller la nouvelle solution de tremblement de terre ici consiste à utiliser un service tiers comme pingablity.com qui peut connectez-vous à l'une de vos pages et qui exécute le mailer d'abonnement mais ici aussi vous devrez faire attention à ne pas passer beaucoup de temps ici ou à diviser la tâche en plusieurs morceaux
  4. Il fournit à Django des capacités de modélisation similaires, mais le backend est totalement différent, mais pour un nouveau projet, cela ne devrait pas avoir d'importance.

Mais dans l'ensemble, je pense que c'est excellent pour créer des applications qui ne nécessitent pas beaucoup de traitement en arrière-plan.

Modifier: les files d'attente de tâches peuvent désormais être utilisées pour exécuter le traitement par lots ou les tâches planifiées

Edit: après avoir travaillé / créé une vraie application sur GAE pendant un an, maintenant mon avis est qu'à moins que vous ne fassiez une application qui doit évoluer à des millions et des millions d'utilisateurs, n'utilisez pas GAE. La maintenance et l'exécution de tâches triviales dans GAE est un casse-tête en raison de la nature distribuée.Pour éviter les erreurs de dépassement des délais, compter les entités ou effectuer des requêtes complexes, il faut un code complexe, de sorte que les petites applications complexes doivent s'en tenir à LAMP.

Modifier: Les modèles doivent être spécialement conçus en tenant compte de toutes les transactions que vous souhaitez effectuer à l'avenir, car les entités uniquement dans le même groupe d'entités peuvent être utilisées dans une transaction et cela rend le processus de mise à jour de deux groupes différents un cauchemar, par exemple, transférer de l'argent de l'utilisateur1 à l'utilisateur2 en transaction est impossible à moins qu'ils ne soient dans le même groupe d'entités, mais en faire le même groupe d'entités peut ne pas être le meilleur pour des mises à jour fréquentes .... lire ceci http://blog.notdot.net/2009/9/Distributed-Transactions- sur App Engine


6
Le processus par lots peut maintenant être exécuté sur GAE
Anurag Uniyal

2
Découvrez également la nouvelle API Python Task Queue dans la documentation App-Engine.
Jason Rikard

11
Une grande partie de ces informations est obsolète - Django 0.96 est maintenant intégré dans GAE en date du 17 Juillet 2009
ine

3
Djanjo 1.0.x est également inclus dans GAE maintenant. Vous pouvez choisir quelle révision de Django vous voulez.
Laurent

5
Juste une autre mise à jour, Django 1.1 est maintenant disponible avec GAE ainsi que les versions précédentes.
SingleNegationElimination

36

J'utilise GAE pour héberger plusieurs applications à fort trafic. Comme de l'ordre de 50-100 req / sec. C'est génial, je ne saurais trop le recommander.

Mon expérience précédente avec le développement Web était avec Ruby (Rails / Merb). L'apprentissage de Python était facile. Je n'ai pas joué avec Django ou Pylons ou tout autre framework, j'ai juste commencé à partir des exemples GAE et construit ce dont j'avais besoin à partir des bibliothèques d'applications Web de base fournies.

Si vous êtes habitué à la flexibilité de SQL, la banque de données peut prendre un certain temps pour s'y habituer. Rien de trop traumatisant! Le plus gros ajustement consiste à s'éloigner des JOIN. Vous devez vous débarrasser de l'idée que la normalisation est cruciale.

Ben


23

L'une des raisons convaincantes que j'ai rencontrées pour utiliser Google App Engine est son intégration avec Google Apps pour votre domaine. Il vous permet essentiellement de créer des applications Web personnalisées et gérées qui sont limitées aux connexions (contrôlées) de votre domaine.

La plupart de mon expérience avec ce code consistait à créer une simple application de suivi du temps / des tâches. Le moteur de modèles était simple et rendait pourtant une application multi-pages très accessible. L'API de connexion / de sensibilisation des utilisateurs est également utile. J'ai pu créer un paradigme de page publique / page privée sans trop de problèmes. (un utilisateur se connectait pour voir les pages privées. Un utilisateur anonyme ne voyait que la page publique.)

J'étais juste en train d'entrer dans la partie datastore du projet quand je me suis retiré pour du "vrai travail".

J'ai pu accomplir beaucoup (ce n'est pas encore fait) en très peu de temps. Comme je n'avais jamais utilisé Python auparavant, c'était particulièrement agréable (à la fois parce que c'était un nouveau langage pour moi, et aussi parce que le développement était encore rapide malgré le nouveau langage). J'ai rencontré très peu de choses qui m'ont amené à croire que je ne pourrais pas accomplir ma tâche. Au lieu de cela, j'ai une impression assez positive des fonctionnalités et des fonctionnalités.

C'est mon expérience avec ça. Peut-être que cela ne représente pas plus qu'un projet de jouet inachevé, mais cela représente un essai éclairé de la plate-forme, et j'espère que cela aidera.


Presque identique à ma situation - en dehors du "vrai travail" mais toujours quelque chose que je dois faire et avoir fonctionnel à la fin.
agartzke le

Pareil ici. De plus, le gros avantage est que l'installation de l'environnement de développement est un jeu d'enfant (vous codez en une minute). Même chose pour les déploiements.
Jilles

12

L'idée "App Engine exécutant Django" est un peu trompeuse. App Engine remplace l'ensemble de la couche de modèle Django, alors soyez prêt à passer du temps à vous acclimater au magasin de données App Engine, qui nécessite une manière différente de modéliser et de penser les données.


Bon point - il semble qu'il reprenne par défaut le templating de Django, mais pas nécessairement le reste.
agartzke

7

J'ai utilisé GAE pour construire http://www.muspy.com

C'est un peu plus qu'un projet de jouet mais pas trop complexe non plus. Je compte toujours sur quelques problèmes à résoudre par Google, mais dans l'ensemble, le développement du site Web a été une expérience agréable.

Si vous ne voulez pas traiter de problèmes d'hébergement, d'administration de serveur, etc., je peux certainement le recommander. Surtout si vous connaissez déjà Python et Django.


7

Je pense qu'App Engine est plutôt cool pour les petits projets à ce stade. Il y a beaucoup à dire pour ne jamais avoir à se soucier de l'hébergement. L'API vous pousse également à créer des applications évolutives, ce qui est une bonne pratique.

  • app-engine-patch est une bonne couche entre Django et App Engine, permettant l'utilisation de l'application auth et plus encore.
  • Google a promis un SLA et un modèle de tarification d'ici la fin de 2008.
  • Les demandes doivent se terminer en 10 secondes, les sous-demandes aux services Web doivent se terminer en 5 secondes. Cela vous oblige à concevoir une application rapide et légère, déchargeant un traitement sérieux vers d'autres plates-formes (par exemple un service hébergé ou une instance EC2).
  • D'autres langues seront bientôt disponibles! Google ne dira pas lequel cependant :-). Mon argent est sur Java ensuite.

à partir de février 2009, bon nombre des limitations ci-dessus ont été assouplies.
Husayt

3
Si quelqu'un peut modifier cette réponse, ce serait bien de refléter que Java est en effet le prochain langage disponible.
JasonSmith

1
@jhs Votre commentaire le fait bien!
après

Et la langue Go est désormais également prise en charge!
davewasthere

6

Cette question a reçu une réponse complète. Ce qui est bon. Mais une chose mérite peut-être d'être mentionnée. Le moteur de l'application Google a un plugin pour l'ide d'éclipse, ce qui est un plaisir de travailler.

Si vous faites déjà votre développement avec eclipse, vous en serez très heureux.

Pour déployer sur le site Web du moteur d'application Google, tout ce que j'ai à faire est de cliquer sur un petit bouton - avec le logo de l'avion - super.


4

Jetez un œil au jeu SQL , il est très stable et a en fait repoussé les limites de trafic à un moment donné, de sorte qu'il était limité par Google. Je n'ai vu que de bonnes nouvelles concernant App Engine, à part l'hébergement de votre application sur des serveurs que quelqu'un d'autre contrôle complètement.


Le jeu sql est passé de Google App Engine à un serveur privé.
systempuntoout

4

J'ai utilisé GAE pour créer une application simple qui accepte certains paramètres, formats et envoie des e-mails. C'était extrêmement simple et rapide. J'ai également réalisé quelques benchmarks de performances sur le datastore GAE et les services memcache ( http://dbaspects.blogspot.com/2010/01/memcache-vs-datastore-on-google-app.html ). Ce n'est pas si rapide. Mon opinion est que GAE est une plate-forme sérieuse qui applique une certaine méthodologie. Je pense que cela évoluera vers la plate-forme véritablement évolutive, où les mauvaises pratiques ne sont tout simplement pas autorisées.


4

J'ai utilisé GAE pour mon site de jeux flash, Bearded Games . GAE est une excellente plateforme. J'ai utilisé des modèles Django qui sont tellement plus faciles que les anciens jours de PHP. Il est livré avec un excellent panneau d'administration et vous donne de très bons journaux. Le magasin de données est différent d'une base de données comme MySQL, mais il est beaucoup plus facile à utiliser. La construction du site a été simple et directe et ils ont beaucoup de conseils utiles sur le site.


3

J'ai utilisé GAE et Django pour créer une application Facebook. J'ai utilisé http://code.google.com/p/app-engine-patch comme point de départ car il prend en charge Django 1.1. Je n'ai essayé d'utiliser aucune des commandes manage.py parce que je supposais qu'elles ne fonctionneraient pas, mais je ne l'ai même pas regardée. L'application avait trois modèles et utilisait également pyfacebook, mais c'était l'étendue de la complexité. Je suis en train de créer une application beaucoup plus compliquée dont je commence à bloguer sur http://brianyamabe.com .


J'ai commencé à utiliser manage.py pour exécuter le serveur et aussi pour exécuter certains tests unitaires. L'exécution du serveur fonctionne bien, mais comme mon application fonctionne comme une application Facebook, ce n'est pas très utile (j'ai besoin d'un serveur hébergé auquel Facebook fait référence). Les tests unitaires ont également fonctionné et ont même fonctionné avec des luminaires. Cependant, je n'ai pas pu faire fonctionner les appareils référencés par d'autres modèles. Je n'ai toujours pas compris s'il s'agit d'un problème avec mon appareil ou d'un problème avec app-engine-patch.
byamabe
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.