Industrialisation du web: un exemple

Pour bien fixer les esprits, je vais prendre un exemple proche de nos préoccupations quotidiennes de bloggeurs ;D : la vérification des referers.

Si vous enregistrez le referrer de chaque requête dans le but de l'afficher dans vos stats publiques, vous vous êtes sans nul doute déjà confronté au besoin de vérifier que le référant pointe bien vers votre site avant de le valider, ceci afin d'éviter le "referer spam". Il en est de même pour le comment spam.

Pour ce faire, vous devez déclencher une "contre requête" HTTP afin de récupérer et analyser la page référente. Cette opération est longue et ralentit d'autant le traitement de la requête d'affichage de votre page.

Certes, vous placerez judicieusement cette requête à la fin de votre page et déclencherez l'envoi de la page vers le client avant de commencer l'opération de vérification. Mais la connexion HTTP reste ouverte et le browser client indique qu'il continue de charger. A la limite, un utilisateur lambda pourra ne pas s'en rendre compte. En revanche, un robot d'indexation aura vite fait de classer votre site dans la catégorie des mammouths lents à la détente et donc à ne pas indexer trop fréquemment.

La chose se complique encore dans le cas d'un traitement plus évolué tel que l'enregistrement d'un nouvel article. Non seulement vous allez le stocker dans la base de données locale mais vous allez déclencher toute une série d'opérations en "cascade". Exemples:

  • Génération de pages statiques
  • Trackbakcs
  • Pingbacks
  • Pings de mise à jour d'annuaires
  • Envoi de mails aux abonnés
  • Syndication en mode PUSH

(Liste non exhaustive... :>>)

Avec une plateforme web basique (type PHP, ASP, etc...) vous laissez mouliner et vous partez boire un café (si vous êtes moins feignant, vous ouvrez une autre fenêtre). Bien évidemment, vous pouvez bidouiller. Qui a dit "pop-under"? Mais ce genre de solutions où l'on compte sur les capacités de scripting du client pour assurer la cohérence des traitements sur le serveur est vraiment tout sauf recommandable. >:XX Tout celà reste acceptable dans le cadre d'un site web perso (et à budget limité), pas dans un contexte professionnel, ni avec un minimum d'ambition.

Une plateforme telle que J2EE (à ne pas confondre avec un simple script Java) ou .NET (à ne pas confondre avec un simple script ASP) permet de traiter ce type de problème de manière tout à fait élégante.

Pour faire simple et parce que ce post commence à être long, tous les traitements énoncés ci-dessus vont être passés à une (ou plusieurs) file de messages. Cette "message queue" fera exécuter les traitements annexes et non "urgents dans la seconde afin de répondre à la reuqête" par un composant dédié à cette tâche et travaillant de manière asynchrone.

Un autre exemple est le déclenchement sans intervention de l'utilisateur de tâches telles que l'envoi d'emails de résumés quotidiens, la réindexation périodique ou encore la génération de snapshots statiques à intervalles réguliers.

Alors évidemment, les message queues et les traitements asynchrones peuvent parfaitement cohabiter à côté de technologies que j'ai qualifiées de "basiques" telles que PHP. Mais on est déjà là en train de construire une plateforme plus évoluée qui n'a plus rien à voir avec ce que l'on trouve chez un hébergeur low-cost par exemple. C'est le début d'une grosse machinerie... et on aura vite fait de préférer une machinerie standardisée, documentée et maitrisée par un certain nombre de personnes (J2EE, .NET) plutôt qu'une machinerie propriétaire, issue d'un individu isolé, aussi géniale soit-elle.

Java: merci IBM!

Tout comme pour Linux, je suis persuadé que si la plateforme Java a pris l'importance qu'elle a aujourd'hui, c'est grâce à IBM et non pas Sun.


