Technologies Java
Java, Spring Framework, Hibernate, JPA, Talend
Je propose mes services de conseil dans le domaine des technologies de l’information et de l’ingénierie logicielle. Voici un passage en revue des technologies sur lesquelles je peux intervenir.
ETL : Talend
Talend est un outil très puissant destiné à construire des programmes d’extraction, de manipulation et d’importation de données. Il est gratuit et intègre nativement toute une série de composants et de connecteurs (FTP, SFTP, HTTP, SOAP, Oracle, MySQL, CSV, XML, JSON, Excel, …) offrant une rapidité de mise en place et une robustesse des programmes.
Expériences : 6 ans. J’ai construit un nombre important de « Batch » sur des sujets très variés : Business Intelligence, exports de données, déclenchement de processus métier, … Et j’ai également une forte expérience sur les bonnes pratiques pour faciliter leur maintenance et leur exploitation.
Compétences : Intégrer efficacement Talend dans un système d’informations et dans une équipe de développement. Construire et maintenir des programmes Talend intégrant les bonnes pratiques en matière de configuration, d’intégration des cas de reprise, et de livrable destiné aux administrateurs systèmes. Construire de nouveaux composants Talend spécifiques ou adapter les composants existants.
Java J2EE et Spring Framework
Spring Framework est une suite de composants open-source permettant de bâtir une architecture Java J2EE. Spring centralise la gestion des dépendances applicatives (services, librairies externes, fichiers de configuration, …) afin d’assurer un couplage faible au sein de l’architecture. Spring fournit également des composants « prêt à l’emploi » pour l’abstraction de bases de données, pour la gestion des transactions, pour la mise en place d’un modèle MVC, pour l’utilisation de l’AOP (programmation orienté aspect), …
Expériences : 6 ans. J’ai eu l’opportunité de concevoir, de mettre en place, de maintenir et de faire évoluer un socle applicatif basé sur Spring, dans le cadre d’une refonte de système d’informations, en utilisant notamment une couche d’accès aux données via Spring Data basée sur JPA et l’implémentation Hibernate.
Compétences : Savoir appréhender les problématiques de haute disponibilité et de tolérance à la panne dans une architecture J2EE basée sur le framework Spring. Maintenir une couche d’accès aux données cohérente face aux évolutions du système d’information sans interruption de service. Optimiser les métriques de supervision technique ou fonctionnelle. Mettre en place des outils de test et d’intégration continue.
Webservices SOAP via CXF
Le framework CXF, délivré par Apache, permet la mise en place de services web basés sur le protocole SOAP. Il permet, d’une part, de produire des WSDL à partir de simples interfaces Java, et d’autre part, de construire les services d’écoute (endpoints) à partir des WSDL.
Expérience : 6 ans. Dans le cadre du projet de refonte de système d’informations sur lequel j’ai travaillé, j’ai également été en charge de concevoir, de mettre en place, de maintenir et de faire évoluer un catalogue de services web au sein de l’architecture Spring décrite ci-dessus. Ces services web étaient destinés à supporter un trafic important (site Internet, applications mobiles, applications internes et partenaires externes), j’ai donc pu me constituer une expérience riche vis à vis des contraintes subies par ce type de système lors de son exploitation.
Compétences : Mettre en place un contrat d’interface SOAP intégrant la gestion des erreurs. Implémenter les services web. Protéger l’accès aux services web par le biais de clé d’API, et en s’appuyant sur l’AOP. Augmenter les performances avec la mise en place d’un système de Cache, ou bien une tolérance à la panne en implémentant un service minimum.
Programmation Java : Parallélisme et programmation concurrente
La programmation parallèle permet, dans certaines situations, de réduire significativement les temps de réponse. Ce type de mécanisme est indispensable dans une architecture haute disponibilité. Cependant, lorsque le trafic est important, on est souvent confronté à des problématiques liées à la programmation concurrente (comportements étranges ou inter-blocages). Il est donc important de savoir s’en prémunir.
Expériences : 6 ans. J’ai eu à gérer des exigences importantes en terme de temps de réponse (requête de disponibilité et réservation de chambres) qui m’ont amené à construire des mécanismes de parallélisme : interroger plusieurs hôtels en simultané, ou construire un processus chargé de fournir des services SOAP prêts à l’emploi aux services applicatifs, …
Compétences : Construire des algorithmes de programmation parallèle dits « Thread Safe ». Savoir identifier les situations à risque, et comprendre les mécanismes sous-jacents qui en sont responsables au sein de la machine virtuelle Java.