insideIT.fr : le blog des architectes IT de SFEIR

Aller au contenu | Aller au menu | Aller à la recherche

mercredi 21 octobre 2009

Retour journée IBM Forum Paris

J'ai assisté à l'IBM Forum Paris aujourd'hui, le sujet c'était le "Cloud Computing".

Pour commencer, quelles étaient mes motivations ? et bien, mon objectif premier était de pouvoir découvrir l'offre IBM cloud et notamment celle-ci http://www.ibm.com/cloud/developer, Cependant, il n'est toujours pas possible de créer un compte du fait que France ne figure pas encore dans la liste des pays sur le formulaire d'inscription et ça ne devrait plus tarder selon une confirmation que j'ai obtenu de la part d'IBM après les avoir contacté.

L'autre objectif était de comprendre l'offre de IBM et ce que cela allait changer pour les entreprises et notamment pour celles qui sont partenaires avec IBM.

Et le dernier et pas le moindre, la vision qu'IBM a du "Cloud Computing".

Un petit Historique

IBM est une entreprise novatrice dans le domaine du service depuis plusieurs années, c'est aussi une société avec une approche "globaliste" des problèmes de l'entreprise, citons par exemple les Main Frame,.. IBM est aussi un acteur historique dans le monde de l'informatique, son omniprésence et sa notoriété ne sont plus discutables. C'est avec cette logique, que cette dernière est indirectement, puis explicitement précurseur dans le domaine du Cloud Computing : "j'ai entendu parler du Grid Computing depuis déjà plusieurs années", IBM possède aussi toute l'infrastructure matérielle et logicielle nécessaire pour parfaire l'offre.

L'offre Cloud Computing IBM

