Une gaffe peu rassurante chez Facebook

Plusieurs de mes contacts sur Twitter ont dit hier qu’ils avaient de nouvelles fonctionnalités dans leurs pages corporatives Facebook. Quand j’ai tenté d’aller voir ce dont ils parlaient, le site ne répondait plus.

Facebook a été indisponible pendant quelques minutes en début de soirée, en raison d’un dévoilement public et accidentel de fonctionnalités qui apparaîtront prochainement sur le réseau social.

Afin de réparer son erreur, Facebook a mis son site hors ligne. Le réseau s’en excuse auprès des internautes. L’interruption de service n’aura duré que quelques minutes. Lorsque Facebook est redevenu accessible, les nouveautés avaient disparu.

via Branchez-Vous Techno.

Je vous fais part de cette bourde ici pour vous démontrer ceci: même si Facebook dessert plus de 500 millions d’utilisateurs dans le monde et brasse des millions de dollars, le sérieux de sa gestion de ses systèmes d’information est plutôt douteux. On voit rarement ce genre de gaffes sur des sites comme Paypal ou eBay.

Je me souviens aussi d’un ingénieur de Facebook à Confoo qui expliquait l’architecture des serveurs memcached qui servent à ménager les ressources informatiques du réseau. Ils avouaient qu’une petite portion des requêtes étaient perdues et cela était acceptable pour eux.

Pourtant, Facebook souhaite lancer soi-même un tas de nouveaux services comme sa propre plateforme de paiement en ligne « Facebook Credits » similaire à Paypal. Son manque de sérieux dans le déploiement et le versionnage ne me rassurera pas vraiment quand il s’agira de données financières.

Certes Paypal et eBay n’ont jamais connu une croissance aussi rapide, mais quand même, la confiance est à la base de ces solutions en ligne. Avez-vous confiance de confier vos paiements en ligne à Facebook?

Le cloud computing au secours de l'agilité en entreprise

Saviez-vous que le développement agile ne peut s’implanter entièrement dans le mode actuel de livraison des services informatiques? Certes le développement agile a de plus en plus de traction dans l’industrie et sa simplification des méthodologies de développement d’application semble plaire autant aux clients qu’aux prestataires de ce genre de service. Toutefois, il reste que le « cloud » ou le nuage informatique permet de véritablement servir ses clients selon les principes d’agilité.

L’adoption de la philosophie agile se constate même dans les milieux les plus conservateurs en TI. Les coûteux échecs à répétition des grands projets informatiques en mode « waterfall » ont justifié ce changement de mentalité et ont ouvert les esprits qui étaient autrefois fermés. Mais, la gestion de leur infrastructure informatique n’a pas beaucoup changé depuis une trentaine d’années. Les délais de déploiement et leurs ressources limitées réduisent l’agilité des projets informatiques.

Le nuage informatique et ses ressources disponibles à la demande et payables à l’utilisation changent le dogme. L’infrastructure et les environnements de développement sont disponibles sur le web et ils sont livrables à l’équipe de projet à l’intérieur de quelques minutes. Voici d’ailleurs quelques avantages qui correspondent à des principes du manifeste agile.

Faciliter la rétroaction du client

Les courts cycles de développement exigent une rétroaction et une participation du client final au livrable. Il doit y avoir accès facilement et rapidement. Lorsqu’on choisit le cloud pour y installer son environnement de développement et d’essais, le client aura déjà accès à ces serveurs. Les développeurs n’ont pas à configurer un accès spécial dans le pare-feu de l’une ou autre entreprise. Les serveurs sont situés sur internet et tous y ont déjà accès.

Vous évitez aussi de déployer localement chez le client. Le déploiement sur les serveurs internes chez le client nécessite du temps à ajouter dans la planification du projet et peut aussi occasionner des obstacles imprévisibles de configuration. Ce sont des risques que peu de clients voudront assumer en cas de délais.

Démarrer rapidement un projet

La définition même de l’agilité implique une souplesse et un minimum de contraintes à faire ce qu’on a à faire. Divers services dans le segment du « Platform-as-a-Service (PaaS) » permettent d’avoir accès à un environnement de développement et de production très rapidement sans configuration à faire. Ce sont des contenants préconfigurés avec les options les plus courantes sur des environnements entièrement extensibles (« scalable »). L’environnement peut supporter une charge de trafic quasi illimitée.

Toutefois, le seul bémol est le manque de flexibilité. Si votre besoin est standard, vous serez aux anges. Si votre application nécessite beaucoup de prérequis hors du commun, cette option ne sera pas pour vous. Il faudrait regarder du côté de l’offre en infrastructure (IaaS) et la location de machines virtuelles. Vous êtes gagnants tout de même puisque ces machines vous seront livrées immédiatement.

Compiler et exécuter ses essais automatisés plus rapidement

La capacité de calcul d’un fournisseur cloud est en théorie illimitée ou du moins bien au-delà ce qu’une entreprise moyenne peut se permettre. Pour y arriver dans le mode de livraison traditionnel, il faudra dépenser des sommes astronomiques.

Lorsqu’une application informatique est très volumineuse, son temps de compilation se voit décupler. Les essais unitaires automatisés qui font souvent partie d’un bon développement agile subissent aussi le même accroissement et leur temps d’exécution suite à la compilation risque de s’allonger considérablement. Le nuage permet de louer des ressources informatiques à la demande pour réduire ce temps d’attente qui viendra au secours du projet.

Procéder à de vrais essais de charge

Si on peut louer plus de ressources pour exécuter nos essais unitaires plus rapidement, il va de soi qu’on peut utiliser toute cette puissance à notre disposition pour mettre au défi notre application. Nous pouvons simuler des charges équivalentes à celles en production.

