Tranquillement installé cette après midi à regarder mes mails en retard et autres trucs moins sérieux, et d'un seul coup un mail arrive me sortant brutalement de ma torpeur. Un client dont l'application est en production depuis des semaines m'explique que plus rien ne fonctionne. Tout de suite échanges de mails, échanges divers pour creuser et tenter d'avoir un début d'explication. Evidemment tout ça commence par la classique action du saint esprit puisque personne n'a touché a rien, et rapidement des produits de protection systèmes ont été modifiés, bref finalement on se rend compte que l'application qu'on est en train d'essayer de débugger est parfaitement opérationnelle.
Quel est l'intérêt de parler de ce type d'événement si ce n'est que ça amène toute la difficulté de l'exploitation d'applications par un client. Celui-ci doit maintenir un système en condition opérationnelle, en n'ayant -et c'est bien légitime- pas forcement la pleine mesure des effets de bords des opérations qui sont à réaliser sur les serveurs. Pourquoi pas lui proposer alors de passer en mode SaaS de type Cloud Computing, on externalise toute l'application et le client se connecte à ses données depuis Internet. Tout ça n'est pas si simple, il y a d'abord la réticence évidente et paradoxale d'un client d'une petite structure à envoyer ses données sur internet, a ne plus les posséder en interne chez lui. A ce premier point s'ajoute parfois l'aspect technique, parfois des applications fonctionnement bien en local, mais pas évident que ce soit aussi efficace à distance.
De ces différentes interrogations, et assertions me vient une reflexion qui consiterait à déployer des conteneurs d'applications chez les clients et à les gérer à distance. Ainsi on isole l'application pour être certain qu'elle continue à s'executer dans un environnement intègre, on en assure la maintenance et les évolutions, et on a la certitude qu'il n'y a pas de problèmes 'étranges'. Concrêtement cette logique peut s'envisager au travers d'une infrastructure de virtualisation chez le client et ainsi permettre de faire converger les deux préocupations, celle du client de propriété de ses données, et par ailleurs celle de robustesse et d'indépendance. On pourrait qualifier ça de 'in house cloud computing', l'application s'exécute dans un conteneur virtualisé, et à partir de là le client accède à un service sans plus de dicernement. Le concept reste à expérimenter, donc à suivre...