Symfony 2 : Grande distribution

Pour le compte d’un client de la grande distribution, nous développons « from scratch » une application de gestion grâce au framework Symfony 2.

Une large liste de composants et une communauté très active, entres autres, font de ce framework une valeur sûre pour réussir vos projets.

Pour découvrir les avantages, cas d’usage, et bonnes pratiques de Symfony 2, contactez-nous et parlons PHP !

Symfony 2

Prototypage d’un gestionnaire d’événements REST-JSON : Grande Distribution

Notre client, acteur de la grande distribution, nous a sollicité pour une refonte de son SI. En effet, l’architecture logicielle actuelle ne permet plus de soutenir sa croissance.

Les 3 exigences exprimées par le client :

  1. Un référentiel de données d’entreprise centralisé
  2. Un fonctionnement autonome de ses agences locales : pouvoir faire des réservations et des ventes, même si le référentiel de données d’entreprise centralisé n’est pas accessible
  3. Un point d’accès unique aux données du référentiel par les différentes applications du SI

L’architecture préconisée par SALTO dans ce cadre :

  1. Mise en oeuvre d’un ERP (Apache OfBiz) pour la gestion du référentiel des données d’entreprise (Réponse exigence 1)
  2. Echanges inter applicatif gérés par un gestionnaire d’événements centralisé (basé sur les technologies NodeJS & MongoDB ) :
    • Abonnement des applicatifs du SI aux événements stockés par le gestionnaire d’événements pour synchronisation de leurs données (réponse exigence 2)
    • Mise à jour des données du référentiel centralisé par push d’événements (Création, Mise à jour) vers le gestionnaire de flux (réponse exigence 3)

SALTO a réalisé :

  1. Un prototype du gestionnaire d’événements en NodeJS / MongoDB
  2. Une démonstration de celui-ci à travers la mise en oeuvre de mouvements de stock sur 3 instances d’OfBiz (2 instances mettant à jour les stocks, une instance synchronisant et centralisant les stocks)

La suite :

  1. Centraliser et synchroniser les données B2C
  2. Migrer les données existantes ( ~ 500 000 occurrences) vers l’ERP « Référentiel de données » à travers le gestionnaires d’événements (pour test de montée en charge du gestionnaire d’événements)
  3. Réaliser des IHMs d’administration du gestionnaire d’événements

 

Jhipster : le générateur Spring Boot + AngularJS


JhipsterJhipster
est un générateur Yeoman qui permet de créer des projets Spring Boot / AngularJS. Créé par Julien Dubois, il permet d’utiliser un back-end efficace (Spring) parfaitement adapté à AngularJS, pour satisfaire les équipes qui ont des grandes exigences de time-to-market !

Dans le cadre d’un projet de cartes cadeaux, Salto Consulting a réalisé l’ensemble de l’architecture, du développement et de l’intégration Salesforce, pour un client de la grande distribution.

Si vous souhaitez découvrir Jhipster à travers un retour d’expérience, nous organiserons un Dojo avant l’été, contactez-nous pour y assister !

Retour sur la soirée GitHub au ChtiJUG du 9 décembre 2015

Ce Mercredi 9 décembre à l’Université Lille 1 à Villeneuve d’Ascq se tenait un Ch’ti JUG qui avait pour thème : Comment GitHub build GitHub.GitHub

Alain Helaili (@AlainHelaili) travaille chez GitHub et nous a présenté l’entreprise et montré en partie quelle était leur façon de travailler et les outils qu’ils utilisent.

Il a commencé par nous apprendre l’histoire originale de l’entreprise : des associés en Californie qui voulaient développer une super idée. Pour améliorer leurs conditions de travail, il ont créé une application autour du gestionnaire de source git. Puis ils l’ont partagé, jusqu’au jour où une entreprise a voulu l’utiliser. Il a donc fallu créer la société : GitHub, pour pouvoir vendre et trouver un prix. A ce moment là, DropBox proposait du stockage pour 7$/mois… le prix était trouvé.

Le contexte aussi est intéressant : les associés, même à coté, discutent par chat. Et le leitmotiv est que tout doit avoir une URL pour exister. Ainsi le travail est plus facilement collaboratif et asynchrone : pratique quand on travail sur plusieurs « time zone », surtout quand on sait que l’entreprise de près de 500 salariés est répartie un peu partout dans le monde ! Par ailleurs, l’une des valeurs fondamentales de GitHub est que tout soit le plus simple possible, quitte à omettre des fonctionnalités ou les retravailler jusqu’à ce que l’utilisation en devienne une évidence.