Il était auparavant très coûteux d’effectuer ce genre d’essais. Cela nécessitait de l’équipement informatique dédié qui ne servira plus à la fin du projet. La location de ressources virtuelles propre au cloud rend la chose beaucoup plus attrayante et réalisable.

Garder son équipe restreinte

Les plus petites équipes ont souvent la réputation d’être plus efficaces et avoir un meilleur focus sur la tâche à réaliser. C’est alors souhaitable d’éviter d’avoir trop d’intervenants sur lesquels le projet pourrait dépendre.

Le déploiement des ressources informatiques dans le cloud se fait à l’aide de formulaires web automatisés. Il suffit de choisir les capacités des serveurs que l’on veut et ils nous seront livrés sur le champ. Il est donc possible d’éviter d’avoir recours à des ressources humaines dédiées à l’infrastructure pendant le cycle de développement. Cela peut réduire le nombre d’intermédiaires et les problèmes de communication qui pourrait s’en suivre.

Êtes-vous ouvert à ça?

Tout ça semble bien beau, mais est-ce que votre entreprise est prête à héberger ses projets de développement à l’externe? A-t-elle l’ouverture nécessaire? Fait-elle confiance qu’à elle-même pour ça?

C’est principalement le seul facteur qui pourrait nuire à votre appropriation la puissance et la souplesse du cloud dans vos projets agiles. Si l’agilité a réussi à faire sa place dans la gestion de projet, peut-on espérer qu’elle fera son bout de chemin dans la gestion de l’infrastructure informatique? Je le souhaite et j’en suis convaincu.

Stratégie de déploiement : avantage ou frein à l’évolution d’un logiciel ?

Depuis l’arrivée d’Internet, il est pratiquement possible de télécharger toutes les applications que l’on désire. Et vous l’avez sûrement fait ! Par contre, avez-vous déjà éprouvé des ennuis à installer un logiciel téléchargé ? Si oui, savez-vous pourquoi ? En fait, il est extrêmement complexe de déployer une application sur un ordinateur tiers. Quels sont donc ces obstacles ?

Déploiement vers un ordinateur tiers

Puisque nous n’avons strictement aucune idée de la puissance, du système d’exploitation et des applications déjà installées sur l’ordinateur cible, alors, comment devient-il possible de déployer une application sans trop de problèmes ?

Avec le temps, les concepteurs ont mis au point des logiciels de déploiement ou « installeurs » pour simplifier l’opération aux éditeurs de logiciels. Par contre, une fois le tout installé et opérationnel, peut-on déclarer que le travail est vraiment terminé ? Le logiciel a-t-il des bogues ? S’améliorera-t-il avec le temps ? Si oui, on n’a pas fini de se casser la tête !

Le déploiement d’une application est une opération tellement complexe et qui nécessite tellement de soutien technique, que les fabricants tentent de garder les mises à jour de leur application au strict minimum. Ils vont jusqu’à refuser d’aider leurs clients, prétextant qu’il existe des solutions de rechange ou « workarounds ».

Le déploiement en continu

Personnellement, je pense que le déploiement fréquent d’une application est une stratégie gagnante, tant pour le concepteur que l’utilisateur. L’expérience nous démontre que les cycles de développement trop longs éloignent le logiciel des réels besoins des utilisateurs. La plupart des fournisseurs d’applications SaaS ont placé au cœur de leurs préoccupations cette notion de la mise à jour fréquente. Par exemple, Facebook en déployant une nouvelle version de son site tous les soirs, ils le font évoluer grâce aux commentaires des internautes et à l’analyse de l’interaction de ces derniers avec ce réseau social.

C’est l’une des nombreuses raisons pour laquelle je recommande de plus en plus le SaaS dans les solutions que je propose et que je préconise. Le logiciel devient en quelque sorte vivant, et on assiste à sa bonification au fur et à mesure sans qu’il soit nécessaire d’intervenir. Il ne faut jamais oublier que, une fois l’application déployée, installée et opérationnelle, le coût et le risque associés aux mises à jour découragent souvent les informaticiens de les mettre fréquemment à niveau. Afin de contourner ce problème, le SaaS devient un incontournable !

Déployer vos corrections rapidement

J’utilise le logiciel Digsby comme je vous l’avais déjà mentionné. J’ai eu un pépin avec l’application lorsque je me suis mis à l’utiliser avec deux moniteurs sur mon ordinateur. J’ai soumis un bug directement dans l’application.

Croyez-le ou non, mais le développeur, Steve Shapiro, m’a répondu dans l’heure pour m’indiquer qu’il avait déployé la correction sur internet. Il m’a tout simplement demandé de redémarrer l’application pour qu’elle se télécharge et s’installe sur mon poste. Affaire classée.

Ceci m’amène à dire, lorsque vous êtes en phase d’essais ou de tests, déployez vos corrections rapidement. J’ai souvent vu des projets où les déploiements une fois par semaine ou même une fois par mois. Toutefois, la perception chez l’utilisateur peut s’avérer très négative puisque le bug va être dans leur face pendant toute l’attente. La confiance envers le système risque de perdre des plumes.

Ceci s’applique aussi aux systèmes en production. Les bugs irritent vos usagers et le plus longtemps qu’ils ne seront pas corrigés et déployés, les usagers vont devenir de plus en plus cyniques envers l’application.

J’entends les antagonistes! Vous vous dites que déployer fréquemment risquent de déstabiliser votre application? C’est possible, mais c’est peut-être de votre faute. Avez-vous réfléchit au mode de déploiement de votre application? On est à l’époque du web et de l’instantané. Si pour déployer on doit fermer la salle de serveur pendant 4 heures, vous êtes « out ». Les gens s’attentent que vos systèmes soient disponibles. Vous ragez lorsqu’il y a des travaux routiers? C’est la même chose.