NACA presented @ Jazoon 2009: mainframe/Cobol to Linux/Java migration

Date: June 23, 2009 Author: didier-durand Comments: no

Pierre & I presented the NACA project at Jazoon 2009 in Zurich. It was another nice opportunity to present our automated solution to migrate (we say “transcode” within Publicitas) 100% automatically a Cobol application to its iso-functional Java equivalent.

As Jazoon is a major Java conference in Europe, we could go into very specific technical details in front of the most competent audience.

Pierre described the architecture of our “transcoding compiler” and exposed all of its advantages. Read the ending slides of this ppt very carefully if you want to get all details (… or get in touch with us !):

  • many levels of cache to maximize performances of the new Java version of the old application. Through them, our Java-transcoded transactions and batches have better performances than their Cobol ancestors used to have on mainframe.
  • pre-allocation of all program variable structures (COMMAREA of COBOL) to further improve performances but also to minimize garbage collection that freezes the system while running.
  • strongly object-oriented architecture of resulting Java objects in order to maximize the effect of all controls done by compiler. As example, each old COBOL program becomes a Java class whose existence is checked at compile-time rather than at runtime. Very useful when your application is 4 millions lines of code like ours and when you want to track down every typing mistake in a continuous integration architecture like ours
  • strong integration with Eclipse IDE for highest productivity for developpers: we even developed a plug-in to facilitate debugging and edition of old COBOL programs from Eclipse
  • line-by-line equivalence between old COBOL programs and newly transcoded Java classes. The home developers don’t get lost: they receive afterwards a Java application with the exact same structure as the original COBOL version
  • support of IBM JVM as well as Sun JVM in order to also allow for the transcoding of stored procedures
  • support of distinct character sets and encoding schemes (EBCDIC) between mainframe & Linux. Support of all resulting possibilities for data sorting.
  • full management of multi-level COBOL data structures in Java independently of the UTF encoding (2 bytes per char) used by Java
  • transparency of wrapping framework (raw JVM, Apache Tomcat, etc…) for the application
  • etc…

We gave the URL of our open source (GPL licence) transcoding tools for participants. Please, give a chance to our tools if you enter such a migration project.

On my side, I emphasized the key aspects of such a project:

  • economic motivation as core driver: move from a multi-million (CHF or euros) mainframe environment to an incredibly cheap and nimble farm of Linux Intel-based servers. The massive savings (3 millions euros / year in our case) allow for a quick auto-financing of the project far before its end. The main virtue of Open Source for a company like us remains clearly its very very low price.
  • migrate people with technology: we believe that we succeeded in our project because we clearly demonstrated very early on to the people in place that they would find a new interesting job in the final constellation. That generated their full commitment to the project!
  • iso-functionality as a must: migrating in such a manner prevents months of discussion about the final target. But, mostly, it allows for 100% automatic migration, a key factor for quality in the transcoding.
  • no big-bang but numerous reversible steps: such a total migration with (tens of) thousands of new steps can never successfully reach the ends if you try big steps. Permanent incremental progress toward the goal is a much better approach. The nice consequences: small steps generate smaller local trouble when problems arise. Your users remain much more patient this way! Our experience was so…

[DE] Publisherconnect Firmenwhitelabel Lösung für Gfeller Consulting

Date: September 12, 2008 Author: oliver-hipp Comments: no

Gfeller Consulting & Partner AG ist ein grösserer Stellenvermittler in der Schweiz und arbeitet mit Publicitas Publiconnect AG zusammen.

Für den neuen Online-Auftritt auf www.gcp.ch konnten wir eine Publischerconnect Firmenwhitelabel Lösung (FirmenWL) einrichten. Die Verwaltung und Veröffentlichung der Offenen Stellenangebote erfolgen dabei durch Publisherconnect.

Die Verwaltung der Inserate durch den Kunden erfolgt dabei in MYP analog Dispositionen in herkömmliche Jobplattformen. In MYP wird pro Kunde und gewünschter, eigener Site ein eigenes Medium eingerichtet, welches mit der Publisherconnect-Instanz “Firmenwhitelabel” verbunden ist.

Der Kunde erhält dann von Publisherconnect einen RSSFeed, der es ihm erlaubt das Joblisting in seiner Site dynamisch einzubinden. Für die Details einer Position wird die Detailansicht von Publisherconnect angezeigt, womit der Kunde von den Publisherconnect Funktionalitäten profitiert (z.b. Tell-a-friend, Bewerbungsbutton etc). Hier der RSSFeed für Gfeller Consulting mit allen offenen Stellenangeboten.

Für Gfeller Consulting wurde pro Hauptkategorie ein RSSFeed erstellt. Die Kategorieauswahl konnte somit auch dynamisch implementiert werden (Kategorie wird nur angezeigt wenn Stellen vorhanden; Anzeige Anzahl Inserate). Die Integration wurde durch den Kunden resp. eine externe Agentur vorgenommen. Sie können diese hier anschauen http://195.162.152.163/infoglueDeliverLive_gcp/Home/KARRIEREANGEBOTE

Das Joblisting auf dem Publicitas Internetauftritt erfolgt ebenfalls mit FirmenWL: http://www.publicitas.ch/de/unternehmen/stellenboerse/

[DE] Publisherconnect Release 5.2.

Date: September 12, 2008 Author: oliver-hipp Comments: no

Am 11.08.2008 haben wir erfolgreich den Release Publisherconnect 5.2 in Betrieb genommen.

Inserate duplizieren
Dem Inserent steht neu bei jedem Inserat (aktiv/inaktiv) immer die Funktion “Neu Inserieren” zur Verfügung. Dabei wird der Inhalt des bestehenden Inserates komplett für eine neue Insertion übernommen. Bei Bedarf kann dieser natürlich entsprechend angepasst werden.

Buchen auf andere Plattformen
Neu wird es möglich sein, auf den Publisherconnect Marktplätzen auch Angebote mit externen Plattformen anzubieten. Der Content wird dabei durch den Publicitas Any2Any-Hub an die Plattformen ausgeliefert. Dazu wurde die Schnittstelle WLC2CMS entwickelt. über Ihren Marktplatz auch Angebote von Drittplattformen aufzunehmen.

