2005, l’année où les interfaces se sont mises à bouger

Je termine 2005 entre deux emplois. Mon passage comme développeur chez IBM Canada s’est terminé en octobre, et un rôle d’architecte-développeur chez Fujitsu Global m’attend en janvier. Je ne me sens pas transformé en architecte par magie. J’ai surtout commencé à regarder les trajets complets plutôt que seulement la méthode que je code.

Google Earth reste mon coup de cœur. Son globe montre une version grossière tout de suite, découpe l’imagerie en tuiles, demande seulement le niveau de détail visible et remplace progressivement le flou. Ajax apporte la même idée au Web : garder l’interface, envoyer une petite requête et mettre à jour le DOM quand la réponse revient. Dans les deux cas, la fluidité vient d’un état local qui tolère un réseau lent.

Cette nouvelle liberté demande une discipline. Deux requêtes Ajax peuvent revenir dans le mauvais ordre. Deux tuiles peuvent appartenir à des niveaux différents. Je veux donc numéroter les demandes et vérifier qu’une réponse est encore pertinente avant d’altérer l’écran. « Asynchrone » ne veut pas dire « sans ordre à gérer ».

Les GPU et la physique montrent deux formes de calcul spécialisées. Le GPU répète un shader sur beaucoup de données, mais les transferts CPU-GPU peuvent annuler le gain. Le moteur physique avance positions et vitesses à pas fixe, puis résout des contacts approximatifs. Une pile stable est souvent plus difficile et plus utile qu’un effet spectaculaire.

Le workflow que j’aimerais savoir dessiner

Imaginons un écran Web Ajax qui crée une commande en appelant un service SOA :

  1. JavaScript valide les formats évidents et crée requestId=CMD-184;
  2. il affiche l’état Envoi et transmet XML/HTTP;
  3. le serveur authentifie la session et revalide toutes les données;
  4. le service désérialise le contrat et vérifie sa version;
  5. SQL Server cherche CMD-184 sous une contrainte unique;
  6. s’il est nouveau, une transaction insère commande et lignes;
  7. un événement durable demande plus tard l’export comptable;
  8. le service répond avec le numéro officiel;
  9. JavaScript applique la réponse seulement si elle correspond à la demande active.

Maintenant je coupe le réseau après l’étape 6. Le navigateur voit un timeout, mais la commande existe. Un deuxième clic avec le même requestId doit retrouver le résultat. Si l’export comptable est indisponible, la commande reste commise et l’événement attend une reprise; l’écran ne prétend pas que toute l’opération a échoué. Les logs du navigateur, du service et de SQL partagent le même identifiant sans contenir le numéro de carte ou le mot de passe.

Ce petit exemple rassemble les déceptions de l’année. SOA ne supprime pas les dépendances : il leur donne contrats, timeouts et versions. SharePoint ne supprime pas les copies : il fournit une bibliothèque et un historique que l’équipe doit choisir comme référence. ITIL ne supprime pas les pannes : il sépare incident, problème et changement pour que le redémarrage ne devienne pas la seule mémoire.

Il rassemble aussi l’infrastructure. Le service tourne dans une salle qui a courant, refroidissement, réseau et stockage. Deux serveurs sur la même PDU ne sont pas deux chemins. Une requête SQL doit avoir un index dont les statistiques ressemblent aux vraies données. Un backup n’est utile qu’après restauration. Un déploiement doit posséder un test de succès et un retour qui inclut le schéma.

Ma checklist pour entrer dans mon nouveau rôle reste courte :

  • nommer l’état autoritaire et son propriétaire;
  • dessiner le message et son identifiant avant le proxy;
  • mesurer latence, volume et cardinalité avec des données crédibles;
  • prévoir doublon, ordre inversé, timeout et dépendance absente;
  • limiter les permissions à l’opération;
  • corréler les traces sans enregistrer les secrets;
  • tester le rollback et la restauration pour vrai.

Je suis toujours enthousiaste, seulement moins impressionné par le nom sur la boîte. En 2006, j’ai envie d’apprendre à faire tenir ces composantes ensemble sans cacher leurs pannes. Et oui, je vais probablement rouvrir Google Earth « juste deux minutes » entre deux diagrammes.