David Parker (plus d'information), durant la plénière matinale, a fait le tour de l'offre qui selon ma compréhension s'articule autour de trois axes :

Le Cloud Privé (Cloudburst (R))

Selon la présentation qui a duré environ 1H, je suis ressorti avec ce qui suit : le nom de la solution : Cloudburst, une solution qui agrège toute l'expérience de IBM tant sur le coté hardware (BladeCenter (R) ) que sur le côté logiciel "une solution complète qui permet une montée en charge 'maîtrisée' voici une présentation vidéo de l'offre cloud testing"

Ce que j'en pense, et bien pour faire un rapprochement j'ai tendance à penser que c'est une nouvelle forme de mainframe, la différence réside dans le fait que l'infrastructure est mutualisée entre plusieurs entreprises ou filiales de la même entreprise avec une gestion plus souple des ressources, mais la vérité est ailleurs. Il y a bien une phrase qui a été reprise par tous les présentateurs et qui est la suivante : "...et dans tous les cas, IBM est en mesure de prendre en charge la gestion et l'administration de l'infrastructure", ce qui m'indique que IBM veut à terme pousser les entreprises à déléguer leurs infrastructures chez elles et donc proposer des contacts de maintenance. Je ne vais pas rentrer dans la critique parce que ce n'est pas le coeur du billet et que je ne maîtrise pas le modèle économique d'IBM.

IBM apps

iNotes [plus d'informations ici]est l'offre d'IBM en terme de Web Desktop, le coût est de 3$ (Google apps coûterait selon l'orateur 4$) donc moins 1$, je n'ai pas eu le temps de tester l'application mais selon les écrans que j'ai pu apercevoir ça ressemble à la version web de Notes.

Je pense qu'à terme, les solutions Web Desktop seront de la même qualité, la différence sera donc la disponibilité ainsi que la mobilité.

Le Stockage et la Virtualisation C'est un monde qui m'est un peu inconnu, mais ce que j'ai compris c'est que c'est une partie très importante de l'offre globale "Cloud Computing".

En résumé

La majeure partie de l'offre "Cloud Computing" de IBM est essentiellement destinée aux entreprises. Parmi leurs objectifs, la prise en charge de l'infrastructure des entreprises dans l'optique de réduction des coûts, la montée en charge et la disponibilité 24/24 7/7. Ca s'appelle "Cloud Privé", il y a bien un intermédiaire qui est "Cloud Hybride".

Je ferai un retour complet sur l'utilisation de la plateforme dès que mon compte IBM cloud sera activé.

Ressources :

Web

Le site de l'événement : http://www-03.ibm.com/systems/fr/jt/cloud.html
Un petit historique IBM : http://en.wikipedia.org/wiki/IBM
iNotes : http://www-01.ibm.com/software/lotus/products/inotes/
l'offre cloud publique (pas encore disponible pour la France) : http://www.ibm.com/cloud/developer

Blogs

Le blog IBM cloud : http://www.ibm.com/developerworks/downloads/cloud.html

Livres

Cloud computing & Saas : lien ici chez amazon

vendredi 9 octobre 2009

Azure : Prepare to be a part of it

Sun Rise On ISSPourquoi donc un titre en anglais ? C'est la phrase de David Chappell concluant sa magnifique présentation de la plateforme Azure et du cloud computing en général, qui a eu lieu hier au palais des sport d'Issy les Moulineaux pour les Microsoft Days.
David Chappell est un orateur et un visionnaire hors pair, jusque-là rien de nouveau. Le cloud computing est un sujet brûlant, jusque-là rien d'étonnant. Microsoft mise beaucoup sur Azure, sa plateforme Cloud et ce n'est pas un scoop. Mais le mélange des ingrédients tient de l'alchimie parfois et peut offrir un plat rafraichissant et pimenté à la fois. Je me permets cette image, lui même ayant démarré sur une apologie de la cuisine française. Car en bon orateur il est arrivé en courant et a commencé par une plaisanterie (deux en fait). La présentation s'est déroulé ensuite comme un combat de boxe, ne laissant pas un instant de répit aux auditeurs, suivant un plan simple et efficace : description; scénarii, comparaisons. Je n'ai vu personne bailler. Franchement, si le sujet n'avait pas été captivant en soi, il fallait venir juste pour le jeu d'acteur. Une vraie leçon de communication qui n'avait rien à envier de celle de l'avant veille par un orateur hors norme lui aussi, Steve Balmer. Mais passons: assez parlé du flacon, attaquons tout de suite l'ivresse, enfin je veux dire le contenu.

A new world is unfolding!

(ça devient une habitude!) Quel est donc ce monde nouveau en train d'émerger ? Le Cloud. La 6ème révolution informatique: après le Mainframe dans les années 60, le PC dans les années 70, les PC en masse dans les années 80, les serveurs dans les années 90 et la technologie mobile dans les années 2000, voici l'ère du nuage.

Alors qu'il y a quelques mois encore tout le monde était plus ou moins dubitatif sur la rapidité d'adoption, chacun attendant que l'autre se lance et se casse les dents éventuellement, aujourd'hui il n'est plus possible de douter de l'ampleur du phénomène et la courbe d'adoption parle d'elle même (selon Gartner qui est plutôt fiable en général). En clair: la course est lancée et ceux qui sont assis seront en retard. Je parle ici des éditeurs, car pour eux les places seront chères. Et ce n'est rien de le dire, un data-center pour le cloud, c'est au bas mot un demi milliard de dollars, mais surtout c'est un pari qui ne peut reposer que sur une vrai capitalisation technologique et d'image qui ne s'improvise pas. Ne pourra pas ouvrir un "cloud" qui veut. Amazon a pu se lancer parce qu'il était le premier. Et c'est d'ailleurs une première dans l'histoire des technologies de l'information et sans doute une anomalie sympathique. Mais il y a peu de chance que le phénomène se reproduise à présent.

It's here !

Pour les entreprises, l'urgence est moindre. Mais les opportunités sont énormes et les manquer serait une erreur stratégique. Le cloud computing est une réponse à beaucoup de blocages insurmontables jusque là. Les exemples sont innombrables. De la start-up qui n'a pas les moyens de se payer un service IT, à l'équipe d'une grande entreprise qui préfère éviter d'y faire appel, à son service IT. Des pics de charge journaliers d'une entreprise moyenne ouverte le jour mais finalement pas la nuit (comme beaucoup d'entreprises on en conviendra), à l'envolée brutale à la Twitter, en passant par les montées en charges saisonnières au fil des campagnes marketing, des rencontres sportives, des élections. De ceux voulant des espaces de stockage à des prix défiant toute concurrence, à ceux qui souhaitent exporter des calculs très gourmands mais limités dans le temps. Les raisons sont toutes bonnes pour tâter du nuage. Et quant au pricing, la difficulté qu'il y a à comparer les services entre eux et avec les solutions on-premise (chez soi en somme) démontre une chose, c'est qu'il n'y a pas d'écart délirant et que le choix ne portera vraisemblablement pas sur ce critère.

De nouvelles menottes ?

Certains y voient un nouvel emprisonnement. Une fois dans le cloud, qui pourra assurer que l'on peut en revenir. C'est une question pertinente mais qui a déjà ses réponses. Tout d'abord, si SalesForce a clairement fait le choix de l'enfermement, par un système très propriétaire, Amazon, Google et Microsoft jouent plutôt la carte de l'ouverture et de l'interopérabilité. Les uns sont en Java ou en python, les autres en .NET, PHP ou autres, sur des plateformes connues. Il est facile de porter une application sur ces plateformes, il sera facile de les en retirer. Ensuite, du fait de cette compatibilité "raisonnable", les prix sont assurés de ne pas s'envoler une fois la courbe d'adoption jugée suffisante par les éditeurs.

Certains y voient la mort des fournisseurs. Mais ceux-ci restent la source de revenus principale d'éditeurs comme Microsoft, qui n'aurait aucun intérêt à tuer cette manne. Il y a donc plus probablement à prévoir une cohabitation serrée mais possible.

Et revenons aux start-ups. Comme l'a joliment fait remarquer David Chappell, qu'est-ce qui caractérise le plus souvent une start-up ? L'échec. "Je plaisante bien sûr" a dit M.Chappell (il a dit "je plaisante" au moins une douzaine de fois, à chaque fois en glissant des vérités plus sensibles les unes que les autres). Mais le fait est: la très grande majorité des Start-up échoue avant de rapporter la queue d'une cerise. Le rapport avec le Cloud ? Allez, encore une phrase dans le texte : "with the cloud, if it fails, it fails fast". Quitte à sombrer, autant que ce soit rapide et sans frais supplémentaire. Ca donne plus envie de prendre des risques non ? Alors que la crise financière a plombé indubitablement les velléités des business angels, le cloud va donner un coup de fouet aux créations d'entreprise, c'est un pari que je suis prêt à prendre.

Facile et pas cher !

Pour les aspects techniques, je vous laisse consulter le livre blanc sur Azure du même David Chappell, qui est déjà disponible en anglais et en français et qui a servi de fil conducteur pour la partie technique de la présentation. Je ne m'amuserai pas à parodier ici un plan assuré et efficace. Mais un bref résumé laconique et simpliste : à moins que votre application ai besoin de droits administrateurs pour tourner (auquel cas passez votre chemin et orientez-vous vers Amazon ou SalesForce), le portage se fera en un clin d'oeil.

Pourquoi hésiter, alors ? Oui, pourquoi. La question n'est plus tant de savoir si l'on prend le train que de savoir à quelle heure. Et admettons, ce qu'on apporte avec soi pour le premier voyage. N'allons pas tout déménager en une fois. Laissons la confiance venir avec le temps. Mais ne manquons pas un beau voyage. Il faut faire partie de l'aventure. Be a part of it !

Alors une petite dernière pour la route :

It's up to you

Quelques livres blancs (dont celui cité) : http://www.microsoft.com/azure/whitepaper.mspx

Le blog du maître : http://www.davidchappell.com/blog/

vendredi 12 juin 2009

Retour sur le 1er Cloud Camp Paris

myCloud Hier a eu lieu le premier Cloud Camp Paris. Cet événement a rassemblé une petite centaine de personnes intéressées par ce phénomène encore trop peu connu et pourtant incontournable. C’était un Bar Camp au détail près du sponsoring affiché de 6 sociétés venues vendre leur produit et leur expertise :

  1. Sun a vendu son entrée dans le Cloud. C’était le sponsor officiel. On va pas se plaindre de la présence de sponsor, le buffet était super, là où l’on a à peine droit à une part de pizza d’habitude…
  2. DAAS a vendu sa vision, le Datacenter as a service, offre de très bas niveau s’adressant principalement aux fournisseurs de services. Ils proposent aussi une offre originale de datacenter privés.
  3. “Run My Process” qui se veut le “man in the middle” qui fait du Workflow as a service, de l’integration as a service, soit du BPM fournit en SaaS (j’adore ces acronymes donnés en grappe, je suis sûr que je viens de perdre la moitié de mon auditoire là…)
  4. Right Scale qui propose une plateforme de management du cloud.
  5. Orange Business Services
  6. Zeus qui font du “Application Delivery Software” sur le Cloud

CloudCampPourquoi j’ai fait une telle liste moi ? Je vais même pas toucher un centime… Ah oui, disons que maintenant on voit bien qu’il y a des acteurs sérieux sur le sujet et que l’on risque d’en parler de plus en plus. Enfin, qui a encore besoin de s’en convaincre ?

J'ai appris au moins une chose au cloud camp paris : on peut faire du profit sur le Cloud dès aujourd'hui. Voici une liste non exhaustive des façons de faire des sous grâce au Cloud. Elle est en anglais, désolé mais c’est comme ça que ça nous a été servi et je trouve ça plus parlant tel quel :

  1. Get on the cloud (Might Side, enfin c’est ce que j’ai lu…)
  2. Connect applications (Run My Process)
  3. Monitor the cloud (Hyperic, Spring-Source)
  4. Create a cloud (3 Tera, Eucaliptus, A-Server)
  5. Advertising (Google)
  6. Cloud Readiness Audit (Cap Gemini)
  7. System administration (Cloud Watchers)
  8. Automate the Cloud (Right Scale)
  9. Move Data the Cloud (Jungle Disk)
  10. Meter the Cloud (Dev Pay)
  11. Image creation/support (Cohesive FT, RPATH)
  12. Video Streaming (WONZA)
  13. Human resources for "Mechanical Tasks"

PessimisticOn est très loin de l'idée que le Cloud est pour les start up. Certe, il est pour elles un eldorado ! Mais on voit dans la liste des business models qui ne sont pas à la portée du premier venu. Il faudra plus que quelques millions d’Euros pour créer un Cloud, soyons clairs. Mais certaines idées géniales sont nées avec le cloud qui n'auraient pas pu voir le jour sans lui.

Et pour le développeur un mot d'ordre : "New delivrey model". C’est là où il va falloir être vigilants. Le métier de développeur va être un peu secoué. Par exemple, le modèle relationnel pour le stockage des données n’est pas idéal sur le nuage. Il pose vite des problème de scalabilité. Il faut repenser la persistance. Et surtout ne pas croire le marketing qui s’adresse aux développeurs et qui tente de leur faire croire qu’ils vont développer la même chose mais sur le nuage. Une application doit être pensée en amont pour être portable sur le Cloud. Ce n’est pas pour rien que Cap Gemini vend de l’audit de “Cloud Readiness” et cher en plus. Je sais que je me répète mais, un développeur qui a l’intention de le rester devrait déjà plonger dans le Cloud pour ne pas être perdu dans 5 ans. 

Un seul regret, l’absence de Microsoft dans les invités, même si on a parlé d’eux forcément, mais bon on se refait pas, j’aurai bien voulu voir Azure. Enfin c’était Sun qui invitait alors…

Stay tuned, ce ne sera pas la dernière fois qu’on parle du Cloud ici et j’espère que tout le monde aura compris l’ampleur du sujet.

Et merci à Institut-telecom pour leur accueil et leur belles salles.

http://blogs.sun.com/EricBezille/entry/cloud_camp_paris_le_11

http://www.cloudcamp.com

mercredi 8 avril 2009

Développez en Java vos applications Google App Engine :

Il y a à peu près un an, Google ouvrait l'App Engine aux développeurs, il n'était alors possible de déployer que des applications développées en Python.
Pour rappel, Google App Engine est une offre de Cloud Computing permettant aux développeurs d’héberger leurs applications Web sur les serveurs de Google. Les applications ainsi hébergées bénéficient de ce fait de la même capacité de montée en charge que les services Google tels que Gmail ou Google Finance.
Google n’est pas la seule entreprise positionnée sur ce secteur, bien que pas tout à fait similaires, Amazon et Microsoft ont eux aussi leurs offres avec respectivement AWS et Windows Azure.
Un des atouts de Google App Engine c’est que gratuitement un développeur peut déployer une application qui soit accédées à raison de 5 millions de pages vues par mois. Ce qui est somme toute une offre d’hébergement intéressante. Au-delà de ces quotas, il est possible d’acheter des ressources supplémentaires.
Depuis quelques mois, nous pouvions voir dans la roadmap de ce projet que le support d’autres langages était un des objectifs de Google. Aujourd'hui, c’est chose faite, Google ouvre son service à une nouvelle communauté et contrairement à leur poisson d’avril, ce n’est pas Fortran mais bien Java qui est désormais supporté.
Cette nouvelle devrait donc être accueillie avec un vif enthousiasme lorsque l’on sait que le support de Java a été l’une des premières évolutions suggérées par les développeurs lors de la sortie de la première version de l’App Engine.
La version Java ne déroge pas au qualificatif de « Simple d’utilisation » qui caractérisait la version Python. En effet, il n’y a pas de différence majeure dans l’approche qu’ont ses deux dernières. Un atout supplémentaire de la version Java et qui a son importance, c’est le fait qu’elle s’accompagne d’un plugin Eclipse. Il est ainsi possible de créer une application et de la déployer en quelques clics.
De plus, l’intégration avec GWT (Google Web Toolkit) est enfantine et proposée par défaut par le plugin.
L’environnement de développement App Engine Java supporte les versions Java 5 et Java 6, sachant que sur les serveurs distants c’est la 6 qui est supportée. Les pré-requis au développement et au déploiement d’applications sur la plate-forme sont relativement faibles : avoir installé Java et le SDK de l’App Engine. L’installation du plugin Eclipse est bien entendu un plus non négligeable.
L’administration des applications se fait via la même interface que pour les applications Python. Il est ainsi possible de voir la répartition de la charge dans le temps, les requêtes HTTP les plus récurrentes, le taux d’utilisation ramené aux quotas. Il est également possible de consulter les logs. Enfin, une page permet d’accéder aux données stockées dans le Datastore.
Etudions de plus près l’architecture d’un projet et l’utilisation des APIs

Passons à la pratique : 

Les applications Google App Engine doivent être structurées en respectant l’arborescence WAR, ainsi, si vous créez un projet via le plugin Eclipse, vous obtiendrez une structuration semblable à celle-ci :

Cette arborescence de projet ne présente pas de spécificité particulière, on notera la présence d’un fichier web.xml permettant d’assurer le mapping entre les URLs et les classes des Servlets.
Lorsque vous déployez une application sur Google App Engine, une association s’opère entre les fichiers que vous transférez sur les serveurs de Google et les applications que vous êtes en mesure d’administrer. Cette association est possible grâce à un identifiant que vous vous devez de retranscrire dans le fichier appengine-web.xml. Ce fichier est l’équivalent du fichier app.yaml de la version Python de l’App Engine.
Les Servlets sont tout à fait communes et ne différent pas de celles que l’on peut développer dans une application traditionnelle. La Servlet d’un HelloWorld pourrait donc se présenter ainsi :

package com.sfeir.demo;

import java.io.IOException;
import javax.servlet.http.*;

public class DemoServlet extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws IOException {
        resp.setContentType("text/plain");
        resp.getWriter().println("Hello, world");
    }
}


Maintenant que nous savons qu’il n’est pas difficile de créer un projet, intéressons nous aux APIs spécifiques de Google App Engine.

Utiliser les APIs :

Authentification

Ajouter un système d’authentification des utilisateurs se fait tout aussi facilement qu’avec la version Python :

package com.sfeir.demo;

import java.io.IOException;
import javax.servlet.http.*;
import com.google.appengine.api.users.User;
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;

public class DemoServlet extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
              throws IOException {
        UserService userService = UserServiceFactory.getUserService();
        User user = userService.getCurrentUser();

        if (user != null) {
            resp.setContentType("text/plain");
            resp.getWriter().println("Hello, " + user.getNickname());
        } else {
            resp.sendRedirect(userService.createLoginURL(req.getRequestURI()));
        }
    }
}


