BodySplash.fr

Aller au contenu | Aller au menu | Aller à la recherche

vendredi 19 décembre 2008

Amazon EC2

J'imagine que vous en avez entendu parler, c'est le grand buzz ces derniers temps, j'ai nommé donc le "Elastic cloud computing" d'amazon, ou Amazon EC2 pour les intimes. Je suivais l'histoire de loin, sans trop m'y intéresser, mais il se trouve que depuis 2 semaines, je suis amené à "jouer" avec, et je dois dire que je suis vraiment vraiment vraiment impressionné par ce que je découvre. Je pense même pouvoir dire que la plate-forme EC2 est enfin le premier outil agile dans le milieu de la production.

La base

Alors pourquoi une telle déclaration fracassante? Laissez-moi vous introduire aux concepts d'EC2 si vous ne les connaissez pas encore. Je ne vais pas essayer d'expliquer le buzz word qu'est devenu cloud computing, et je vais juste dire que le but d'EC2 est de pouvoir sans friction instancier des serveurs à la volée. Une tâche qui auparavant était incroyablement pénible se voit ici réduit à une banale opération de routine ne prenant que quelques minutes. Oui en un instant il est possible d'avoir un serveur booté et opérationnel. Bien entendu, pour réussir cet exploit, le service s'appuie sur de la virtualisation, et si mes informations sont bonnes il utilise VirtualBox.

Alors Comment ça s'attaque?

Par défaut, pour jouer avec le service, Amazon livre un ensemble d'outils en ligne de commande qui permettent donc de faire toutes les opérations (recherche d'images, création d'images, instanciation, sécurité, assignation d'adresse, fermeture des serveurs etc etc). Il faut avouer que ce n'est pas forcément très sexy, et l'utilisation intensive de clefs ssh plus le fait que les ids générés par Amazon ne sont pas très "users friendly" n'améliorent pas vraiment la chose. Ceci dit, étant donné que pour fonctionner, ces outils appellent juste une api publique exposée via WebService, il n'a pas fallu longtemps pour que quelqu'un ne nous sorte quelque chose de plus fun : ElasticFox. Et alors là les enfants, on rentre vraiment dans une nouvelle dimension. Instancier un serveur se fait en deux clicks. Tout n'est pas encore possible par cet outil, mais pour 90% des tâches, il fait bien le boulot.

Agile nous disons-donc