Media-RSSFeed für PicLens
Für jedes Publisherconnect-Ad wird neu auch ein Media-RSSFeed generiert:
http://www.nzzdomizil.ch/nzzdomizil/feed/adDetailMediaFeed.htm?adId=NNNNNN.
Dies erlaubt es User die Bilder auch mit dem Browser-Plugin von www.piclens.com anzuschauen.

RSS-Feed mit Inseraten eines bestimmten Angebots
Neu wird die OfferId in den Fulltext-Index eines Inserates geschrieben. Dies erlaubt es RSSFeeds mit Inseraten eines bestimmten Angebotes zu machen.

[EN] Project NACA: open sourcing GPL/LGPL of the tools for transcoding Cobol programs to Java

Date: July 17, 2008 Author: didier-durand Comments: no

Update of March, 4th 2009: version 1.1 is now available: NACA-Package 1.1 (Runtime, transcoder, Tests + docs) (636)].   Details and change log in this post.

Publicitas publishes under Open Source license (GPL/LGPL) the source code of the tools developped to execute the project called NACA now successfully completed. Its aim was to migrate a homegrown Cobol application (named PUB 2000 - 4 millions lines of Cobol) running on an IBM/zOS mainframe toward its 100% iso-functional Java equivalent running on Intel-propelled Linux-based servers.

For those in hurry to get the package, the complete zip file is here:NACA-Package 1.0 (Runtime, transcoder, Tests + docs) (1242)

This version is clearly v1.0, i.e a first delivery: it will get improved over time through the feedback and contributions returned by external testers running the tools on their own infrastructure. New versions of runtime libraries (JLib and NacaRT) can also be expected because they are still heavily used in our own environment on a daily basis for the transcoded version of Pub2000.

Why this choice of licenses? Because we want to avoid that professional service consultancies takes this code back to the proprietary zone for their own single benefit. For those players, GPL brings a set of constraints that maximizes the return of their improvements to the community by preventing them from locking the source code of their changes. For end-user companies, the freedom brought by GPL is totally appropriate.

From another perspective, the LGPL + GPL combination allows application software editors to migrate their applications through our tools (NacaTrans), link them to our runtime libraries (NacaRT and Jlib), distribute the source code of those libraries but not the source code of their own application so that they can remain competitive in the industrial sector of their application.

The tools that we deliver today (v1.0) in the zip package:

  • Doc: a set of documents explaining in details the tools and libraries. Your feedback around this documentation, its missing points, etc. is essential in order to improve it.
  • NacaTrans (license GPL - approx. 83′00 lines of code code & 690 Java classes): our transcoder that allowed us to convert 100% automatically the 4 millions lines of our PUB 2000 application in COBOL to Java. It is very much based on compiler technologies. It analyzes the structure of the initial COBOL programs (supposed 100% valid) to bring them in an intermediate xml structure before generating the final Java code that extensively calls functions and uses classes of the runtime library NacaRT, itself depending on JLib. This new Java source code was very carefully designed: each line of Cobol generates very intentionally a single corresponding line of Java. The aim is to look like as much as possible like the original COBOL code in order to ease the maintenance by the original developers / maintainers who master the structure of their original Java programs. The completeness of the accepted syntax for all variants of Cobol is of course not guaranteed. But our own 4 millions of lines of code as well as additional tests on other external application tend to prove that the current coverage of Cobol by NacaTrans is already very high. We want to improve this coverage through your feedback for valid constructs that we don’t support yet.
  • · NacaRT & Jlib (license LGPL - approx 153′000 lines of code & 890 Java classes): those are the 2 runtime librairie who provide all the runtime transactional services for the application. They emulate all teh functions of a classical transactional monitor like CICS from IBM. At the same time, they also support all the COBOL constructs (for example, COMMARÈA structure with multiple data representation masks, management of specific data format like COMP-X, etc.)
  • NacaRTTest (license GPL): this is a test suite allowing us to test the correct output of the transcoder on a set of reference COBOL constructs. It’s the way to validate part of our transcoding algorithms. For a new user of NACA, this is definitely the place to start: when this runs on oyur infrastructure, you can feel pretty confident about your installation of the package.

All those components are also delivered with Eclipse project description files in order to facilitate their setup in a standard Java environment.

Now, the answer to your last question already on your lips: why does Publicitas undertake this delivery?

  • Because Publicitas has received quite a lot from the OSS community for our NACA project. We had to give back as much as we can: with this contribution, we want to return our highest possible contribution to the dynamics of Open Source.
  • Because we believe that this set of tools heavily tested in our environment can be an excellent starting point for other similar projects by other companies also wishing to leverage Open Source software as we did (see our various articles on this topic)
  • Because we still want to improve our tools and libraries as they remain used on a productive basis to handle our 750′000 transactions / day . We are interested in improving both the runtime libraries since Pub2000 runs on them but also the transcoder NacaRT itself . We still use NacaRT on a very regular basis for the transcoding of some programs that our developers decided (for valid reasons) to maintain from their COBOL source code. We even developed an Eclipse plugin to make this task simpler and more efficient.
  • Finally, because Consultas, our internal IT entity, mostly aimed at serving other group entities, developed through this project a set of very specific competences that they would love to reuse in other similar contexts. Consultas’ engineers love this kind of challenges! If you plan your own NACA, they may want to be part of it.

Now, it’s you turn: take the package NACA-Package 1.0 (Runtime, transcoder, Tests + docs) (1242), install it, run it and let us know: we’d love your feedback in the comments of this post.

PS: for more specific contacts around your particular case, you can email us at naca-contact@publicitas.com

[FR] Projet Naca: open sourcing GPL/LGPL des outils de transcodage COBOL vers Java

Date: July 17, 2008 Author: didier-durand Comments: 9

Mise à jour du 04 Mars 2009: la version 1.1 est maintenant disponible: NACA-Package 1.1 (Runtime, transcoder, Tests + docs) (636)].   Détails des nouveautés dans ce billet.