Ici, on utilise le UserService pour récupérer l’utilisateur actuellement connecté à l’application. S’il y a bel et bien un utilisateur authentifié, nous lui affichons un message de bienvenue et si ce n’est pas le cas, l’API nous permet de le rediriger vers une page de login. Lorsque vous travaillez en « local », le système d’authentification est émulé, il n’y a pas de vérification à proprement parler de l’existence des utilisateurs. Lorsque vous déployez votre application, le UserService se base sur les Google Accounts pour vérifier l’existence des utilisateurs.

Il est également possible de savoir si l’utilisateur actuellement authentifié est un administrateur de l’application et ainsi de lui donner accès ou non à certaines fonctionnalités.

Persistance


Attention, comme pour la version Python de Google App Engine, le stockage des données ne s’effectue pas dans une base de données relationnelle. Google dispose de son propre formalisme de stockage des données qui s’apparente à une Map multidimensionnelle partagée.
Le développeur dispose de trois solutions distinctes pour persister ses données, en effet, Google App Engine Java implémente JDO (Java Data Object), JPA (Java Persitance API) et met également à disposition une API de plus bas niveau (Datastore API).
Dans cette version de Google App Engine, Google pousse un Framework de persistance : DataNucleus. Sa configuration se fait très simplement (voir doc pour plus de détails)
Voici un exemple utilisant JDO, la définition des données à persister se fait par annotation.
Ci-dessous, l’objet Comment est défini comme pouvant être persisté, en le sauvant, les éléments annotés comme @Persistent feront parti de la sauvegarde.