Alors pourquoi est-ce que je dis que c'est un outil agile? Parce qu'il automatise une tâche jusqu'à alors fastidieuse et la transforme en une opération d'une telle banalité qu'elle se fait oublier. De plus, la politique de facturation du "Pay Per Use" est également un concept lié à l'agilité (on ne paie que ce qu'on consomme). L'outil essaye de s'adapter juste à nos besoins, et ne nous fait payer que ce que nous avons consommé. Dans le genre 0 gaspillage, c'est pas mal.

Limites

Cependant, tout n'est pas merveilleux. Niveau tarification, il faut bien se rendre compte que même si on paie en fonction de notre consommation, il existe un seuil à parti duquel il est plus intéressant de louer un "vrai" serveur. C'est un excellent outil pour absorber des besoins ponctuels sans perdre un rein, mais pour des besoins "fixes", les solutions standards restent moins cher. Si on a besoin pour des questions de redondance d'avoir deux serveurs physiquement différents, Amazon ne peut pas le garantir, on peut très bien avoir instancier deux serveurs sur la même machine sans le savoir.

Enfin, quand Richard Stallman dit quelque chose, j'ai tendance à être plus méfiant :)

vendredi 14 novembre 2008

Correction

En me relisant quelques jours plus tard, je me rend compte que mon précédent billet n'était pas particulièrement clair.

Je vais reprendre, si vous le voulez bien (et même si vous ne voulez pas d'ailleurs). L'idée d'origine du billet était de définir de manière générale ce qu'était un outil agile, en partant de la remarque que j'avais glané comme quoi maven serait anti-agile. Cette remarque m'avait un peu choqué, tant l'adoption de maven a réduit les frictions sur notre projet. Où se situait donc la différence entre ces deux avis? Dans notre cas, nous rencontrions des soucis de compilation, de déploiement et de gestion de dépendances. La convention de projet de maven, sa gestion native des cycles de vie et ses entrepôts nous ont permis de résoudre tous nos problèmes et simplifier grandement notre environnement. Dans le deuxième cas, le peu que j'ai pu juger est essentillement que l'équipe a voulu changer radicalement le comportement de base de maven. Je veux bien croire qu'il est difficile à configurer, mais dans ce cas je me suis demandé s'il était l'outil vraiment adapaté s'il demandait tant d'efforts à manipuler.

Ma conclusion, un peu classique comme je le disais, qu'un outil ne peut pas vraiment être jugé de manière générale comme étant agile. Tout dépend du contexte et des problèmes que l'on tente de résoudre. De plus, le mauvais choix d'un outil peut être un énorme générateur de gaspillage.

dimanche 9 novembre 2008

Outil agile

Au détour d'une conversation, un collègue nous a dit qu'il trouvait que Maven n'était pas un outil agile. Je dois avouer que je suis de plus en plus en grand suppprter de maven donc, forcément j'ai été choqué.

La raison évoquée était que quand on veut changer le comportement de base de maven, on rencontre beaucoup trop de résistance. Que ce besoin soit légitime ou pas, le fait est qu'effectivement maven était un frein dans ce cas. Mais l'agilité n'est pas une question d'outil. L'agilité est une question de s'améliorer et de réduires les résistences. Il n'y a pas d'outil magique, de balle d'argent, qui va permettre d'être agile du jour au lendemain. Dans notre cas, Maven a réduit la friction du processus de compilation et de déploiement, tout en nous permettant de gérer de manière plus saine nos dépendances. En gros, ça a été un franc succès, mais seulement je pense car nous avions expérimenté les limites d'Ant. Le grand intérêt de Maven, c'est justement ses conventions qui permettent de s'abstraire de beaucoup de la verbosité d'ant, pour ne parler que de la compilation. Enfin, il ne faut jamais oublier que tenter de tordre un outil ou d'essayer de l'utiliser dans une optique qui n'était pas la sienne n'est jamais une bonne idée.

Cette conclusion est assez conventionnelle, et on peut la lire finalement dans n'importe quel bon article sur l'agilité, mais il est, je trouve, toujours intéressant d'arriver par soit même aux mêmes conclusions.

mardi 30 septembre 2008

Le plus simple qui fonctionne

Laissez moi vous raconter aujourd'hui une petite anecdote qui, je trouve, cadre bien avec la recherche de simplicité du moment.

Il y a quelques années de cela, alors que je commençais à peine ma carrière de développeur, s'est posé alors un moi un problème normalement simple: je voulais que ma machine à café s'allume toute seule le matin pour me servir le divin breuvage dés le réveil. Je me met à réfléchir au problème, et je pense tout de suite à un minuteur ou une horloge intégrée à la machine. Je fais quelque recherche, et je tombe sur des modèles assez luxueux intégrant cette fonction. Bien entendu, ces machines faisaient beaucoup plus que je n'attendais, mais bon, je commençais à gagner ma vie, je me suis dit que tant pis, j'étais prêt à dépenser plus d'argent.

Le temps passe un peu, et un jour que je passe chez mes parents, je ne sais pas pourquoi, je soumet le problème à mon père. Il me tend alors tout simplement un programmateur journalier.

J'imagine que vous avez saisi le sens de l'anecdote, mais moi à l'époque, je suis resté scotché devant la "beauté" de cette réponse: simple, pas cher, et correspondant exactement à ce que je demandais. Je me sers encore de cette histoire régulièrement dans mon travail pour me rappeler l'essence ce que je cherche à faire: rester au plus simple.

samedi 20 septembre 2008

Question d'équilibre

J'aimerai aborder le sujet de scrum vs XP ici.

Je me bats contre cette vieille légende qui veut que Scrum couvre la gestion de projet, et XP le développement. Alors oui, Scrum ne couvre que la gestion de projet, mais XP couvre tout. Oui, oui, oui et encore oui, XP parle de gestion de projet, la preuve en image ou

Scrum je trouve, favorise cette vieille séparation développement/gestion tout en ignorant royalement l'importance de la mise en place de bonnes pratiques. Il se trouve qu'actuellement, je n'ai effectivement pas croisé d'environnement ou Scrum avait était mis en place seul, sans les pratiques issues d'XP pour le développement. Mais dans un futur pas si lointain que ça, quand l'agilité aura été reprise et vendue par des commerciaux ne voyant là qu'une offre de plus, je crains fort que l'importance de cet équilibre ne passe à la trappe. C'est pour cette même raison que le débat existe sur la certification Scrum.

XP est un tout cohérent, convaincu de la nécessité de ne rien délaisser: ni la gestion, ni le développement. De fait, XP me paraît plus agile que ne l'est Scrum. Dans le contexte ou il est encore difficile de vendre l'agilité, certains disent donc que mieux vaut vendre Scrum, la méthode fait moins peur. L'agilité était avant tout un changement radical de la manière d'envisager notre métier, et un ensemble de valeurs fortes, continuer à nourrir les fausses croyances me semble préjudiciable.

Ce que j'ai pu modestement observer jusque là, c'est qu'une adoption complète d' XP donne d'excellents résultats à tous les niveaux: qualité du projet, humeur et efficacité de l'équipe, sérénité globale etc etc; Une adoption par compromis ne donne qu'un sentiment mitigé chez tous les acteurs du projet, qui se demandent alors ou est ce fameux gain tant promis par l'agilité, car la différence n'est du coup, pas vraiment bluffante. La puissance d'XP est dans la synergie de TOUTE ses pratiques.

Pour conclure, ce qui m'attriste le plus dans cette histoire, c'est que nous devrions normalement nous concentrer à essayer de nous améliorer, plutôt que de juger de qui est le plus agile. Cependant, il me semble que ce grand virage vers l'agilité ne peut être entrepris par quelqu'un que s'il a toutes les cartes en main.

page 2 de 2 -