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."

Windows XP Media Center 2004: vous ne réalisez pas jusqu'où ça ira!

J'en avais rêvé (et maintes fois parlé)... Microsoft l'a fait! Un vrai PC de salon entièrement pilotable à la télécommande. Bon, allez j'avoue, en réalité Sony, fidèle à sa réputation, l'a fait avant mais plus discrètement.

Ici Microsoft sort un OS qui intègre tout ce qu'il faut pour regarder photos, vidéos, écouter de la musique et enregistrer (la télé, la radio...) sur disque dur. Le système s'interface avec les appareils photos, les camescopes, etc. Bref, le concept est clair: la convergence multimédia accessibles à tous.

=> Mais il faut encore faire l'acquisition d'un PC équipé. Ce qui m'étonne c'est que MS n'ait pas intégré tout ça dans sa X-Box à 199 € et qui fait console de jeux en plus... Au fait, elle sort quand la X-Box 2 "édition Media Center" ?

Par ailleurs, le magnétoscope numérique programmable facilement grâce au programme TV sur internet c'est bien... mais que se passe-t-il pour les utilisateurs du câble ou du satellite? Pas de communication avec le décodeur externe... Ca ne m'étonnerait pas que l'on voie prochainement proliférer les cartes décodeur câble/sat au format PCI...

Pas besoin non plus de vous faire un dessin sur l'évolution future de IE intégré à l'OS de telle manière qu'il soit utilisable agréablement sur une télé... Ni sur l'intégration prévisible de MS-Tunes en concurrence à iTunes de Apple... (ah oui pardon, ça s'appelle Napster 2.0 en fait)

=> Où ça nous mène tout ça? Au lieu d'acheter un décodeur, un magnétoscope, un lecteur de DVD et une console de jeux, vous achetez une média-X-Box pour comparativement pas cher seulement. :!: Vous êtes contents... Microsoft aussi: tous vos fichiers sont désormais au format WMA (fini les mp3 et les DivX) et MS règne en maitre absolu sur le DRM (Digital Rights Management). :|

Traçage des téléphones mobiles

Pour schématiser, lorsque votre téléphone mobile est allumé, il est en communication permanente avec les stations de base les plus proches, détermine celle avec laquelle il dispose de la meilleure réception et s'enregistre auprès d'elle.

Cet enregistrement est stocké dans une base de données centrale, ce qui permet de vous trouver quand on vous appelle. Régulièrement la station de base communique avec votre mobile pour vérifier qu'il est toujours là. Si vous ne bougez pas trop, tout va bien, les intervalles de vérification vont même s'espacer (Ce qui est bon pour votre batterie.)

Si en revanche vous bougez, votre mobile va s'enregistrer sur de nouvelles stations au fur et à mesure qu'il s'approche de celles-ci en s'éloignant de la précédente. Tous ces mouvements sont enregistrés/archivés dans la base de données centrale.

Au passage, notez qu'en déplacement, les communications de vérification sont beaucoup plus rapprochées et du coup votre batterie se décharge plus vite.

Mais le déchargement acceléré de la batterie n'est pas le seul effet de bord désagréable du système. L'autre, c'est qu'il y a une base de données centrale dans laquelle sont consignés tous les déplacements des individus référencés par leur numéro de portable à quelques kilomètres près.

Encore plus désagréable: ces données sont accessibles à la police ne serait-ce que pour un simple contrôle de vitesse autoroutier... La CNIL n'a rien à dire, ce n'est pas une exploitation de données personnelles, mais des communications! Et celles-ci ne sont pas écoutées puisqu'en fait vous ne téléphonez même pas! En quelque sorte, c'est considéré comme moins indiscret que d'obtenir votre facture détaillée! :|

Aujourd'hui les procédures d'accès sont encore un peu lourdes, mais qui doute vraiment que nous soyons techniquement à deux doigts de permettre un accès en temps réel à l'archive des déplacements de tous les mobiles, disons sur les deux dernières semaines?

Si vous considérez que vous ne payez pas un abonnement pour vous faire suivre à la trace, vous avez toujours la possibilité d'éteindre votre mobile... et de ne pas vous en servir! >:-(

En revanche, si vous avez un smartphone, vous pouvez avoir besoin de vous en servir juste pour consulter votre agenda et là, vous ête immédiatement repéré, enregsitré, tracé! A ma connaissance, seul le P800 est à ce jour dôté d'un mode où les fonctions PIM sont activées mais pas les fonctions GSM. L'idée de départ était pourtant loin de la protection de la vie privée: pouvoir l'utiliser dans les avions sans générer d'interférences...

En ce qui me concerne, je ne coupe pratiquement jamais mon mobile. En fait j'oublie même que je l'ai avec moi... et que je suis traçable en permanence. :-/ J'essaye de me consoler en me disant qu'au moins si je tombe dans une crevasse, on me retrouvera... sauf que le GSM, il passe pas dans les crevasses! XX(