[Lien direct vers le package v1.0 source + docs à télécharger: NACA-Package 1.0 (Runtime, transcoder, Tests + docs) (1242)]

Publicitas publie sous licence Open Source (GPL/LGPL) le code source des outils développés dans le cadre du projet NACA (migration de son mainframe IBM/zOS sous Cobol vers des serveurs Intel/Linux sous Java) vers la communauté de l’Open Source. Cette publication a été récemment annoncée aux RMLL2008 de Mont-De-Marsan.

Pour ceux qui veulent commencer par télécharger les fichiers. Le fichier zip complet est ici: NACA-Package 1.0 (Runtime, transcoder, Tests + docs) (1242)

Cette version est clairement une première livraison (v1.0) : elle sera améliorée par les contributions (tierces) et documentée au fil du feedback donné par les testeurs externes qui feront fonctionner ces programmes Java sur leur propre infrastructure. De nouvelles versions sont également à prévoir autour des librairies JLib et NacaRT qui continuent par leur fonction même à être utilisées productivement par Publicitas et étendues au fil des évolutions de nos systèmes

La licence retenue est la licence GPL du GNU pour l’outil principal de transcodage et sa petite sœur LGPL pour les librairies associées.

Pourquoi ce choix ? Parce que nous souhaitons éviter le détournement de notre travail par des prestataires de services à but lucratif souhaitant utiliser ces programmes .pour leur seul bénéfice en le ramenant vers une zone propriétaire.

La GPL place, pour ces prestataires, sur les outils NACA un bon nombre de contraintes qui imposent le retour vers la communauté Open Source d’un maximum des améliorations faites par des tiers sur le transcodeur et ses librairies associées. Elle offre, par contre, une grande liberté aux sociétés utilisatrices finales.

La LGPL permet par ailleurs à des éditeurs de logiciels applicatifs de convertir leurs applications via nos outils (NacaTrans), de livrer nos bibliothèques runtime (NacaRT et JLib) en mode source mais de garder les bibliothèques de leur propre application en mode binaire afin de garder leur valeur compétitive dans le secteur industriel de leur application.

Les outils que nous publions aujourd’hui (v1.0) dans le fichier zip

  • ·Doc: un ensemble de documents explicatifs autour de ces outils. Votre feedback sur leur contenu, leurs déficits nous permettra de les améliorer.
  • NacaTrans (licence GPL - approx. 83′00 lignes de code code & 690 classes Java): notre transcodeur qui nous a permis de transcoder les 4 millions de ligne de Cobol de notre application PUB 2000. C’est en quelque sorte un compilateur qui analyse d’abord la structure des programmes Cobol initiaux (supposés 100% opérationnels) pour les amener dans une structure xml intermédiaire avant de générer un code Java faisant massivement appel aux classes et fonctions de la librairie de runtime NacaRT. Ce code Java généré a la particularité intentionnelle de ressembler au maximum au code source Cobol initial afin de favoriser la poursuite de la maintenance par les développeurs initiaux. L’exhaustivité de ce compilateur par rapport aux multiples standards du langage Cobol n’est clairement pas garantie: NacaTrans compile correctement nos 4 millions de ligne de COBOL. C’est la seule garantie. Cependant des tests complémentaires avec du code COBOL applicatif en provenance d’autres sociétés nous laisse croire que le taux de couverture du langage est excellent. Nous l’améliorerons encore avec le feedback de la communauté.
  • NacaRT et Jlib (licence LGPL - approx 153′000 lignes de code & 890 classes Java): ce sont les bibliothèques de runtime qui réalisent toutes les fonctions de gestion / fonctionnement d’un système transactionnel classique. Elles émulent tous les verbes d’un moniteur transactionnel comme CICS (voir docs) et réalisent aussi entre autres l’émulation du langage Cobol (par exemple, structure COMMAREA à masques multiples, formats de données COMP-X spécifique à COBOL, etc…)
  • · NacaRTTest (licence GPL): une suite de tests nous permettant de valider le fonctionnement correct de nos algorithmes de compilation. Pour toute personne qui installe la suite NACA dans son environnement, c’est la partie à faire fonctionner en priorité car elle tend à garantir une bonne installation de l’ensemble des composants

Tous ces composants sont livrés avec les fichiers de description de projet au format Eclipse afin de faciliter leur prise en main via des outils standards du monde Java.

Maintenant, la question que vous vous posez sûrement: pourquoi cette démarche?

  • Parce que Publicitas, ayant beaucoup reçu de la communauté Open Source pour le projet NACA, souhaite rendre autant que possible. Avec cette publication, nous pensons livrer une contribution à forte valeur ajoutée et très pointue contribuant activement à notre tour à la dynamique Open Source
  • Parce que nous pensons que nos outils éprouvés à l’aune de notre propre projet de migration puis à celle d’une année complète de fonctionnement opérationnel peuvent être une excellente base pour des projets similaires dans d’autres entreprises souhaitant elles-aussi bénéficier de tous les bénéfices de l’Open Source abondamment évoqués dans notre série d’articles sur le sujet.
  • Parce que nous souhaitons encore améliorer nos outils qui restent encore abondamment utilisés chez nous: ils gèrent toujours nos 750′000 transactions quotidiennes. Bien sûr , nous souhaitons travailler encore les librairies runtime (Jlib + NacaRT) puisque la version Java de PUB 2000 s’appuie abondamment dessus mais aussi sur le transcodeur NacaRT puisque nos équipes de développement ont fait le choix pour des raisons spécifiques de continuer à maintenir une fraction minoritaire de nos programmes directement en Cobol et de les recompiler au vol en Java. Nous avons développé un plug-in Eclipse à cette intention
  • Parce que Consultas, notre société informatique essentiellement interne, a développé une palette de compétences très spécifiques à cette occasion. Sans en faire son cœur d’activité mais pour malgré tout valoriser ce savoir-faire et surtout permettre à ses ingénieurs de se frotter à d’autres problématiques similaires pour s’aguerrir encore, Consultas prendrait volontiers quelques mandats de support / mise en place / extension de ces outils pour d’autres sociétés se lançant dans leur “propre NACA”.

