Je pense que ce qui m'agace dans cette question, c'est que vous l'avez formulée et chargée de "faits" dans le but de recueillir un non définitif.
La vérité est que vous pouvez développer une application App Engine qui reproduit les fonctionnalités de Facebook, Twitter ou Tumblr. Et en supposant que l'application était bien écrite, elle évoluerait pour prendre en charge des centaines de millions d'utilisateurs. La principale raison pour laquelle vous ne voudriez pas (ce qui ne semble pas être une considération pour vous) est le coût d'exécution d'un service de cette taille sur App Engine.
En outre, je ne vois pas comment l'une des restrictions que vous avez répertoriées vous empêcherait de développer une telle application.
Demande / réponse HTTP
- Taille maximale de la demande: 10 Mo - incorrecte, portée à 32 Mo.
- Taille de réponse maximale: 10 Mo - incorrecte, portée à 32 Mo.
- si vous développez une application sociale qui doit fréquemment fournir des pages de plus de 10 Mo, vous vous trompez probablement. De plus, si vous devez fournir un contenu supérieur à 32 Mo, vous pouvez utiliser le blobstore pour des fichiers jusqu'à 2 Go.
- Vous ne pouvez pas accéder au système de fichiers. (oubliez d'enregistrer les téléchargements sur le système de fichiers) - faux. Vous pouvez lire à partir du système de fichiers local et télécharger et lire / écrire des fichiers dans le blobstore.
- Il n'y a aucun moyen que Facebook, Twitter ou Tumblr prennent simplement les téléchargements des utilisateurs et les copient dans un dossier. Pas une solution.
- Toutes les demandes doivent répondre dans les 10 minutes, sinon GAE lèvera DeadlineExceededException - faux. C'est 30 secondes en fait.
- Si vous avez besoin de plus de 30 secondes pour fournir des résultats à la demande d'un utilisateur, vous vous trompez probablement.
- Chaque tâche cron doit être exécutée dans les 30 secondes - c'est faux, c'est 10 minutes.
- Si vous ne pouvez pas diviser une tâche longue en morceaux de 10 minutes, A: vous vous trompez probablement et B: vous pouvez maintenant déplacer cette tâche vers une instance de backend, qui n'a pas de limite de temps sur les demandes.
Les tâches Cron ne peuvent pas utiliser la réduction de carte - jamais utilisé la réduction de carte, mais je pense que cela nécessite une citation.
Chaque GET ou POST vers un autre site est abandonné après 5 secondes. Vous pouvez le configurer pour attendre jusqu'à 10 secondes max. (des serveurs intermédiaires seraient nécessaires pour travailler avec Twitter et Facebook plusieurs fois) - Vrai.
- Si une requête utilisateur vers une API externe prend plus de 10 secondes, c'est probablement une bonne idée de dire à l'utilisateur de réessayer quand même. S'il ne s'agit pas d'une demande utilisateur, vous pouvez réessayer automatiquement la tâche jusqu'à ce que l'API réponde.
- Le client ne peut pas se connecter à GAE via FTP (uniquement HTTP et HTTPS). - Vrai
- Pourquoi est-ce un problème? Pensez-vous qu'une grande entreprise déploie des modifications via FTP?
- Pas de https pour les domaines personnalisés. Uniquement pour les domaines your-app-id.appspot.com. - Vrai.
- C'est pourtant sur la feuille de route.
- Si vous obtenez un afflux d'utilisateurs, vous obtenez une erreur de dépassement de quota - à moitié vrai.
- Si vous budgétez correctement votre application, vous ne verrez jamais d'erreur de dépassement de quota. Le site Royal Wedding était hébergé sur App Engine et a reçu 32 000 demandes par seconde. Aucune erreur de dépassement de quota. Vous avez également vu l'échec de la baleine sur Twitter ou l'erreur de surcapacité sur Tumblr? C'est essentiellement leur erreur de dépassement de quota.
Base de données
- Le comportement de la base de données n'est pas le même dans le développement local que dans les serveurs réels. - Faux
- Si vous voulez dire que l'exécution du magasin de données sur votre ordinateur portable est plus lente que son exécution sur le cluster App Engine, alors true, sinon pas vrai du tout.
- GQL. Rien d'autre. - Faux
- La plupart des développeurs utilisent des filtres db pour interroger le magasin de données. De plus, vous pourriez également dire que MySQL autorise «SQL. Rien d'autre».
- Aucune requête ne peut récupérer plus de 1 000 enregistrements (ça craint sérieusement si vous voulez autoriser votre client à avoir un bouton en un clic, aller hors ligne maintenant) - Faux.
- La limite de 1000 enregistrements a été levée depuis longtemps. En outre, montrez-moi toute page utilisateur sur Facebook, Twitter ou Tumblr qui nécessite plus de 1000 enregistrements pour être restituée.
- Si vous avez besoin d'un accès linéaire à une grande quantité d'enregistrements pour effectuer une opération, vous n'avez pas de chance (les systèmes de Google sont massivement regroupés)
- Je ne sais même pas où tu veux en venir. La plupart des gens considèrent la vitesse du cluster massif de Google comme un énorme avantage du système.
La taille maximale des valeurs Memcache est de 10 Mo. - En fait, c'est 1 Mo par entrée memcache, comme toutes les autres implémentations memcache.
Impossible de faire une recherche de texte simple - Vrai.
- C'est une fonctionnalité qui est sur le pont. La plupart des grands sites ne font pas leur propre indexation de recherche de texte.
- Vous ne pouvez pas rejoindre 2 tables. - Vrai.
- Les développeurs App Engine doivent ajuster leur réflexion d'une requête SQL massive à jointures multiples à plusieurs requêtes individuelles plus petites, ou dénormaliser les données afin que les jointures ne soient pas nécessaires.
- Lent (vous devez savoir comment séparer les tables à l'aide de l'héritage pour pouvoir rechercher dans une table, obtenir la clé puis obtenir son parent afin d'éviter les performances de désérialisation) - ???
- traduction / citation requise.
- Exception d'exécution "Trop d'index" - Vrai
- Il y a une limite au nombre d'index dans une seule application. Je n'ai vu que des applications de recherche universitaire.
- Une entité peut avoir au plus 5000 valeurs de propriété dans un index - True
- Donc, si quelqu'un a plus de 5000 amis, il aurait besoin de deux entités dans le groupe d'amis.
- Les noms de clé du formulaire
__*__
(début et fin avec deux traits de soulignement) sont réservés et ne doivent pas être utilisés par l'application. - Vrai
-- Mais alors quoi?
- Les noms de clés sont limités à 500 octets (encodés en UTF-8, je suppose) - Vrai
- Encore une fois, alors quoi? Les noms clés ne sont pas pour stocker des novelles, ils sont pour identifier de manière unique une entité.
Langue
- python ou java ou Go (tout le reste devrait être traduit dans ces langues) - Half true
- En fait, vous pouvez également exécuter n'importe quel langage qui s'exécute sur la JVM, y compris PHP et JRuby. Je ne sais pas pourquoi c'est un problème, Python et Java sont deux langages puissants avec de nombreux outils, tutoriels et programmeurs expérimentés disponibles.
Problèmes de serveur
- Aucune adresse IP statique (problèmes de limitation et de quota appelant des API tierces) - moitié vrai
- La plupart des API tierces connaissent App Engine et / ou ont une relation avec Google. À quelques reprises, Twitter a accidentellement bloqué App Engine et il est résolu en quelques heures.
- Chaque application est limitée à 3000 fichiers - moitié vrai
- Si vous avez vraiment besoin de plus de 3000 fichiers de code pour votre application Web, vous pouvez utiliser les importations zip (vous pouvez également vous tromper).
- Aucun contrôle du système d'exploitation ou du matériel exécutant l'application Web - Vrai
- App Engine est une plateforme en tant que service . Ne pas avoir à se soucier de l'entretien du système d'exploitation ou du matériel est ce que les gens paient. C'est l'avantage clé d'App Engine, pas une limitation.