juillet
2009
Google App Engine est le système de Cloud Computing de Google. Par rapport à ses concurrents, il innove en quelques points :
- Aucune configuration du serveur ni de la base de donnée : on dépose son application dans un conteneur.
- Il n’y a pas à choisir dans une gamme de serveurs : les requêtes seront exécutées par Google, et on sait qu’ils le font bien
- La facturation est faite selon les coûts réels : si votre application fait un bide, vous ne payez rien
- L’application est développée en un seul langage : Python, ou Java depuis Mars
Cette différentiation colle vraiment à l’innovation. Un bon programmeur Java avec une idée peu créer son application sans perdre de temps à configurer linux+apache+ssl ni faire un prévisionnel des capacités de serveur. Avec Edupassion.com, je sais de quoi je parle. Et si personne ne se connecte, il n’y a pas de coût de serveur inutile, et là aussi je sais… euh passons.
Malheureusement, concrètement, App Engine en Java ne marche pas.
Il est très simple de créer une application HTML, avec Ajax et même GWT, puis de l’uploader. C’est ce que j’ai fait pour le site de mon entreprise, Robusta Web. Si le site en fonctionne pas, essayez… trois minutes plus tard ! D’après le log, à cause d’une jsp déclanchant com.google.apphosting.api.DeadlineExceededException et java.security.PrivilegedActionException. Il semble que la security passe ou bloque de temps à autre. Etonnnant !
J’ai tout de suite essayé d’installer JAX-RS avec Jersey, mais non, pas possible, le container refuse. On propose une version adaptée, qui marche un peu, mais bloque aléatoirement l’accès au site – cette fois-ci avec une vraie exception. Normal, c’est du bidouillage.
Plus gênant est l’utilisation des JSP et son mapping. http://www.robustaweb.com/myjax/bond/ fonctionne, mais pas http://www.robustaweb.com/myjax/bond . Différence subtile, pas contraire aux spécifications assez muettes, mais juste incroyable.
Mais le grand problème est l’accès aux données. D’une part à cause des couches successives JPA->JDO->Implementation Google->DataNucleus->BigTable, comme l’avait déjà fait remarqué Bruno Marchesson. Pour faire court, quoi que vous tentiez, cela échouera :).
J’ai quand même réussi à « persister » quelques objets, et même à les lire. Mais s’il existe peut-être des logiciels permettant de visualiser ces données, aucun n’est clairement référencé. Alors qu’avec une table MySql, vous n’avez aucun problème à savoir ce que vos tests ont générés.
Pour l’instant App Engine me parait donc inutilisable dès qu’il s’agit de sauver des données. Il semble dangereux d’y mettre un simple site avec des JSP. Quelques pages HTML peut-être….
Mais n’oublions pas que App Engine est en Early Access, et je suis plutôt optimiste : Google developpe très bien ses produits quand ils trouvent un public en face. J’y retournerai dans six mois.
Oui,
J’y ai remis mon site pas trop à jour : http://robustaweb.appspot.com/
Il y a maintenant un peu d’outillage pour voir ses données lorsque l’on développe son application sur l’ordinateur local. Ce petit plus aide beaucoup.
JAX-RS fonctionne correctement (http://blog.iparissa.com/google-app-engine-jax-rs-jersey/). Par contre, comme le serveur coupe après 30 secondes sans requête, le redémarrage de la servlet JaxRS peut être un peu long.
A noter aussi qu’il est maintenant impossible de mettre gratuitement son nom de domaine (robustaweb.com), je crois qu’il faut passer par la section Google Apps pro.
Bonjour,
bon article. Plus d’un an après, l’avez vous retesté ?