Archives par mot-clé : Software

Nouvelle rechute ;)

Comme vous le savez sans doute, je suis en pleine préparation de notre p’tit dej Rich commerce.

On a clairement choisi avec Fred une orientation plutôt « non technologique ».

J’ai pas pu m’empêcher, j’avais préparé tout un tas de slides sur l’architecture MVC adéquate pour décliner les interfaces riches…

En relisant notre présentation, on s’est rendu compte que c’était décallé !

Zut !

Alors je publie une image sur ce blog, et vous ne la verrez pas demain lors de la présentation !

Architecture MVC et interfacs riches

Compréhensible sans explication de texte ?

Organiser les développements : suite avec Laurent

Laurent a publié un commentaire, suite à mon billet sur l’organisation des développements.

J’ai pensé que ce commentaire « méritait » d’être « remonté » au niveau billet.

Voici donc les recommandations d’Ysance pour organiser les développements :

Lorsqu’on développe à plusieurs (ou même tout seul), les outils d’organisation de travail et groupe sont cruciaux, mais ne doivent pas nuire à la productivité ( combien de fois j’ai vu des plates-formes où il fallait plusieurs minutes pour mettre à jour un fichier, compiler, tester, tout ca parce qu’il était interdit de ‘travailler sur son PC’ !). Je vais me permettre de donner/compléter (succintement) quelques pistes :

  • La plate-forme de développement : principalement sur les postes de développeurs et un SVN, mais mutualisant généralement la base de données pour éviter les désagréments d’évolution des modèles. La base de données étant sous la responsabilité d’une (et d’une seule) personne. Chaque développeur produit des tests unitaires pour ses dévleoppements.
  • Une plate-forme d’intégration continue (de type CruiseControl ou autre) : Dès qu’une mise à jour de SVN est détectée, update de la branche, recompilation, déploiement scripté de la totalité du projet, et lancement des tests unitaires. Ainsi, pas besoin d’attendre plusieurs jours avant de détecter des problèmes d’intégration. C’est un peu long à mettre en place, mais ces techniques ont largement prouvé leur efficacité sur le moyen/long terme.
  • Une plate-forme de recette : Elle sert à valider fonctionnellement les développements. Celle-ci peut aussi être déployée à l’aide des scripts d’intégration continue pour faciliter. Je demande à mes équipes de mettre en ligne généralement deux ou trois fois par semaine. Cela permet aussi de suivre l’avancement général des développements et de ne pas être surpris la veille de la livraison :-)
  • Une plate-forme de pré-production : A l’identique “techniquement” (mais en version réduite pour limiter les coûts) de la plate-forme de production. L’objectif ici est de mettre en situation réelle (chez l’hébergeur, avec firewalls, DNS…) l’application avant déploiement pour réaliser une recette technique.
  • Une plate-forme de production : Pour limite la casse, dupliquer la production sur la pré-production avant recette technique. Préparer des scripts de retour en arrière (ca c’est la théorie, mais le jour où on en a besoin, on est bien content d’en disposer). Et enfin… faire les installation en production de préférence le lundi ou le mardi, jamais le vendredi (c’est toujours bon de le rappeler) !

Ca fait beaucoup d’environnements, certes, mais si la plate-forme est bien paramétrables (URL, DNS, adresses IP de chaque service) dans des fichiers de configuration, quasimment un seul fichier (web.config, config.php, autre…) peut permettre de paramétrer l’ensemble de la plate-forme.

Tout cela ne sont que des principes d’organisation et doivent être bien entendu couplés à l’organisation de l’équipe et les méthodes de développement (développement itératif, scrum, …)

Laurent

Rechute…

Demain, je retourne à « mes premiers amours » : PROGRAMMER !

Je vais à une formation Flex, organisée par Baao et sponsorisé par Adobe.

J’ai commencé ma vie professionnelle en développant des applications… en programmant quoi.

Je dois vous avouer : même si j’adore mon métier (à la frontière du marketing et de la technique), j’éprouve un grand plaisir à reprendre la programmation.

Pour tout dire, je me sens comme un gamin, qui « fait des légos en cachette alors qu’il a pleins de devoirs ». Vous voyez ce que je veux dire ?

Légo !

Organiser les développements

Quand on développe un site marchand, il est très important de bien organiser les développements.

En particulier, il faut très rapidement aller vers plusieurs plate-formes informatiques :