Voilà, à vous de jouer: prenez le package complet NACA-Package 1.0 (Runtime, transcoder, Tests + docs) (1242) et mettez-le en place dans votre contexte. Faites-nous part de vos suggestions par vos commentaires sur ce billet.

PS: pour des contacts autour de projets particuliers, vous pouvez nous contacter aussi plus spécifiquement par email à cette adresse: naca-contact@publicitas.com

[FR] Projet NACA: migration Mainframe IBM vers serveurs Intel/Linux - motivations et stratégie

Date: July 17, 2008 Author: didier-durand Comments: no

[Update: Publicitas a mis les outils de NACA en Open Source. A télécharger depuis cette page. Toutes les infos disponibles sur le projet sont ici]

Cet article est le premier d’une série qui décrira le projet NACA ayant conduit au remplacement d’un mainframe IBM sous MVS/OS390 par des serveurs Intel sous Linux. Le projet a été lancé en Janvier 2003 et s’est terminé avec succès au 30 Juin 2007. Il a été réalisé volontairement de manière 100% iso-fonctionnelle (i.e. sans aucune modification pendant et par le transcodage) pour l’application et a permis la conversion automatisée de 4 millions de lignes de Cobol vers leur équivalent Java. L’économie en cash-outs - paiements externes - est de plus de 85% de leur montant annuel = initial d’environ 3 millions d’euros annuels

Tout d’abord le nom du projet:

  • en français, NACA = “Nouvelle Architecture Centrale d’Applications”
  • en anglais, NACA = “New Architecture for Core Applications”

Comme le titre de l’article et l’acronyme ci-dessus l’indiquent, ce projet lancé chez Publicitas a eu pour objectif initial la conversion d’un mainframe IBM modèle G5 exploité via les logiciels standards habituels (MVS/OS390, CICS, COBOL, DB2) vers son équivalent naturel dans le monde du Logiciel Libre (Open Source):Linux, Java, Tomcat, UDB. Il s’agissait d’amener l’application commerciale maison, appelée PUB 2000 et développée à la fin des années 80, vers un environnement technologique moderne et efficace.

Nous avons lancé ce projet à mi-2002 sur le constat que l’Open Source “montait en puissance” et était utilisé sur des applications autrement plus critiques que la nôtre: de multiples exemples émergeaient déjà dans le monde des industries classiques: énergie, aéronautique, aérospatial, finance avec des noms prestigieux comme Boeing, Sony, Nasa. Toutes ces applications industrielles trouvées au travers de notre veille technologique avaient des niveaux de charge et de volume bien supérieurs aux nôtres. Notre activité est d’environ 750′000 transactions par jour effectuée par une population de 1′500 utilisateurs environ.

Par ailleurs, dans un domaine moins habituel pour Publicitas, des startups (de l’époque….) comme Google nous montrait qu’elles arrivaient à délivrer sur Linux un service de qualité impeccable à des très hauts volumes de charge. Certes, à l’époque pas encore avec 1 million de serveurs pour délivrer 120 milliards de pages chaque mois mais quand même avec déjà des niveaux de charge bien supérieurs aux nôtres. Côté fiabilité, la solidité prouvée de l’Open Source est bien décrite par la célèbre Loi de Linus (Torwald, père de Linux) énoncée par Eric Raymond dans son essai “La cathédrale et le bazar” (à lire ou relire, impérativement!). Cette loi dit donc “Étant donnés suffisamment d’observateurs, tous les bogues sautent aux yeux” Les feux étaient donc au vert et nous sommes lancés, conscients que de nombreux écueils se trouvaient encore devant nous car une telle migration Mainframe MVS était pour le moins pionnière (voire inconsciente ou hérétique au gré des interlocuteurs…)

Mais, nous sommes partis dans l’exploration des possibilités technologiques pour NACA car la première motivation du projet était massive: le mainframe IBM nous coûtait en “cashouts” (sommes payées aux fournisseurs IBM et tiers) environ 3 millions d’euros par an. 80%+ de cette somme, soit pas loin de 2.5 millions d’euros partaient dans les licences de location des logiciels utilisés comme “carburant de la grosse boîte”.

Le calcul financier initial était donc simple (même simpliste pour certains…) : le Logiciel Libre est gratuit. La plate-forme mainframe IBM supporte le Logiciel Libre et le remplacement intégral des logiciels propriétaires d’IBM et des tierces parties par leurs équivalents Open Source permet donc réduire les coûts annuels de 2.5 millions par euros. Si on calcule abruptement…

[Note: IBM annonçait à l'époque - preuve avec le code source à l'appui - que moins de 1% du noyau de Linux était modifié pour supporter sa plate-forme hardware mainframe de la série G.On parle donc véritablement du même logiciel Open Source que pour des serveurs Intel]

Ces économies très consistantes représentaient une motivation suffisante aux yeux des gestionnaires des finances de PubliGroupe pour lancer le projet puis le soutenir dans les moments difficiles qui ne manqueraient pas de survenir (on en reparlera dans les prochains épisodes…)

Nous sommes partis avec les objectifs et lignes directrices:

  • migration douce: le “big bang” de la migration globale de l’ancien au nouveau système en une nuit a été banni d’entrée. Les uns et les autres de l’équipe connaissaient tous des projets internes ou externes ayant échoué par la volonté de passer “la grande marche” en 1 seule étape. Nous avons donc décidé de construire comme chemin de projet plutôt un long escalier doté de multiples petites marches permettant de progresser irrévocablement (mais avec retour arrière possible à chaque fois)
  • transcodage iso-fonctionnel et automatique: il s’agit d’éviter le mélange des genres qui conduit le plus souvent à l’émergence de nouvelles contraintes souvent fatales. Donc, nous avons décidé de migrer les fonctions écrites en Cobol 1 pour 1 vers Java. A la sortie, le code Java fait juste la même chose que le code Cobol. Il le fait et juste pour beaucoup moins cher….
  • préservation des équipes en place: les collaborateurs fidèles à l’entreprise et au système depuis 20+ ans sont les plus aptes à le faire migrer. Pour autant que l’on injecte juste le sang neuf nécessaire à l’infusion des nouvelles compétences Linux et Open Source.