package com.sfeir.demo;

import java.util.Date;
import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;
import com.google.appengine.api.users.User;

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Comment {
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Long id;

    @Persistent
    private User author;

    @Persistent
    private String content;

    @Persistent
    private Date date;

    public Comment(User author, String content, Date date) {
        this.author = author;
        this.content = content;
        this.date = date;
    }

}

Il est ensuite très simple de manipuler cet objet au travers de l’API. Ainsi, pour persister une instance de cet objet, on peut utiliser le PersistenceManager de la manière suivante :

Comment comment = new Comment(user.getNickName(), content, new Date()) ;
PersistenceManagerFactory pmfInstance =
        JDOHelper.getPersistenceManagerFactory("transactions-optional");
      PersistenceManager pm = pmfInstance.get().getPersistenceManager();
        try {
            pm.makePersistent(comment);
        } finally {
            pm.close();
        }



Avec ce PersistenceManager, il est tout aussi simple de récupérer un objet pm.getObjectById(…) ou encore de le supprimer pm.deletePersistent(…).
Au même titre qu’il était possible d’interroger la base au travers du GQL dans la version Python, il est ici possible d’utiliser un langage de requête proche de SQL pour récupérer des données, il s’agit de JDOQL.
On pourrait récupérer la liste de nos commentaires ainsi :