La plate-forme de développement

C’est sur cette plate-forme que les développeurs… développent.

Après avoir testé le bout de service qu’ils développent en local, sur leur machine, ils peuvent migrer le nouveau programme sur la plate-forme de développement et faire des tests, avec les programmes des autres.

La plate-forme de production

C’est la plate-forme en ligne, celle qui est visible par les clients, les Internautes.

La plate-forme de pré-production

C’est un sas, entre le développement et la production.

Cette plate-forme est tout à fait fondamentale, car elle permet de garantir que les nouveaux développements n’impliquent pas de régression.

Quand l’équipe estime que la version courante de développement est stable, on fait une migration, vers la pré-production, pour tout tester, dans tous les sens. Si les tests passent, on peut alors migrer, de la plate-forme de « pré-prod » vers la prod.

Simple, non ?

Mon avis sur l’affaire de la Société Générale : de la fragilité des systèmes d’information

Un traider serait donc la cause de 5 Milliards de perte pour la SG…

Pour arriver à ce niveau de perte, il aurait spéculer sur 50 Milliards d’euros !

Au début, je ne pensais pas que c’était possible, je penchais donc pour une maneuvre pour charger un bouc émissaire de tous les mauvais placements… Puis mes différentes lectures (ici par exemple) m’ont fait douté : oui, il semblerait que cela soit possible !

Pourtant, la SG dépense des sommes colossales pour son système d’information, dont pas mal de millions d’euros pour la sécurité et le contrôle.

Que peut on en conclure ?

A mon sens, ce qui est marquant, c’est la non maîtrise de ces systèmes d’information.

La pyramide

Pour arriver à un tel résultat, il faut que le système ne soit pas compris par les personnes qui l’analysent.

Et le prix que l’on paye une armée de consultants n’est pas un outil de mesure de qualité…

D’où mon image : la pyramide est inversée, le système est gros et lourd, mais quelques grains de sable peuvent tout faire tomber.

Update de 20h35

En relisant mon billet, je me suis dit que j’étais pas assez explicite.

Petit complément donc.

Un système d’information, c’est du code qui s’exécute. Ce n’est pas une abstraction.

Pour analyser un système, il faut analyser le code. C’est donc pas un travaille ou on manipule des abstractions…

J’ai travaillé dans les banques dans ma jeunesse. Les documents d’analyses ne correspondent pas à ce que font les programmes… Quand il y a des documents d’analyse ! Je me souviens d’une très grosse banque, qui avait un programme très important, au coeur du système. Le programme avait été écrit avec PAC, un générateur de programmes Cobol. Quand je suis arrivé, le programme PAC était perdu, il n’y avait aucun document d’analyse… Donc, la seule façon de comprendre les règles métiers, c’était d’analyser le code généré par PAC… C’est une illustration de la pyramide inversée. Dans un tel contexte, tout peut arriver !

Flash ou Flex ?

Quand on parle d’interfaces riches, il faut parler des technologies permettant de les mettre en oeuvre.

L’une des technologies phare, c’est le Flash.

On connait tous plus ou moins Flash, mais on parle de plus en plus de Flex.

Quelle est la différence ?

Qu’apporte Flex par rapport à Flash ?

Flash recouvre plusieurs choses :

  • Un format de fichier, le SWF, qui contient le média animé proprement dit (les images, les annimations, les films, …) ;
  • Un éditeur : c’est une application Mac ou PC, qui permet de créer des fichier Flash (SWF donc). L’éditeur est orienté design. On pose des images, des objets graphiques, sur une time -line, et on déplace les objets graphiques sur l’échelle de temps ;
  •  Un player : c’est l’application qui permet de lire le Flash. On peut lire un fichier SWF avec une application spécifique, mais le plus souvent, on utilise un plug-ins, intégré au navigateur. C’est donc le navigateur qui joue le rôle de player Flash.
  • Un langage de programmation : ActionScript. On écrit ses programmes depuis l’éditeur, et le langage est interprété par le player.

Flash est donc un ensemble permettant de réaliser des interfaces riches et animées. Flash est orienté design.
Et Flex alors ?

Flex, c’est la déclinaison Flash pour les programmeurs.

Quand on fait du Flex, on travaille en fait sur le même format qu’avec Flash : le SWF.