Le principe de la migration douce est de construire le nouveau système non pas en parallèle (i.e séparée) du système historique mais plutôt de bâtir progressivement le nouveau système en remplaçant des parties de l’ancien et en interconnectant les nouveaux composants avec l’ancien système pour délivrer une qualité de service au moins identique (voire meilleure) en permanence aux utilisateurs sans créer de césure entre ancien système et nouveaux composants. La conséquence directe de cette stratégie est que l’on commence la migration du système par les couches basses puis que l’on remonte “la pile des niveaux logiciels” pour terminer par l’application maison.

Avantage de cette progression”bottom-up”: les administrateurs du système gérant habituellement ces couches basses sont les premiers à quitter l’ancien monde vers le nouveau. Ils ont donc la possibilité de dominer les technologies (nouvelles pour eux) du monde Linux et de s’y sentir très à l’aise quelques mois plus tard quand c’est le moment pour les développeurs applicatifs d’y entrer.

Par ailleurs, le transcodage iso-fonctionnel et automatique est essentiel pour la fluidité du projet. En effet, en utilisant un outil (que nous avons fini par développer “maison” - j’y reviendrai dans un autre article) de transcodage 100% automatique, on peut continuer la maintenance applicative fonctionnelle dans l’ancienne version et faire passer “fluidement” les nouveautés dans le nouveau monde par simple transcodage.

On n’impose ainsi aucune date à la mise en service de la nouvelle version Open Source de l’application qui serait par exemple due à un respect d’une nouvelle réglementation. Dans une telle situation, un conflit entre une nouvelle technologie applicative qui ne fonctionnerait pas comme prévu et une obligation règlementaire impérative pourrait avoir des conséquences dramatiques pour le projet.

Avec le stratégie retenue pour NACA, au contraire, les développeurs font leur maintenance sur l’ancien code COBOL jusqu’au jour où la nouvelle application Java est certifiée comme valide pour la production après plusieurs semaines d’utilisation opérationnelle satisfaisante. A ce moment seulement, le Java transcodé devient le nouveau code source. Avant, il n’était qu’un langage intermédiaire de compilation. [On y reviendra dans tous les détails ultérieurement]

Enfin, nous avons décidé de préserver les équipes en place au maximum en les formant au maximum sur les technologies Open Source. Le deal est très simple:

  • une telle migration ne peut se réaliser sans la participation la plus entière des équipes en place. Il y a des dizaines de milliers de détails à connaître et à traiter de manière anticipée pour éviter au maximum tous les écueils (fatals) pouvant tuer le projet. Lancer les “jeunes loups de l’Open Source” contre les “vieux crocodiles du mainframe” serait la pire des erreurs de conduite d’un tel projet
  • la plupart des membres des équipes (système et développement) en place souhaitent faire évoluer dans leur expertise quand il voit que le monde change autour d’eux. Ils suivent aussi l’émergence de l’Open Source depuis leur cockpit du mainframe et donc sont prêts à se convertir avec peu de résistance - quand les objectifs précédemment évoqués leur sont expliqués clairement - pour poursuivre leur carrière en tant qu’experts du monde Linux dès qu’on leur offre le service de formation nécessaire. Les experts technologiques pointus aiment le rester et savent faire ce qu’il faut en termes de “bits and bytes” pour adapter leurs connaissances généralesd’architecture informatique à une “nouvelle quincaillerie” qui fonctionnent le plus souvent sur les mêmes grands principes que la précédente génération (juste une syntaxe de commande un peu différente…)

Pour terminer ce premier épisode, j’attirerai l’attention sur le fait qu’une telle migration de l’application maison d’un contexte propriétaire fermé à un contexte Open Source ouvert apporte aussi un avantage intangible (i.e. pas quantifiable en euros) lorsque l’on démarre: celui de replacer l’application sur une plate-forme à partir de laquelle les mécanismes d’interaction avec le reste du monde (i.e. autres applications de la société) deviennent 10 / 100 /1′000 fois plus simples.

On peut donc intégrer cette application d’une manière beaucoup plus efficace et rapide: des processus “historiques” semi-automatisés et peu rapides de transfert de données d’un système à l’autre (les célèbres “moulinettes” d’import-export inter-systèmes) peuvent être remplacées par des communications directes en temps réel (type RPC - Remote Procedure Call) entre les blocs du système informatique global (par exemple entre l’application commercial et le système CRM)

En conclusion, le catalyseur initial d’un tel projet est sûrement le montant consistant des économies réalisées mais le vrai bénéfice à long terme est de replacer le système de l’entreprise dans un contexte technologique moderne qui lui permet d’améliorer son business parfois de manières imprévues au début du projet mais très significatives. Et tout cela, pendant toute la durée du projet (4.5 ans pour nous) sans jamais perturber l’évolution de l’application via la magie du transcodage automatique….

Exemples de tout ceci dans les futurs billets. Donc, à suivre!

[EN] Project NACA: migration from an IBM mainframe to Intel/Linux servers - rationale and strategy.

Date: July 17, 2008 Author: didier-durand Comments: 1

[Update: We have open sourced our tools: check this page to download them (all info about NACA on this blog is  here)]

This article is the first of a series that will describe the NACA project run by Publicitas, advertising sales company based in Switzerland and executed by Consultas, IT subsidiary of the group.

It was about replacing an IBM mainframe under MVS/OS390 (zOS) with Intel servers on Linux. The project started in January 2003 and successfully ended on june 30, 2007. It was on purpose implemented in a 100% iso-functional way, i.e. without any functional / applicational improvement brought during the process of trans-coding itself and by the transcoding engine. 4 millions lines of COBOL were 100% automatically trans-coded toward their Java equivalent.