PersistenceManagerFactory pmfInstance =
        JDOHelper.getPersistenceManagerFactory("transactions-optional");

PersistenceManager pm = pmfInstance.get().getPersistenceManager();

String query = "select from " + Comment.class.getName();
List<Comment> comments = (List<Comment>) pm.newQuery(query).execute() ;


Gestion d'un cache mémoire


Afin de ne pas surcharger le Datastore avec des requêtes récurrentes, il peut être intéressant de stocker un certain nombre d’informations dans un cache mémoire. Cela peut se faire très simplement au travers de l’utilisation de la Memcache API.

cache = CacheManager.getInstance().getCacheFactory().createCache(Collections.emptyMap());
cache.put(‘‘cachedInteger’’, 25) ;
Integer cachedValue = (Integer) cache.get(‘‘cachedInteger’’);



Dans l’exemple ci-dessus, après avoir récupéré l’instance du cache mémoire, on y insère un entier à la clef « cachedInteger » au travers d’un put. Un simple get avec la clef nous permet de récupérer la donnée que nous avions mise en cache.
Le cache est utilisé pour cet exemple de manière très simpliste mais on pourrait imaginer l’utiliser pour retourner des informations ayant plus de valeur, comme le contenu RSS de l’application ou encore une page fréquemment requêtée.
Cette API de cache propose d’autres fonctionnalités intéressantes comme la possibilité de définir une période de validité pendant laquelle les données peuvent être considérées comme « fraiches ». Différentes politiques de gestion sont également applicables, ainsi il est possible de n’ajouter la donnée que si celle-ci est déjà présente ou réciproquement.