Pour le client, le résultat est donc exactement le même : c’est un contenu Flash qui apparait dans le navigateur Internet.

La différence, c’est sur la façon dé générer ce fichier SWF.

Flex introduit un nouveau langage, le MXML.

C’est un langage qui permet de décrire l’application Flash que l’on souhaite, et les comportements associés.

On se retrouve donc à faire du Flash, sans l’éditeur graphique, mais plutôt depuis un environnement de développement (Eclipse, …).

Donc, si le résultat est le même, la façon de le faire est complètement différente, et complémentaire.

Dans la réalité d’un projet, les deux approches doivent cohabiter : la partie graphique pourra être réalisée avec l’éditeur Flash, et la partie dynamique pourra être réalisée avec Flex.

Interface riche avec Sylverlight

Microsoft préfère utiliser ses produits pour présenter ses évènements… et c’est bien normal.

Pour présenter les Techdays 2008, Microsoft a développé ce site :

TechDays riches avec Sylverlight

Dans ce site, Microsoft met en avant la force de Sylverlight, à savoir la manipulation de video dans des contenus rich-media. Chaque « pola » est une video, et un clic sur l’une des image lance le petit film. On peut bien entendu déplacer, redimensionner, tourner chaque imagette en toute liberté. sympa.

Cerise sur le gateau, ça marche très très bien sur Mac (installation en deux ou trois clics, puis comportement très fluide).

C’est Brainsonic qui a développé ce petit site.

(Merci Manu pour le lien)

Sun rachète MySQL

Je viens de tomber sur cette news (ici).

Cette aquisition est complètement logique : MySQL est l’une des base de données les plus utilisées, quand on choisi de développer un service sur une architecture sur des logiciels libres. C’est donc un moyen pour Sun d’avoir plus de poids dans le business des services webs.
Le prix d’acquisition serait de 800 millions $ : logiciel libre et gratuit, mais pas sans valeur !

Pour info, le « libre et gratuit » est également au coeur de la stratégie d’IBM, et depuis longtemps. IBM gagne beaucoup d’argent sur le Hard, sur les développements « à façon » (le service quoi), et « donne » le logiciel. C’est une stratégie très forte qui permet à IBM de proposer une solution global (Hard, soft + intégration).

IBM injecte ainsi, par exemple, plusieurs millions $ par ans sur Eclipse, un environnement de développement libre et gratuit.

Architecture (macro) d’un service Web

(re)Passons aux choses sérieuses !

Donc la question, c’est quelle est la façon d’organiser un service web… comme un site marchand par exemple.

En particulier, comment traiter le coeur du service, c’est à dire les bases de données ?

Habituellement, on sépare le service web en « deux parties » :

  • Le front-office : c’est la partie visible par les clients du service. Pour un service e-commerce, c’est le site marchand lui-même.
  • Le back office : c’est donc tout le reste. En fait, le back office regroupe beaucoup de modules (suivant la taille des projets) : CRM, emailing, outils de tracking (business intelligence), lien vers le système logistique, …

Chaque partie à besoin de bases de données pour travailler.

Comment faire ?

  • Faire une seule base, et brancher tous les modules sur cette base centrale ?
  • Mettre une base par module, et développer des logiciels de synchronisation, pour que les données des différents modules soient cohérentes ?

En fait, il n’y a pas de réponse systématique, et il faut prendre en compte beaucoup de paramètres :

  • En règle général, il vaut mieux que le front office ai sa propre base de données, que cette base de données soit exclusive pour le front donc. L’idée, c’est que rien ne doit impacter le front office, qui est le moteur business.
  • On développe rarement les modules « à partir de rien » : on utilise un « framework » pour le front, un module type Sugar CRM pour le CRM, … Or, ces modules ont leurs propres bases de données.
  • Un autre paramètre est le nombre d’Internautes utilisant le Front. A partir d’un certain volume, on n’a plus le choix, il faut une base spécifique pour le Front.
  • Le prix bien sûr, prix des licences logicielles et prix des développements.
  • En particulier, si on a plusieurs bases de données, la synchronisation entre ces bases devient le point clé. Il faut développer des modules de synchronisation, avec des stratégies (quand doit on synchroniser, sur quels évènements). Il faut également penser aux évolutions : les bases de données sont faites pour évoluer. Il faut des modules de synchro pour gérer les versions des bases.