Alain nous a ensuite montré comment fonctionnait l’organisation du développement dans la société. Notamment via l’utilisation des issues et pull request. Ce qui transparaît le plus était pour moi :

  • L’absence d’e-mail au profit de création d’issue ou pull request afin de rendre visible les décisions et qu’elles soient de fait toujours documentées.
  • L’outillage devops notamment avec hubot le robot avec qui on discute par chat et qui se charge de déployer en production, faire des opérations de maintenance etc.
  • Le workflow de développement qui contient les phases classique de TU, TI, TNR etc et qui se termine par un test… en production, plutôt que d’imaginer des scénarios de montées en charge qui resteront toujours éloignés de la réalité. La phase finale consiste à déployer en production pendant un laps de temps défini, d’en mesurer les impacts puis de retirer la fonctionnalité le temps de valider qu’il n’y ait pas eu de mauvais impact. Et ce n’est qu’une fois cette validation en production faite que le développement est mis sur la branche principale : master. Ainsi la branche master ne correspond pas forcément à ce qu’il y a actuellement en production, mais elle est le socle de base, fiable pour la production.

Enfin l’application GitHub nous a été aussi présenté comme hautement personnalisable via les hooks et les nombreuses apis disponibles. On a notamment cité :

  • Review Ninja : la gestion des pull request par SAP
  • Gitcolony : également sur les pull request avec notamment la possibilité de les gérer cross-repos
  • Zenhub : qui permet de visualiser les évolutions en cours sous la forme d’un kanban
  • et plus globalement tous les addons disponibles avec GitHub

N’hésitez pas à consulter leur blog http://githubengineering.com pour en découvrir plus encore.

Le seul point négatif à mon sens de cette conférence était la salle dont l’écran était un peu petit et le micro qui coupait de temps en temps. Par contre on peut souligner le super accueil des étudiants de Lille 1 !

Merci à Alain, à l’équipe du Ch’ti JUG (enfin surtout Cyril cette fois-ci ;)) et aux étudiants de Lille 1 !

Matthieu Fernandes

Formation Ad Hoc Java 8 – Spring 4

Dans le cadre de leurs missions de coaching technique, les experts de SALTO Consulting réalisent pour leurs clients des formations Ad Hoc destinées à mettre à niveau leurs équipes de développeurs.

La dernière en date, d’une durée de 2 jours, s’est appuyée sur un support Ad Hoc et des exemples d’implémentation concrète et a abordé les points techniques suivants :

java7JAVA 7

  • Binaires et le formatage de nombres
  • switch supporte les chaînes de caractères
  • Inférence de type pour l’instanciation des génériques
  • Libération automatique des ressources
  • Les exceptions

JAVA 8java8

  • @FunctionalInterface et lambdas
  • Référence de méthodes
  • Les méthodes default
  • Méthodes statiques dans les interfaces
  • Streams et opérations agrégées
  • Annotations de type et répétées
  • Réflexion pour les paramètres de méthodes

SPRING 4spring4

  • FrameWork conçu pour construire et définir l’infrastructure d’une application java, dont il facilite le développement et les tests.
  • Historique
  • Une multitude de projets connexes : Spring umbrella
  • Spécifications et librairies supportées
  • Simplification de la gestion des dépendances Maven
  • Intégration Java 8
  • Evolutions du conteneur
  • Débuter un nouveau projet Spring

SPRING BOOTspring-boot

  • FrameWork conçu pour simplifier et accélérer le développement d’applications Spring)
  • Créer une application
  • Conteneurs embarquées (TomCat, Jetty, Undertow)
  • Starters
  • Auto-configuration des composants Spring
  • Production-ready (métriques, health checks et configuration externalisée)
  • Environnement en ligne de commandes

SPRING DATAspring-data

FrameWork conçu pour manipuler les données par abstraction de la source de données, il est compatible avec les bases de données relationnelles ou no-sql comme :

  • JPA
  • Redis
  • Elasticsearch
  • Neo4j

SPRING WEBspring-web

  • FrameWork permettant de désigner des applications model-view-controller
  • DispatcherServlet
  • Contrôleur REST
  • Gestion des exceptions

SPRING BATCHspring-batch-project

Framework pour la réalisation de programmes qui traitent de gros volumes de données

  • Décomposition d’un batch
  • Job
  • Step

N’hésitez pas à nous contacter si ce type de formation vous intéresse.

Global Day Of Code Retreat @ Salto – 14 Novembre 2015

Code Retreat

Code Retreat

Le Global Day of Code Retreat, c’est une journée durant laquelle des développeurs se retrouvent aux 4 coins du monde pour coder ensemble et améliorer leurs pratiques de développement. Toutes les technologies sont concernées.