Envoi de mail


L'envoi de mail fait partie des fonctionnalités intégrées à Google App Engine et relativement simples à mettre en place au sein d'un projet.
Dans cette version Java, l'API implémente l'interface JavaMail, pour des raisons de sécurité, seules les adresses d’un administrateur de l’application ou celle de l’utilisateur couramment authentifié peuvent être spécifiées comme adresses de l’émetteur.
       

Properties props = new Properties();
        Session session = Session.getDefaultInstance(props, null);

        String msgBody = "Contenu du mail";

        ...
        Message msg = new MimeMessage(session);
        msg.setFrom(new InternetAddress("admin@mondomaine.com"));
        msg.addRecipient(Message.RecipientType.TO,new InternetAddress("destinataire@sondomaine.com", "Destinataire"));
        msg.setSubject("Email envoyé par Google App Engine");
        msg.setText(msgBody);
        Transport.send(msg);


L’exemple ci-dessus montre l’envoi d’un mail basic, sachez qu’il est également possible d’ajouter des pièces jointes (voir types MIME autorisés) avec la contrainte toutefois que l’e-mail ne dépasse pas les 1mb.

Comme pour la version Python, il est également mis à la disposition des développeurs une API permettant d’interroger des hôtes distants (via l’API URL FETCH) et une autre permettant de manipuler des images.