Dans tous les cas, il faut penser cette architecture des bases de données avec soin, c’est l’épine dorsale de tout le système.

Prédictions pour 2008

C’est le moment pour se lancer (mon billet précédent était plutôt une vision moyen / long terme sur l’avenir).

Donc, qu’est-ce qui nous attend pour 2008 ?

Contexte matériel et logiciel…

Explosion des interfaces multi-touch

Je suis convaincu qu’on est au tout début de cette révolution dans les interfaces.

L’iPhone ouvre le bal, la table « Surface » de Microsoft ouvre une autre voie…

Je pense (comme beaucoup d’autres d’ailleur) qu’Apple va poursuivre sa « croisade » en sortant rapidement un ordinateur portable, utilisant les technologies de l’iPhone… ça devrait faire un carton !

Vrai lancement des disques durs SSD

Tout est là pour que les disques durs sans disque dur (à mémoire flash quoi) se développent vraiment. C’est important car ça va changer la performance de nos ordinateurs (le disque dur est la partie la plus lente), leur poid et leur autonomie.

Sortie d’un ordinateur utilisant l’interface type DS

C’est une idée que j’avais en tête depuis longtemps (la métaphore du livre qu’on ouvre, avec un écran à gauche et à droite). Nintendo l’a fait avec sa DS, mais je pense que cette idée pourrait être reprise pour un ordinateur portable… Allo, Steve ?

Rachat (très cher) de Facebook par un grand (Google ? Microsoft ? Yahoo ?)

FaceBook ne peut pas laisser indiférent les grands acteurs Internet. La valeur du service est très élevée : savoir qui est en relation avec qui, ça vaut de l’or… Mon favoris serait bien Google, mais l’investissement de Microsoft peut changer la donne…

Bataille sur le terrain des interfaces riches : avantage Adobe

Rude bataille sur le terrain des interfaces riches, avec la monté en puissance de Microsoft avec Silverlight pour essayer de contrer Adobe sur le terrain Flash / Flex / Air. Mon pronostic : avantage Adobe en 2008, mais Microsoft nous a montré par le passé qu’ils savent tenir la distance, et qu’ils deviennent dangereux vers la version 4… Cela met la pression à Adobe, et c’est tant mieux pour nous !

Et pour le e-commerce…

Les grands acteurs multiplient les expériences « rich commerce »

Le Rich commerce : le e-commerce utilisant les interfaces riches pour vendre plus, vendre mieux, vendre différemment… Un vrai sujet, dont je vous reparlerais bien vite…

Comme je l’ai souvent dit, la solution est de choisir « le beurre et l’argent du beurre ». C’est à dire, poursuivre le développement du site « traditionnel », et de développer en parallèle d’autres sites, utilisant des interfaces plus innovantes. Ce n’est pas un hazard si c’est la stratégie d’Amazon…

L’autre axe, c’est d’enrichir le coeur du service, en ajoutant, aux bons endroits, des contenus « riches ». Je suis ainsi convaincu que la vidéo va poursuivre son développement en 2008.

Pour la 3D, je pense qu’il y a des expériences intéressantes, mais que le vrai développement de la 3D pour le e-commerce attendra encore un peu…

Développement de la poche de valeur, entre les marchands et les clients

C’est l’un de mes sujets favori !

Je ne prends pas beaucoup de risque sur un tel pronostic… Cette valeur est déjà bien réelle, avec des acteurs comme Kelkoo, Shopping.com…

Mais ce marché doit évoluer, se restructurer. Cette valeur est aujourd’hui bien peu cultivée !

Je prédit donc la sortie de nombreux nouveaux services sur ce secteur. Pour les utilisateurs, la difficulté sera de choisir parmi la multitude de services, qui se ressemblent un peu tous… Jusqu’à ce que certains trouvent la recette miracle, comme Facebook ans un autre domaine. Je pense que la concentration dans ce domaine se fera, mais plus tard (faut bien que j’en garde pour 2009 😉 ).

Vrai démarrage du m-commerce

Là je prend un risque. Je suis sûr que ce jour viendra, mais quand ? C’est une question compliqué, lié pour beaucoup aux grands opérateurs. Ils s’accrochent à leurs « vaches à lait » mais les brèches s’ouvrent, avec comme signe marquant le deal signé par Apple avec Orange (partage des revenus, entre Apple et Orange sur les services, services gérés par Apple et non par l’opérateur…).