The savings in cash-outs amounted to a total of 3 millions euros, 85% of the initial yearly level.

First of all, meaning of the project name:

  • in French, NACA = “Nouvelle Architecture Centrale d’Applications”
  • in English, NACA = “New Architecture for Core Applications”

As the title of the article and the project acronym imply, NACA was launched within Publicitas (Lausanne, Switzerland) to initially convert an IBM mainframe model G5 operated through the standard palette of “big iron” software (MVS/OS390/zOS, CICS, COBOL, DB2) toward its canonical equivalent in the Open Source world: Linux, Java, Tomcat, UDB.

The aim was to transfer the homegrown administrative application (called PUB 2000 - developed at the end of the eighties) to state-of-the-art technologies, i.e modern and efficient.

The first thoughts around the project emerged in July 2002 when we realized that Open Source software was gaining ground and was already heavily utilized for applications much more critical than ours. Multiple case studies were published about core applications in key industries: energy, aeronautics, space, finance, with famous names like Boeing, Sony, Nasa. Most of those industrial applications were run at much higher load with more severe performance / availability constraints than ours. Our own activity is around 750′000 transactions done by approx. 1′500 internal users.

From another perspective, the highly successful startups of that time like Google were demonstrating that Linux can be the cornerstone of a very large scale infrastructure delivering a complex service over the Internet, By that time, it wasn’t yet through 1 million servers delivering 120 billions pages per month but the load level of Google was already far higher than ours. About reliability, the proven resilience / reliability of Open Source is best described by Linus’ law (Linus = Linus Torwald, father of Linux) made famous in the essay of Eric Raymond named “The Cathedral and the Bazaar“: “given enough eyeballs, all bugs are shallow”.

All lights were green. So, we decided to launch the project knowing that many hurdles and unknowns were still in front of us: such a full migration from a mainframe under zOS was (minimally) to be considered as pioneer work. Some even said by that time that it was crazy or heretic…

But, we started to explore the technological possibilities for NACA because the first motivation was massive and critically important: the mainframe had a yearly cost of 3 millions euros paid to IBM and third parties and 2.5 millions euros, i.e. 80%+, were used operating the hardware.

The initial business case was simple (some even said simplistic…) : Open Source software is more or less free. IBM mainframe hardware can run Open Source. So replacing each component of the mainframe palette by its OSS counterpart would save us millions of euros. The only point being that you have to accept this brutal computation…

[Note: IBM was by then publishing figures saying that less than 1% of linux kernel had been modified to run on the mainframe hardware of series G.

So, mainframe Linux is clearly the same as the one running of Intel servers]

Those massive savings were attractive enough for the management and financial staff of Publicitas to authorize the project and support it further during the various troubled periods that always happen during the course of such a risky project. Those troubled times will be the core topic of a subsequent article.

We started NACA with following objectives et guidelines:

  • progressive migration: the one-shot “big bang” of a global migration from the old system toward the new one, implemented over a single week-end was banned from day 1 and for ever. All team members knew internal or external “big bang” projects that failed after a couple of unsuccessful “big step” trials. So, we decided to build our project path rather than as a very long stairway with as steps as possible, those steps being as small as possible. The idea was to achieve many incremental and irrevocable (but always reversible) successes.
  • 100% automatic and strictly iso-functional trans-coding: we did not want to mix genders between technology update and application improvement. This confusion inevitably leads to additional constraints becoming lethal most of time. So, we decided to migrate each COBOL function to its strictest equivalent in Java. So, at the end of the project, just the same application but delivering the same value for a drastically reduced cost. In addition, the automatic (i.e. costless) trans-coding means that the Cobol maintenance doesn’t have to be interrupted: the next run of the transcoder transfers the newly implemented Cobol code to its Java equivalent. So, the end users remain happy while the system engineers achieve their technological marathon over the many years of such a project.
  • continuation with teams in place: the employees loyal to the company and its IT system over 20 years are the best experts to execute a smooth migration. Knowing that system engineer spend their career learning new technologies, shifting to Linux is just another milestone on this road. We just added a couple of linux- and OSS-oriented “rookies” to accelerate the technology adoption.

The tactics of this progressive migration is clearly NOT to build the new system in parallel to (i.e separated from) the old one. It is rather about replacing one by one components of the legacy system with OSS technological equivalent in the live production environment. The target is to preserve the quality of service of the old world in the new system under permanent mutation. Thus, the end-users never perceive the launch of a new system but rather sense the permanent evolution of functions that have always been there. This evolution also brings improvements at no big cost: for us, THE example is the generation as pdf files of our administrative documents (orders, vouchers, etc.): in the mainframe world, it was always too expensive to be done but under Linux it came for free in course of migrating the print management system.

The consequent logical order is to start from the lower system layers of the system stack and then go up toward the application layer: the transcoded Pub2000 could not be launched before the ground layers were there!

The advantage of this bottom-up progression is clear: the existing systems engineers are the first employees to get involved. As such, they become clearly the owners of the new system and master all the Linux and other OSS technologies before anybody else. They feel then highly comfortable and have no fear of being displaced when the developers enter the game a few months later.

From another perspective, the iso-functional transcoding to Java is essential: by using such a cross-compiling tool (that we ended up developing by ourselves in order to achieve the 100% automation that we targeted initially - I’ll come back on that in a subsequent article), the functional maintenance of application is never interrupted. All changes made to Cobol are smoothly, instantly and at no cost transferred to the Java version in the next run of the transcoder (almost done on an hourly basis)

.This relieves a very important constraint on the new Java / OSS version of the application: no firm release date is really needed from a functional standpoint. If, let say, a new legal function was implemented only in the new Java version after hand-tweaking of the half-baked java code, a delay on the productive release of the Java version could be dramatic for the entire project.

On the contrary, with the strategy that we chose for NACA, our developers did their functional maintenance on the cobol version (as they always did) until the new java version was satisfactorily used by 100% of our end users (progressively migrated groups by groups) for several weeks in the production environment. At this time only, the transcoded Java version of the application became the official new source code of PUB 2000. If any problem had occurred in this process and in the worst case, we could have brought 100% of the users back on the mainframe in matter of minutes.