Salto Consulting est heureux d’accueillir dans ses locaux l’édition 2015 de l’étape Lilloise, qui aura lieu le 14 Novembre prochain.

Participation gratuite : http://www.eventbrite.fr/e/billets-global-day-of-coderetreat-2015-19135942118

Rendez-vous à partir de 9h00 dans nos locaux au 23 rue du Chemin de Fer, 59800 Roubaix.

Munissez-vous de votre PC et votre IDE préféré. Un plateau repas est prévu le midi.

Contactez-nous pour + d’informations.

Formation Ad Hoc Java 8 & 7 – Spring 4 & Spring umbrella

Dans le cadre de leurs missions de coaching technique, les experts de SALTO Consulting réalisent pour leurs clients des formations Ad Hoc destinées à mettre à niveau leurs équipes de développeurs.

La dernière en date, d’une durée de 2 jours, s’est appuyée sur un support Ad Hoc et des exemples d’implémentation concrète et a abordé les points techniques suivants :

Java

JAVA 7

  • Binaires et le formatage de nombres
  • switch supporte les chaînes de caractères
  • Inférence de type pour l’instanciation des génériques
  • Libération automatique des ressources
  • Les exceptions

JAVA 8

  • @FunctionalInterface et lambdas
  • Référence de méthodes
  • Les méthodes default
  • Méthodes statiques dans les interfaces
  • Streams et opérations agrégées
  • Annotations de type et répétées
  • Réflexion pour les paramètres de méthodes

Spring

SPRING 4

  • FrameWork conçu pour construire et définir l’infrastructure d’une application java, dont il facilite le développement et les tests.
  • Historique
  • Une multitude de projets connexes : Spring umbrella
  • Spécifications et librairies supportées
  • Simplification de la gestion des dépendances Maven
  • Intégration Java 8
  • Evolutions du conteneur
  • Débuter un nouveau projet Spring

SPRING BOOT

  • FrameWork conçu pour simplifier et accélérer le développement d’applications Spring)
  • Créer une application
  • Conteneurs embarquées (TomCat, Jetty, Undertow)
  • Starters
  • Auto-configuration des composants Spring
  • Production-ready (métriques, health checks et configuration externalisée)
  • Environnement en ligne de commandes

SPRING DATA

FrameWork conçu pour manipuler les données par abstraction de la source de données, il est compatible avec les bases de données relationnelles ou NoSQL telles que :

  • JPA
  • Redis
  • Elasticsearch
  • Neo4j

SPRING WEB

  • FrameWork permettant de désigner des applications model-view-controller
  • DispatcherServlet
  • Contrôleur REST
  • Gestion des exceptions

SPRING BATCH

Framework pour la réalisation de programmes qui traitent de gros volumes de données

  • Décomposition d’un batch
  • Job
  • Step

N’hésitez pas à nous contacter si ce type de formations vous intéresse.

Jenkins : Usine d’intégration et de déploiement continue

Salto Consulting a mis en place pour un de ses clients une usine d’intégration et de déploiement continue avec Jenkins.

Jenkins

Jenkins

Jenkins est un outil open source d’intégration continue, fork de l’outil Hudson.
Écrit en Java, Jenkins fonctionne dans un conteneur de servlets tel qu’Apache Tomcat ou en mode autonome avec son propre serveur Web embarqué.
C’est un outil que les équipes de Salto Consulting mettent en place régulièrement dans le cadre de leurs projets.

Dans le cadre de cette réalisation, elles se sont appuyées sur l’utilisation des deux plugins Jenkins suivant:

Build Flow Plugin
Ce plugin permet d’orchestrer les différents jobs Jenkins liés à un projet grâce à la notion de workflow qu’il implémente.
La construction de chaînes d’exécution complexes de jobs et la définition des règles associées en est grandement facilitée.
Il a été ainsi possible de construire une chaîne d’exécution composée des jobs de build, de déploiement, de tests d’intégration et de tests de charge.
Ces jobs sont déclenchés les uns à la suite des autres et des conditions peuvent être configurées (Exemple: le job précédent doit avoir un statut d’exécution en succès pour continuer la chaîne).

Build Graph View Plugin

Ce plugin permet de visualiser l’exécution des workflows sous la forme d’un graphe et d’accéder rapidement à la console d’exécution de chaque job Jenkins.

Jenkins Build Graph

Tests automatisés avec Cucumber

Salto Consulting implémente le FrameWork Cucumber pour un groupe de la grande distribution afin d’automatiser les tests de non-régression sur les environnements de développement et de recette.

Ces tests automatisés sont lancés dans une chaîne d’intégration continue (Contrôle qualité du code – Build – Tests non régression –  Déploiement).

Cucumber

Cucumber