Cette version de Google App Engine étant toute récente, il va être intéressant de suivre l’adhésion des développeurs de la communauté Java à ce service. D’une part, elle offre une grande facilité de développement et de ce fait un gain de temps dans l’élaboration d’applications, ce qui devrait en attirer plus d’un. D’autre part, tout comme pour la version Python un certain nombre de quotas et de restrictions sont à prendre en compte lors de l’utilisation de ce service, ce qui exclu certain types d’applications de cette offre d’hébergement.

Cette nouvelle version est également un beau coup de pousse donné à GWT, en effet le plugin Eclipse permet de créer en quelques clics une application GWT pour Google App Engine et devrait donc  amener davantage de développeurs à adopter ce Framework Web.

Google Guice sera peut être un autre des bénéficiaires de cette version Java, bien qu’il ne soit pas poussé outre mesure par Google pour être associé à Google App Engine, sa légèreté et sa simplicité d’utilisation devrait lui permettre de s’intégrer facilement aux applications déployées sur la plate-forme.

Quoi qu’il en soit c’est une nouveauté que nous nous devons de suivre.

Références :

Pour s'inscrire
L'annonce officielle
Le Coud Computing
Tout sur Google App Engine
DataNucleus
Découvrir GWT
En savoir plus sur GUICE
Amazon Web Services
Windows Azure

vendredi 26 décembre 2008

Icarus and the Cloud

The_fall_of_icarus____by_ramastom

Je suis tombé par hasard sur un surnom donné à certains développeurs, un adage qui prend son envol sur le net (en anglais dans le texte) : "Icarus : a developer fascinated by the cloud". Avouons que la définition est excellente ! Je veux dire drôle, plus qu'exacte. En tout cas elle dissimule mal la peur que le nuage fait à certains.

Car si dans la mythologie, Icare était le fils d'un architecte et d'une esclave, ce qui est en soi une définition assez synthétique et réaliste du développeur aujourd'hui, il s'est surtout brûlé les ailes au contact du soleil. Quelqu'un craindrait-il que les développeurs se brûlent les ailes dans le cloud computing ? Ou l'appelle-t-il de ses vœux ? Il est clair qu'entre la virtualisation et le cloud computing, une certaine forme de révolution est en marche et que pas mal de professionnels de l'information doivent penser à leur avenir. Pourtant, ce qui arrive à Icare n'est que la conséquence de ses actes (sa fascination pour le vol donc pour l'émancipation, l'oubli de l'interdit et sa volonté de surpasser le "père"). Tout ceci sonne comme un avertissement. Mais qui se trompe de cible. Les développeurs ont tout intérêt à entrer dans le nuage. On s'émancipe bien des contraintes liées aux serveurs, leur coût, leur maintenance etc. Mais quel interdit brise-t-on ? Et quant au père...

Il y a tout de même quelque chose de troublant dans la comparaison, car le père d'Icare se nomme Dédale. Quel nom pour un architecte! Parfait pour un architecte logiciel à bien y regarder.

En tout cas le nuage se voit de plus en plus et fait parler de lui. Je m'étonne qu'il n'y ait encore personne qui, dans le même ordre d'idée, n'ait encore pronostiqué un bon anticyclone venu le balayer.

mardi 18 novembre 2008

Quelques nouvelles à propos de cloud computing