It never occurred, by the way.

But this careful and parallel progressive allowed us to make quietly some (unexpected) stops in user migration at points were some performance thresholds were reached in our Java architecture: our java / database experts would then adapt the system architecture or transcoding + runtime strategies to overcome the hurdle and we could proceed further with more migrated users. [All details in a subsequent article].

Last but not least, we wanted keep the very loyal teams in place even though the entire system was eventually changed. We offered all of them a very intensive OSS training package. The motivations were those:

  • Such a migration can’t succeed without full support of the team mastering the legacy system. Ten of thousands of tiny details (Remember: the devil is in them!) have to be handled for the project to succeed. So, hoping to generate competition by trying to oppose the young wolves of OSS to the old crocodiles of legacy mainframe would be a clear fatal mistake.
  • Most system engineers are used to change the horse that they ride (i.e the operating system that they master) many times over their career. At the end of the day, this is just another occurrence of such a switch! When they see that the world around them is deeply changing around them through a massive migration toward OSS, they welcome (with minimal resistance to change) any opportunity that allow them and their competences to also switch through a good training. Fundamentally, they are more experts in system architecture than in any specific operating system. It means that they just have to learn a new set of “bits and bytes” habits to transfer their expertise to the world of Linux and OSS. The core fundamentals of most operating systems remains essentially the same whatever the name of the OS is! It is just another command syntax and parameter definition format to learn…

To close this first episode, I would like to add that such a migration from proprietary world also brings intangibles advantages that are eventually almost as important (more important than ?) as the very sexy financial fact-based ROI that you can demonstrate for such a project.

Those intangibles advantages can be presented in one sentence: “we are back in the market”. And even if you can’t equate this to euros, it has a clear value:

  • you can hire new engineers in a much simpler way: mainframe system engineers tend to become rare and then expensive!
  • you can interconnect the new version of the application in a so much easier way with other internal systems (CRM, SAP, etc..) as well as with external sites over the Internet (E-commerce, E-business). Those interconnections suddenly become 10 / 100 / (1000 ?) times more easier when you can rely on the full J2EE environment as well as on tons of open source java library.

You can then integration your home grown application in a much more flexible and efficient way to newer components of the IT systems: the old file exchanges, data conversion and import / export processes can disappear to be replaced by synchronous real-time data exchanges over any kind of remote procedure call. This clearly brings value to the business through processes that are accelerated.

As a conclusion, the only valid initial catalyst of such project are savings. They are so massive that they get the attention of any CIO. But, when those savings are achieved, another benefit probably even more important emerges: the company can now significantly improve its business through IT in ways that were only unachievable dreams before the migration. Some were not even anticipated!

And to close the loop, those improvements can even be financed through the savings just achieved via the migration…

Stay tuned for more details on specific topics in upcoming articles!

[FR] Des milliers de pubs automatiquement sur Google, Yahoo, Microsoft (projet GymAd)

Date: July 15, 2008 Author: didier-durand Comments: no

Ce billet présente le projet (GymAd) développé ces derniers mois par Publicitas.

GymAd est donc une technologie que nous avons développé depuis le début 2008 alliant plusieurs objectifs:

  • aider les annonceurs dans leur publicité sur les 3 moteurs de recherche, segment qui explose ces dernières années.
  • leur permettre de travailler à très grande échelle (centaines ou milliers d’annonces) simultanées sur les moteurs pour vanter spécifiquement les mérites individuels de chacun de leur produit. Il ne s’agit pas de publicité de marque (”branding”) mais réellement de “direct marketing” permettant de pousser les milliers de produits d’un distributeur sur les moteurs en liant les annonces textes publiées sur le moteur aux pages du produit sur le site de l’annonceur. A leur tour de pouvoir faire marcher pour leur bénéfice le mécanisme de l’agrégration, modèle gagnant du web 2.0.
  • pour chaque produit (chaque annonce), des dizaines de mots-clefs sont utilisables car sélectionnés automatiquement à partir d’une analyse lexicale/sémantique des pages web initiales du site de l’annonceur. La “Longue Traîne” des mots-clefs SEM est donc utilisable: il s’agit d’éviter les mots leaders trop chers et de pouvoir maximiser le nombre de clics obtenus par euro dépensé en se retranchant vers des mots moins courus sur les enchères d’achat de ces mots.
  • sii un produit (… et la page qui le décrit) durait très longtemps , on pourrait envisager encore de saisir ces centaines d’annonces à la main car le jeu en vaudrait la chandelle. Mais, actuellement, la durée de vie des produits raccourcis. Je ne parle même pas de la durée de vie des pages web qui les décrivent…. Ce côté éphémère des produits poussent de plus en plus les revendeurs à lancer des actions spéciales de liquidation des produits quelques mois après leur sortie quand leur successeur pointe déjà le bout de son nez….

En résumé, publier pour peu de temps sur Google , Yahoo, Microsoft des annonces éphémères à large échelle avec des dizaines de mots-clefs est clairement un travail qui ne peut-être manuel. Il doit être automatisé par la technologie idoine.

Dans l’un des métiers de base de Publicitas, celui des annonces classées publiées sur Internet. la problématique est exactement celle que je viens de décrire plus: le nouveau challenge est donc d’amener vers une annonces classée (annonce immobilière, offre d’emploi) en ligne un maximum de contacts en un minimum de temps afin de permettre à l’annonceur de solder sa transaction au plus vite.

Dans un tel contexte, il est clair qu’il serait stupide de se priver des 100 milliards de pages générées chaque mois sur le seul Google.