Sun a formalisé un language largement inspiré de C++ pour la syntaxe et de Basic (n'ayons pas peur des mots! :>>) pour le principe d'interpréteur avec garbage collector. Un truc rigolo qui, une fois dôtés d'interpréteurs multiples (des JVM pour tous les OS) permettait de toucher du doigt le doux rêve de "Write once, run anywhere". Je dis toucher du doigt, parce que la réalité ressemblait plus à "Write once, debug everywhere", dans la mesure où les JVM n'étaient que vaguement uniformisées, tant au niveau de l'implémentation que des versions des specs auxquelles elles essayaient de se conformer.


IBM a repris le language et ses classes de base (J2SE) et lui a ajouté tout ce qu'il fallait pour devenir une véritable plateforme d'exécution d'applications d'entreprises distribuées (J2EE), même si officiellement, le "père" du système est Sun.


On peut trouver d'autres exemples, par exemple l'interface graphique. Après des débuts cahotiques, Sun a dôté Java d'un système d'interface graphique (multi plateforme évidemment) dénommé Swing. C'est ~`grâce à Swing'~ que la plupart des applications Java affiche aujourd'hui ce look à la Fisher Price qui irrite l'oeil avant même d'agacer par sa lenteur. IBM, à l'occasion du développement d'Eclipse, a dôté Java d'une interface graphique digne de ce nom: SWT (même si le nom SWT en lui même n'est pas forcément très explicite). Il suffit de jetez un coup d'oeil à Eclipse (l'appli, pas le site!) et l'on comprend tout de suite la différence, c'est sobre, réactif, efficace. Bref, c'est signé IBM et non pas Sun. :>>

Conception logicielle

Dans la série "Chers développeurs, bienvenue dans l'ère industrielle", j'aimerais citer Philippe Kruchten (Rational Software):

"La programmation est une activité plaisante, mais la production de logiciels de qualité est un exercice difficile. Des bonnes idées et des spécifications ou de la "vision" à la réalisation d'un logiciel fonctionnel, le chemin est long et dépasse de loin les questions de programmation."

Sign of the times...

L'éclatement de la bulle Internet et des NTIC en général aura définitivement fait passer le développement informatique dans l'ère industrielle.


Les temps sont durs pour les développeurs isolés au fond de leurs garages... même pour les petites SSII aux méthodes quasi-artisanales. Non pas que les grosses SSII n'aient aucun problème, mais elles, elles survivront. Croyez moi, il n'y a rien de tel que de regarder comment ça se passe en province en ce moment pour être pris de compassion pour ces artisans de l'informatique du XXème siècle; eux qui se retrouvent coincés entre les gros projets qui nécessitent plus de méthode qu'ils ne peuvent en offrir, et les petits projets que les utilisateurs peuvent pratiquement réaliser entièremenet eux-même grâce à des outils de plus en plus intégrés.


Les plus malins d'entre eux auront sauté dans le train et créé leur propre outil; un outil qu'ils peuvent au moins vendre aux utilisateurs s'il ne peuvent le mettre en oeuvre sur mesure. Prochain écueil pour eux: la consolidation du secteur et à terme: l'intégration complète desdites fonctionnalités dans Windows! Inutile de résister, Microsoft a toujours fait comme ça! 8| Cela prendra quelques années, certes...


Au niveau du web, celà se traduit de plus en plus par l'abandon des technologies de mise en oeuvre rapide - je pense à PHP, ASP, ColdFusion... - au profit de frameworks largement plus complexes - j'ai nommé J2EE et .NET - pour les plus gros projets, et de sites préformattés (mais "customizables") pour les plus petits. La bande des "moyens projets", elle, semble de plus en plus étroite.


Exit donc les sites jetables réalisés sous l'impulsion des agences de com, renouvelés au rythme des campagnes publicitaires... de préférence deux fois par an! |-|


Sur le low-end, on assiste déjà à la banalisation ("commoditization") des solutions de commerce électronique. Avantage Microsoft pour ceux qui hébergent leur propre site. Avantage provider pour ceux qui externalisent.


Sur le high-end, le champ de bataille oppose J2EE à .NET . J2EE en réalité c'est à 80% IBM et non pas Sun comme on pourrait le croire. Alors IBM contre Microsoft... finalement peut être que rien n'a changé depuis 15 ans... :>>

Learning to fly :D

Et voilà! Cette fois ça y est! J'ai entammé le dernier volet de mes aventures montpelliéraines: profiter de l'hiver ensoleillé pour apprendre à voler. (Bon, pour être tout à fait honnête, j'aimerais bien que mon aventure sudiste se prolonge sur le long terme, mais pour ça il va falloir trouver un boulot qui va bien dans le coin... donc le suspens reste entier :P)

En fait, ça faisait quelques années que je carressais l'idée. Je m'étais d'ailleurs consciencieusement équipé d'un Flight Simulator 2002 et d'un joystick à retour de force ad'hoc. J'avais suivi les leçons virtuelles et lu méthodiquement les cours théoriques. Mais franchement, dans une lucarne de 15 pouces, ça ne rends pas... (21 pouces non plus de toutes façons... et j'aime bien mon petit écran plat tel qu'il est.)

Bon et puis à l'époque, à Paris, je n'habitais pas près d'un aérodrome, je ne pouvais envisager de voler que le week-end... et encore... si par bonheur il faisait beau le jour prévu!

Héhé, ici les choses sont un peu différentes... je suis à moins de 10 minutes de l'Aéroport International de Montpellier! B) (même si en réalité, pour les petits avions on se sert en réalité de la petite piste - la 31L de son petit nom - qui n'a absolument rien "d'international"). Bon, et surtout il fait beau 300 jours par an et en général ça tombe les bons jours! ;D

Peut-être avez vous vu cet épisode de "Vis ma vie" (vous savez, la télé réalité BCBG...) où une femme découvre la voltige aérienne avec un jeune homme audacieux... oui? Eh bien ça se passe à l'Aéroclub de l'Hérault, à l'aéroport de Montpellier. C'est ainsi que je m'y suis rendu moi aussi pour mon vol d'initiation... mais pas de voltige en fait... je voulais juste voler tranquillement moi! :P

Premier tour de la région par les airs donc: magnifique :D. Je ne peux pas vous décrire. Il faut le voir pour se rendre compte. Je ne peux qu'espérer qu'un jour j'aurai l'occasion de pouvoir prendre des photos de là haut. L'avion est un Robin HR200. C'est un petit deux places... avec pas beaucoup de place pour les jambes. Bleh! :(

105€ de l'heure en double commande (avec un instructeur, évidemment!) c'est quand même pas rien... surtout qu'en consultant le site de la FNA, je me rends compte que les tarifs de l'aéroclub de l'Hérault sont tous globablement au dessus des moyennes nationales. Bon évidemment, c'est classieux comme club. Une douzaines d'avions, un mécano à plein temps, du staff administratif, etc...

Je décide quand même d'aller voir ce plus petit bâtiment, pas loin sur le même aéroport sur lequel il est écrit "Aéroclub de Montpellier". C'est plus petit, 100% bénévole avec une ambiance probablement plus "asso" ;) Il n'y a que 4 avions, mais l'un d'entre eux est un Cessna 172: celui là même que vous pouvez piloter dans Flight Simulator. Je ne résiste donc pas à l'envie de voir "ce que ça fait en vrai"! :yes:

Rien à voir, avec le HR200. Le CS172 est bcp plus gros (il y a 4 places). De plus, l'aile passe au dessus du cockpit, et question visibilité, c'est pas du tout, mais alors pas du tout pareil. Par ailleurs le tableau de bord est très haut, ce qui n'est encore une fois pas terrible pour la visibilité... mais très agréable pour les jambes en revanche. Finalement, le volant, c'est pas du tout intuitif. Le HR200, lui, avait un simple manche à balai... bcp plus proche d'un joystick bien familier ;)

Finalement, aujourd'hui, j'ai effectué mon premier vrai vol de formation. Cette fois sur un Robin DR400 (à 90€/h). C'est comme un HR200 en plus gros, 3/4 places et sensiblement plus de place pour les jambes! :D

J'ai adoré cet avion. Contrairement au vrai CS172, celui là, j'ai envie de dire qu'il est plus facile à piloter en vrai qu'en simulateur, super intuitif, avec suffisament de place dedans et suffisament de visibilité dehors. Atterissage tout en douceur... je ne peux pas attendre d'y retourner!!! :>>

Maintenant, c'est comme toutes les drogues: le problème c'est que ça coûte cher et qu'on devient vite accro! Pour ma part je me console en le prenant comme un traitement curatif contre l'abus de moto (bcp plus dangereux)... mais quand même je ne résiste pas à vous encourager à aller faire un petit vol d'initiation dans un aéroclub près de chez vous. Vous ne regretterez pas! :D