Windows7 on VMWare Fusion Souhaitant tester la plateforme Microsoft Azure (si j'ai le temps), je viens d'installer Windows7 CTP (quitte à essayer des nouveautés) sur mon MacBook dans une machine virtuelle avec VMWare Fusion. Je n'avais entendu que du bien de ce produit de virtualisation, c'est vrai que ça dépote ! La preuve, image à l'appui :

Je voulais également en profiter pour regarder Visual Studio 2010 CTP, mais après avoir regardé la configuration requise, je me suis rabattu sur la version 2008 !

Sinon, quelques nouvelles à propos de cloud computing lues sur InfoQ :
Pour commencer, un article comparant les offres Amazon EC2, Google App Engine et Windows Azure.
Et en plus récent, la sortie de CloudFront Beta par Amazon.

Windows Azure SDK System Requirements
Visual Studio 2010 System Requirements
Comparing Amazon's EC2, Google's App Engine and Microsoft's Azure
Amazon Has Started Delivering Its Clouds with CloudFront

vendredi 7 novembre 2008

Microsoft 2.0 : Maturité ?

outsidethebox Au delà de l'effervescence liée à ce genre d'événement, le PDC 2008 a montré le géant de Redmond sous un jour nouveau. Il s'agit de bien plus qu'une simple série d'annonces plus ou moins marketing pour répondre aux évolutions du marché. Bien entendu les concurrents sont là, dans la course, et chacun y va de ses innovations. Mais on sent bien cette fois comme un frémissement, une excitation qui dépasse le passage à la version N du produit X. C'est un remodelage, une redéfinition profonde du business model qui affleure ici.

Le Cloud Computing est une bombe dans tous les sens du terme. D'aucun préféreront le terme de révolution. L'effet est le même. Faire place nette, repartir de zéro ou presque. Réinventer une nouvelle vision du monde. Et laisser derrière soi pas mal de cadavres.

Une seule certitude, plus que jamais, il faut être à la pointe, se tenir au courant, tendre l'oreille. L'informatique est un métier de passionnés certes, il ne faudra pourtant pas oublier de lever la tête du guidon de temps à autres pour sentir le sens du vent et bien regarder où mène la route, pour éviter les impasses, ne pas louper le virage. L'expertise technique est toujours un plus, elle peut aussi bien être un piège, un carcan, si elle porte sur une mauvaise vision.

Les craintes sont nombreuses et certaines vraisemblables. Si le système d'information se redéfini si profondément, les métiers devront le faire aussi. Suffira-t-il d'une simple formation pour garder son poste ? Quand on parle de Next Gen, certains se voient déjà relégués dans la catégorie Old School, débordés par la déferlante.

Au sein des équipes IT, les impacts risquent d'être réels et parfois difficiles à digérer. Pour les entreprises dont le coeur de métier tourne autour du SI, l'avenir risque d'être trouble, l'avis de tempête est sérieux.

Mais que d'opportunités. Combien de métiers encore insoupçonnés. Alors qui regrettera l'ancien Microsoft ?

"L'enfance n'est pas un âge mais un pays dont on a vite la nostalgie" (Franck Lloyd Wright)

lundi 27 octobre 2008

Azure, la plate-forme de 'cloud computing' de Microsoft

La conférence pour les développeurs de Microsoft (PDC 2008) à Los Angeles s'est ouverte par l'annonce de la plateforme de cloud computing maison: elle s'appellera "Azure Services Platform". Selon Ray Ozzie, le chef architecte de Microsoft, cette plateforme sera "bâtie dès le commencement avec en ligne de mire notre engagement en faveur de l'ouverture et de l'interopérabilité"... même si on est en droit d'émettre de réserves, pourquoi pas.

Windows Azure sera le nom de l'infrastructure de traitement, complété par .Net services pour les services d'accès et de workflow, SQL services pour le stockage, Live services pour la communication et l'aspect "pervasif". Dans l'avenir proche, cela devrait être complété par SharePoint services pour la gestion de documents, et Dynamics CRM services.

Azure Services Platform

Microsoft entend ainsi se faire une place sur le marché du cloud computing, mais on peut se demander si d'une part l'offre séduira les développeurs au delà de l'écosystème Microsoft, et d'autre part si Microsoft réussira sans dommages à faire le grand écart entre son modèle historique de licences par poste, et le modèle plus difficile à rentabiliser du cloud computing.

Une version Community Technology Preview est d'ores et déjà disponible sous condition d'enregistrement.

EDIT: une interview de Ray Ozzie sur CNet.