Nous avons donc développé GymAd, un moteur logiciel 100% automatique qui nous permet de:

  • détecter par divers moyens (on peut aller jusqu’au crawling / analyses de pages “à la Google”) l’apparition de pages nouvelles correspondant à des objets à publier sur GYM
  • composer l’annonce à partir des éléments de contenus dans la page
  • sélectionner un maximum de mots-clefs à partir du même contenu de la page
  • insérer automatiquement annonces publicitaires + mots-clefs associés sur les 3 moteurs GYM pour obtenir du trafic routé vers les pages du site web d’origine. Les APIs publicitaires mises à disposition par les moteurs prennent là tout leur potentiel.
  • surveiller la disparition de la page sur le site d’origine pour faire disparaître les annonces GYM dans la foulée
  • consolider les résultats (clics, impressions de page) pour l’annonceur afin qu’il puisse mesurer les résultats / l’efficacité de ses dépenses publicitaires.

C’est l’automatisation totale de GymAd qui permet de fonctionner ainsi à la fois à très grande échelle, sur des objets éphémères et en utilisant un maximum de mots-clefs permettant l’accès aux “zones peu courues” donc moins chères…

Comme dit, l’évolution explosive de la publicité sur les moteurs de recherche et réseaux d’affiliés associés va la faire entrer à bon rang dans le media mix des distributeurs-détaillants et ce n’est qu’un outil 100% automatique comme GymAd qui permettra à ce type d’annonceurs d’assurer efficacement ces nouvelles formes de promotion commerciale.

N’hésitez pas à nous contacter en cas d’intérêt.

[FR] NACA: Présentation du projet aux Rencontres Mondiales du Logiciel Libre (Mont-De-Marsan)

Date: July 14, 2008 Author: didier-durand Comments: no

Comme promis aux participants à la conférence et peut-être d’intérêt pour les lecteurs de ce blog, voici donc ma présentation faite hier aux RMLL 2008 à Mont-De-Marsan.

fichier à télécharger = NACA - Presentation RMLL 2008 (159)

Vu le contexte de cette conférence (orientation entreprises), j’ai ajouté des considérations supplémentaires aux autres billets de la saga rappelés en fin de cet article.

Application critique et Open Source:

  • Risque: vous n’êtes pas seul - Google, NASA, Boeing, Airbus, Areva, Wall-Street etc.. l’utilisent aussi et à des échelles énormes
  • Qualité: relire “la Cathédrale et le Bazar” de E. Raymond
  • Performances: le RoadRunner (#1 au monde - 1.026 pétaflop) fonctionne sous Linux !
  • Sécurité: la “sécurité par l’ignorance” (logiciels propriétaires) n’est pas bonne - La dissection par la communauté Open Source est bien plus solide
  • Support: seulement les forums ? ou plus….. ? notre choix pour NACA de la distribution RedHat avec son support professionnel

Bénéfices intangibles:

  • Open Source = standards.En migrant vers le libre, on respecte naturellement les standards (de facto ou de jure) de l’informatique: XML, J2EE, SOA, HTML, etc..
  • Migration -> modernisation: interface graphique pour tous les services systèmes (Webmin, etc.) outils modernes et très “pointus”
  • Nouvelles fonctions “bonus”: qq. exemples
    • arrivée dans le monde Java / Linux ouvert: intégration globale beaucoup plus simple (communication RPC synchrone et temps réel)
    • PDF très cher / compliqué sur le mainframe ? naturel sur Linux (permet une digitalisation complète
    • Système d’archivage (Knowledge Tree) permet une recherche “full-text.
    • Architecture à croissance horizontale plutôt que verticale ? plus de décisions d’upgrade complexes
    • remplacement de fonctions maisons en Cobol par des packages Open Source (tris, etc….)

Points critiques:

  • Le business case initial doit être clair: les avantages financiers énormes de l’Open Source sont la motivation la plus évidente directe du projet
  • La progression à multiples petits pas et la réversibilité de chaque mutation sont essentielles
  • Les inventaires des fonctions (applicatives et système) en production doivent être 100% à jour -> nous aurions pu faire mieux….
  • L’iso-fonctionnalité est un must: permet le transcodage automatisé et le fabrication quasi-gratuite de jeux de tests critiques au succès du projet

Bénéfices:

  • Economies (vrais “cash-outs”) de plusieurs millions d’euros / an
  • Grande stabilité et excellentes performances
  • Un système technologiquement à l’état de l’art ? la base technologique pour bâtir le successeur de l’application PUB 2000 (chantier démarré)
  • Construction d’un propre centre de backup (qq. serveurs…)
  • Architecture à croissance horizontale avec très faibles incréments
  • des équipes mutées à ces nouvelles technologies (pari humain réussi !)


Pour ceux qui auront au bout de la présentation, ils verront que nous avons annoncé durant cette conférence la mise en Open Source prochaine de nos outils de transcodage Cobol vers Java: NacaTrans, NacaRT et NacaTools. Les détails seront annoncés prochainement sur ce blog.

[Rappel: cet article fait partie d'une série qui décrit le projet NACA ayant conduit au remplacement d'un mainframe IBM sous MVS/OS390 par des serveurs Intel sous Linux. Le projet a été lancé en Janvier 2003 et s'est terminé avec succès au 30 Juin 2007.

Il a été réalisé volontairement de manière 100% iso-fonctionnelle (i.e. sans aucune modification pendant et par le transcodage) pour l'application et a engendré la conversion automatisée de 4 millions de lignes de Cobol vers leur équivalent Java. L'économie en cash-outs - paiements externes - est de plus de 85% de leur montant annuel = initial d'environ 3 millions d'euros annuels

Articles déjà parus:

]

[FR] présentation SEO à SES2008 (Paris

Date: July 11, 2008 Author: didier-durand Comments: 1

Comme promis, voici les slides de ma présentation à la conférence SES 2008 de Paris qui s’est terminée hier soir.
Il est complet alors que je n’en ai présenté qu’une plus petite section vu le temps imparti à chaque orateur.

Mon plan de présentation complet:

  1. présentation brève de Publicitas / Didier Durand
  2. SEO: situation / enjeux
  3. SEO: un peu de théorie
  4. AJAX - spécificités SEO
  5. “Trucs” (de base) persos SEO
  6. * Conclusions

2 manières de le voir (34 slides au total):


Tout commentaire (même acerbe! ;-)…. ) sur les avis / affirmations de cette présentation est bienvenu!