Académique Documents
Professionnel Documents
Culture Documents
Soutenu le : 16/07/2020
Membres du Jury :
Mr. AIT KBIR M’hamed Président
Mr. ZILI Hassan Encadrant FSTT
Mr. AZOUAGH Noureddine Encadrant Entreprise
À mon très cher père, celui qui m’a toujours indiqué la bonne voie, en signe d’amour, de
gratitude pour tous les soutiens et les sacrifices dont il a fait preuve à mon égard,
Nul mot ne saurait exprimer à sa juste valeur le dévouement et le profond respect que je
porte envers vous. Que DIEU vous préserve et vous accorde, santé, bonheur et prospérité
À mon cher frère, mes chères sœurs, qui sont toujours là pour moi et à mes cote, disposés à
me tendre la main et à me soutenir dans tout ce que j’entreprendrai.
À mon cher neveu, et ma chère nièce, qui sont mon porte-bonheur, les rayons de soleil de
tous mes jours et la joie de ma vie,
À toute ma famille,
À mes amis, et à tous mes proches,
À tous ceux qui m’aiment, je dédie cet humble travail.
AALITI Souhaila
Mes remerciements s’adressent en premier lieu à Allah tout puissant qui m’a aidé et
m’a donné la force, le courage et la santé pour réaliser ce projet.
Mes sincères remerciements pour tous les collaborateurs de VirtuoCode pour leur
accueil, leurs aides et pour leurs conseils.
Mes remerciements vont également aux membres du jury qui ont bien voulu assister à la
présentation et évaluer ce travail.
Enfin, je tiens également à adresser mes affectueux remerciements à l’ensemble du corps
professoral et administratif de l’FST de Tanger, pour l’accomplissement et la contribution à
ma formation durant ces 3 ans.
Ce rapport constitue le fruit d’un travail accompli dans le cadre du projet de fin d’études
qui m’a été confié durant mon stage au sein de l’entreprise "VirtuoCode".
La matière première dans ce projet est le contenu généré par les APIs de Google et
Facebook. J’en ai donc puisé dans ces interfaces de programmation applicative, pour obtenir
des données qui sont à jour.
J’ai veillé à développer cette solution avec les technologies les plus récentes et
performantes, et ceci dans un cadre agile en adoptant l’approche SCRUM.
Ce projet est réalisé avec la partie des traitements Batch à base de Spring Batch, et
Spring Cloud Data Flow pour le monitoring des tâches.
Mots-clés: JAVA, J2EE, Spring Boot , Spring Batch, Spring Cloud Data Flow, Traitement
Batch, Monitoring, Facebook API, Google My Business API.
This report is the result of the work accomplished within the context of the end of studies
project which was entrusted to me during my internship within the company "VirtuoCode".
The objective of the internship was to actively participate in the design and the
implementation of a monitoring solution which will provide a better tasks scheduling.
My subject can be broken down into two main parts, which, if not interdependent,
nevertheless go in the same direction of my general mission: developing batch processing for
data migration scenarios, and monitoring, automating and scheduling their execution.
This solution is intended mainly for "Mobilosoft" company, especially for Back-office
administrators, in order to help them complete their migration project.
I have made sure to develop this solution with the latest and most efficient technologies,
all within an agile framework, by adopting the SCRUM approach.
The raw material in this project is the content generated from Google APIs and
Facebook. So, I have drawn from both these application programming interfaces to obtain
updated and refresh data.
This project is carried out with a batch processing part based on Spring Batch, and
another task monitoring part that integrates Spring Cloud Data Flow
Keywords: JAVA, J2EE, Spring Boot, Spring Batch, Spring Cloud Data Flow, Batch
processing, Monitoring, Facebook API, Google My Business API.
BD Big Data
BI Business Intelligence
XD eXtrem Data
XP eXtrem Programming
La concurrence est de plus en plus forte entre les entreprises. L’explosion des nouvelles
technologies mais aussi l’automatisation des tâches ont rendu la course aux bénéfices encore
plus folle qu’elle ne l’était. Face à cet écosystème de plus en plus complexe, les entreprises
changent et ne cessent de changer afin de rester dans la course.
Dans un tel contexte, rester compétitif n’est pas une tâche aisée. Ce qui pousse les
entreprises à engager des processus de migration, qui est un passage délicat, pour mettre en
œuvre des nouvelles plateformes technologiques et apporter de la nouveauté allant bien au-delà
des fonctionnalités liées aux nouvelles versions.
Par ailleurs, il est essentiel que ces entreprises choisissent toute une gamme de méthodes
de traitement pour garantir cette migration et rester concurrentielles. On y retrouve le traitement
batch, qui, et malgré les changements induits par l'essor des technologies, demeure plus utile
que jamais. Il offre un large éventail de fonctionnalités et d’avantages, dont les entreprises
peuvent en retirer profit ; Cela inclut l’efficacité, simplicité, réduction des coûts etc, de sorte
que les développeurs restent concentrés que sur la partie métier du système.
Ce traitement est devenu une pratique courante, car il s’avère comme la solution idéale
pour des scénarios tels que la migration des données. Toutefois, au lieu d'améliorer les
performances et la compétitivité de l’entreprise, une migration incorrecte peut créer des
inexactitudes.
Dans ce sens s’inscrit mon projet de fin d’étude qui porte sur l’élaboration d’une solution
de monitoring des tâches, suite au développement des scenarios de migration des données sous
forme des traitements batchs, au sein de l’entreprise VirtuoCode.
Le troisième chapitre est une étude préliminaire, qui met l’accent sur les notions de base
de mon projet. Il définit et explique: les besoins fonctionnels et opérationnels du projet, le
traitement batch ou par lots, et l’ordonnancement des tâches. Pour ce dernier, on y retrouve la
solution choisie, et le pourquoi de ce choix.
Tout projet informatique doit être soumis à une phase d’analyse et modélisation avant
sa réalisation, et le chapitre quatre détaille cette étape pas à pas.
L’avant dernier chapitre, soit le cinquième, est une étude technique du projet, qui
explique le fonctionnement technique de mon travail, ainsi que les technologies et outils que
j’ai exploité.
Introduction
Tout projet se situe dans un cadre et un contexte bien précis, et le but de cette partie est
de situer le lecteur dans le contexte général de mon stage. Et pour ce faire, on va commencer
tout d’abord par une présentation générale de l’organisme d’accueil. On abordera par la suite la
présentation du projet où on décrira la problématique à traiter et la solution proposée, alors que,
la fin de ce chapitre portera sur la planification et la conduite du projet, ainsi que le planning de
travail adopté.
Par définition modulaire et formée à la coopération, chaque société a dans son ADN une
facilité à collaborer avec des équipes externes. Le groupe met à disposition ses méthodologies
et ses outils pour rendre les projets harmonieux et efficaces lorsque plusieurs compétences
renforcent un même projet.
Ces valeurs sont le ciment qui permet de construire, progresser et traverser les moments
difficiles sans dévier de la trajectoire. Elles permettent de construire un lien qui va au-delà de
la simple collaboration, elles permettent de donner un sens à la stratégie de l’entreprise et
permettent à chacun de se l’approprier.
a) Intégrité et transparence
b) Excellence
L’excellence ne doit pas être vécue comme une contrainte mais plutôt comme une fierté
de donner le meilleur de nous-mêmes dans toutes nos actions. Elle s’exprime tant dans le savoir-
faire métier que dans le savoir-être personnel.
c) Solidarité
La solidarité crée un cadre de soutien mutuel et permet à chacun de s’appuyer sur les
autres afin d’être plus forts ensemble. La solidarité est la capacité d’aider ceux qui nous
entourent, mais également de demander de l’aide lorsque nous en avons besoin.
d) Respect
Le respect est une valeur cardinale qui connaît plusieurs facettes: que ce soit le respect
de la parole donnée en interne, à nos clients ou à nos partenaires, le respect dans les relations
humaines, ou encore le respect de notre environnement. Nous voulons en tout point être dignes
de la confiance qui nous est faite.
Mon projet s’inscrit dans le cadre des projets réalisés pour la société Mobilosoft,
notamment le projet « myMobilosoft » afin d'élaborer une solution de supervision et
d’automatisation de l’exécution des scénarios de migration pour ses clients, de la version 2 vers
la version 3.
Avant d’entamer la partie contexte du projet, il faut tout d’abord en avoir un aperçu sur
Mobilosoft, qui est une société spécialisée dans le digital marketing. Elle offre des solutions
web-to-store qui est un pan du marketing digital dont l’objectif est de répondre à des nouveaux
modes de consommation en offrant aux entreprises des outils leur permettant d’utiliser Internet
pour générer du trafic en point de vente physique (restaurants, magasins, bureaux). Grâce à ses
produits, Mobilosoft aide ses clients à gérer leurs données afin qu'elles puissent proposer des
informations vérifiées dans les résultats de recherche.
Comme on l’a cité auparavant, Mobilosoft offre des solutions web-to-store. Ceci
consiste à proposer une liste de produits et services permettant à ses clients de générer du trafic
dans leurs magasins. Parmi ces produits, on se limite à présenter :
Le premier produit est dédié à la gestion de la localisation des points de vente, ce produit
s’occupe de la création et de la gestion du contenu des pages locales optimisées pour la
recherche.
Ce produit consiste à gérer le contenu et les informations des magasins des clients sur
Google, Facebook et sur les sites internet des magasins.
Ci-dessous un exemple d’une fiche Google gérée par la plateforme Mobilosoft pour un
magasin Carrefour :
- Les photos.
2- Optimiser le référencement naturel des pages web des magasins sur les moteurs de
recherche web.
1.2.1.2. Campaign
Le deuxième produit est dédié pour la gestion de campagnes. Ce produit a pour objectif
de permettre aux entreprises organisées en réseau de distribution de pouvoir publier, sur
chacune de leur pages points de ventes, du contenu (promotionnel, événementiel,
inspirationnel). Ce contenu pouvant être lié à l’actualité nationale de la chaîne ou aux
événements de la vie locale des points de vente (braderies, fêtes de quartier, produits exclusifs,
etc.).
Ces contenus peuvent être diffusés sous la forme de « Posts » (publications) gratuites
sur les pages magasins (Store Locator, Google et Facebook) ou d’annonces publicitaires
payantes sur Google et Facebook. Ils prennent le format de publication d’images, de texte et/ou
de vidéos.
1.2.1.3. Inbox
Le troisième permet la gestion des avis clients. Ce produit permet aux clients de
récupérer les avis déposés par les consommateurs sur les pages points de ventes dans Google et
Facebook, de les présenter dans une interface web et d’y répondre en toute simplicité. Le
bénéfice de cette gestion est l’amélioration de la réputation des magasins en ligne. Une bonne
gestion des avis d’un magasin est en effet prise en compte par les moteurs de recherche web
pour le référencement des pages de ces magasins. Cette gestion aide aussi les magasins à
fidéliser la clientèle et ainsi à améliorer l’expérience de ses clients dans ces magasins par le
biais de rapports mis à disposition des magasins.
Le dernier produit est connu communément dans Mobilosoft sous le nom « Customer»
ou des projets des clients à la demande, ce produit englobe tous les services et les prestations
que Mobilosoft offre à ses clients et qui ne font pas partie des produits cités précédemment.
- Des adaptations particulières des trois premiers produits cités précédemment pour les
clients qui désirent sortir du standard des produits de Mobilosoft.
- Support et accompagnement des clients dans des projets de mise en place des stratégies
de marketing.
1.2.2. Problématique
Si ce passage vers la nouvelle version est fait pour pallier à des problèmes de
maintenance ou de choix stratégiques dans l’entreprise, il est souvent vu comme un calvaire par
les équipes informatiques, surtout pour la migration des données.
Donc, il est nécessaire de mener à bien ce projet avec minutie et dans une logique
industrielle, pour transformer cette migration en une réussite opérationnelle. Et pour se faire, il
fallait mettre en œuvre de traitements batchs vu la masse de ses données.
La solution qu’on propose pour répondre à cette problématique traite les besoins qu’on
a préalablement identifiées et consiste à morceler le travail sur trois parties:
- La deuxième réside dans l’isolation de ces batchs dans un module séparé dans
l’application, et la génération d’un jar prêt à être exécuté indépendamment de tout
environnement pour ce module.
Introduction
La gestion de projet est une démarche visant à organiser de bout en bout le bon
déroulement d’un projet.
En pratique, le projet est tourné vers l'objectif final, il doit être adaptable à des
modifications fréquentes, mais maîtrisé et planifié. Donc toute modification doit rester
planifiée. Et notamment, le projet doit rester dynamique et équilibrer continuellement les
contraintes techniques, de coût et de délai.
C’est le but dans lequel résident ce présent chapitre, c’est-à-dire l’identification des
contraintes et des risques éventuels, la méthodologie agile à adopter pour palier à ces difficultés, la
présentation des outils de communication entre mon équipe, et finalement la définition d’un
planning pour mon projet suite au backlog du produit.
Cette section recense les contraintes et les restrictions particulières qui limitent mon
projet où qui lui imposent des conditions, en particulier celles qui sont liées à la portée.
Les risques sont définis comme la possibilité qu’un projet ne s’exécute pas
conformément aux prévisions des dates, de coût ou d’expression des besoins, ces dérives étant
considérées comme difficilement acceptables ou bien carrément inacceptables.
Exercer la maitrise des risques dans mon projet m’a permis de mieux communiquer sur
les difficultés potentielles du projet et de partager ses responsabilités avec les autres décideurs
concernés.
Le tableau ci-dessous indique les éventuels risques qui ont été recensés et identifiés dans
mon projet, ainsi que les actions préventives mises en œuvre pour en assurer la maîtrise:
La gestion de projet est l'ensemble des activités visant à organiser le bon déroulement
d’un projet et à en atteindre les objectifs. Elle consiste à appliquer les méthodes, techniques, et
outils de gestion spécifiques aux différentes étapes du projet, de l'évaluation de l'opportunité
jusqu'à l'achèvement du projet.
Pour mon cas, j'étais sollicitée pour prendre en charge deux contraintes majeures: livrer
un produit de qualité et livrer à temps. Compte tenu de ces contraintes, de mes objectifs et des
caractéristiques de ma mission, j’ai opté pour la méthodologie SCRUM avec des bonnes
pratiques de XP pour mener mon projet, le choix de cette démarche avait pour raison le
découpage du projet en plusieurs itérations. A chaque itération une partie du projet aura été
traitée et à la fin de l’itération devra être livré.
La méthode agile Scrum consiste à focaliser les efforts d'une équipe sur des
fonctionnalités définis. Ceci afin de livrer un logiciel partiellement fonctionnel et enrichie au
fur et à mesure.
Toutes les activités (Sprint, réunion de planning, revues, rétrospective et mêlée) décrites dans
la méthode Scrum sont effectuées lors des boites de temps.
Le sprint : Le sprint est une période d'un mois au maximum, au bout de laquelle l'équipe
délivre un incrément du produit, potentiellement livrable. La durée du sprint reste constante
pendant toute la durée du développement. Un nouveau sprint démarre dès la fin du
précédent. Chaque sprint possède un but et on lui associe une liste d'éléments et de
fonctionnalités à réaliser.
1. Le but du sprint ne peut être modifié.
2. La composition de l'équipe reste constante.
3. La qualité n'est pas négociable.
4. La liste d'items est sujette à négociations entre le propriétaire du produit et
l'équipe de développement.
Réunion quotidienne : Chaque journée de travail commence par une réunion de 15 minutes
maximum appelée Daily Scrum ou StandUp.
Ce qui m’a permis de ne pas laisser traîner ni un gros souci, ni un point de blocage, mais
de le résoudre assez rapidement, car en répondant à ces questions, on identifie les
obstacles qui freinent notre avancement au projet. De plus, cela m’a permis d’avoir de
réels échanges entre les collaborateurs du projet.
Réunion de planification d'itération : Toute l'équipe Scrum est présente à cette réunion,
qui ne doit pas durer plus de 8 heures pour un sprint d'un mois. Pour un sprint plus court, la
durée est réduite proportionnellement. À l'issue de cette réunion, l'équipe décide des
éléments du carnet du produit qu'elle décide de traiter pendant la prochaine itération et
comment elle s'organisera pour y parvenir.
Dans cette section on va évoquer l’un des piliers essentiels de la bonne conduite de
projet, qui est la communication. Cette dernière représente l'ensemble des interactions et des
échanges verbaux ou écrites avec les membres d’équipe afin de transmettre l’information, et
de s’assurer qu’on suit la bonne voie lors la réalisation du projet.
Parmi les outils qu’on a utilisés pour bien établir cette communication, on note:
Projets : organiser le travail en projets partagés sous forme de listes ou de tableaux Kanban
pour toutes initiatives, réunions et programmes.
Tâches : décomposer le travail en tâches faciles à gérer par les membres de l’équipe.
Communication
Commentaires sur les tâches : commenter directement une tâche pour préciser le travail à
faire et mentionnez des collègues ou d’autres tâches et projets pour tout connecter.
Révision : laisser des commentaires précis directement sur les images et fichiers PDF. Ils se
transforment en tâches pour un suivi efficace.
Révision d’image : laisser des commentaires précis sur des images pour que les créatifs
comprennent exactement le travail à effectuer.
Gestion d’équipe
Équipes : créer des équipes pour organiser les projets, et les relier aux collègues les uns aux
autres grâce à un calendrier et des discussions partagés.
Collaborateurs : ajouter des collègues en tant que collaborateurs pour qu’ils puissent suivre
l’avancement de la tâche et reçoivent des notifications en cas de mise à jour.
Permissions : limiter l’accès aux projets, créer des équipes masquées pour les informations
sensibles ou rendre publics les équipes et projets auxquels toute l’organisation doit accéder.
Je peux Afin de
Ajouter ou importer une application depuis Pouvoir l’exploiter par la suite dans la
maven ou un jar en local composition d’un flux de tâches
Créer une nouvelle tâche pour la création d’un Créer un nouveau site avec le compte
site GMB associé dans la plateforme
myMobilosoft
Créer une nouvelle tâche pour la création d’un Créer un nouveau client avec les
client paramètres renseignés et le site ajouté
Créer une nouvelle tâche pour l’import des Importer tous les locations depuis GMB
locations d’un site précis
Créer une nouvelle tâche pour l’import de GMB Importer tous les avis des clients depuis
reviews GMB d’un site
Créer une nouvelle tâche pour l’import de Importer tous les avis des clients depuis
Facebook reviews Facebook d’un site
Créer une nouvelle tâche pour l’import des Importer tous les reportings des locations
reportings d’un site précis
Avoir un fichier de journalisation qui décrit Consulter les logs ou les fichiers de
l’historique de l’exécution de la tâche journalisations attachés à ce processus
Savoir les différents infos sur chaque l’exécution Consulter la durée, les paramètres, les
de la tâche arguments, et le job appelé pour chaque
exécution
Générer un fichier Excel depuis la plateforme Faciliter l’analyse derrière ces données.
myMobilosoft contenant tous les infos des
locations d’un site précis
Spécifier les critères à prendre en considération Filtrer l’ensemble des locations selon le
lors l’export du fichier Excel. besoin.
Et pour se faire, on a utilisé le diagramme de Gantt qui est l’un des moyens les plus
populaires et les plus utiles d’afficher les activités (tâches ou événements) en fonction du temps.
À gauche du tableau, on trouve une liste des activités et, à droite, une échelle de temps
appropriée. Chaque activité est représentée par une barre ; la position et la longueur de la barre
reflètent la date de début, la durée et la date de fin de l'activité. Ceci permet donc de voir en un
coup d'œil :
Etude préliminaire
Introduction
L’étude préliminaire d’un projet permet de détailler, de définir, et d’exprimer des
besoins à satisfaire en termes de fonctions à assurer et d’objectifs à atteindre. Cette phase
formalise donc la prise de décision concernant les technologies à utilisés et les solutions à
adopter. Ce chapitre présente dans un premier temps une description des divers éléments
constituant le cahier de charge à savoir : les besoins fonctionnels, les besoins opérationnels.
Ensuite, on retrouve un aperçu en quoi consiste un traitement batch, et finalement la
détermination de l’outil d’ordonnancement à exploiter pour administrer ces batchs.
Lors de l’étude de projet qu’on a fait dans les chapitres précédents on a pu identifier des
différents besoins qui spécifient la mission à laquelle on doit répondre.
L’objectif de cette étape est de décrire les fonctions principales, optionnelles et les contraintes
de la solution attendue. Les spécifications suivantes représentent les fonctionnalités générales
du projet :
Les interfaces doivent être faciles à utiliser. Ceci permettra à une personne lambda
n’ayant pas un background informatique de pouvoir exploiter notre solution aisément.
Aptitude à la maintenance
Scalabilité
Mon travail doit être extensible, c’est-à-dire qu’il maintient ses fonctionnalités et ses
performances en cas de changement, aussi bien qu’il pourra y avoir une possibilité d’ajouter ou
de modifier de nouvelles fonctionnalités à tout moment.
Cela veut dire de nouvelles tâches qui recourent à des nouveaux batchs / jobs éventuellement
développés.
Disponibilité
La solution doit être disponible et en marche, 24 heures sur 24, 7 jours par semaine.
Cela consiste donc à mettre en place des actions pour que notre système soit toujours disponible
en appliquant certains principes tels que la sauvegarde des données.
Ce qui est assuré par mon utilisation de Google Cloud SQL comme service de gestion de base
de données qui facilite la configuration, la maintenance, la gestion et l'administration de notre
base de données.
Dans le cadre de mon projet, garantir l’intégrité des données est un point crucial; c’est-
à-dire de déterminer si les données ne subissent aucune altération ou destruction volontaire ou
accidentelle lors leur migration.
Documentation
Le batch que l’on traduit en français par traitement par lots (Batch processing en anglais)
renvoie à l’enchaînement automatique d'une série de commandes informatiques.
Le batch est couramment utilisé pour réaliser des traitements différés, pendant la nuit
par exemple, dont les ressources serveurs d’une entreprise sont souvent moins sollicitées. Elles
vont pouvoir être allouées pour exécuter des batchs.
Un outil d’ordonnancement se charge de les déclencher au moment voulu. Cet outil est
capable de prendre en compte des règles d’exécution pour enchainer le traitement comme un
véritable programme. Autrement dit, si la tâche à exécuter est conforme, alors on l’exécute,
sinon on passe à la commande suivante.
Tâche
Conforme
Oui Non
Exécuter Ignorer
En informatique les traitements par lots et leurs exécutions différées s’opposent aux
traitements transactionnels.
Cela permet de définir des enchaînements entre les traitements. En d’autres termes, on
lance un traitement à la suite d'un autre traitement. La notion de traitement peut être assez
générale puisqu'il s'agit de toute commande exécutable sur une ou plusieurs machines
informatiques, et pour être plus spécifique un traitement dans notre cas signifie un batch ou
encore un job.
- Internet des objets: Activer l'analyse prédictive en temps réel sur de grandes
quantités de données, en favorisant les améliorations commerciales et opérationnelles
en temps réel.
- Orchestration du batch workflow: Dédiée pour les traitements par lots, tout en
offrant des modèles out-of-the-box pour surveiller l’exécution des jobs sans avoir à
écrire du code. Spring XD se charge de la gestion de l'infrastructure, les spécificités
de l'environnement et l'automatisation des batchs.
Or, ce projet est en statut EOL / EOS / EOA depuis juillet 2017. La version 1.3 GA de
Spring XD était la dernière version qui ne traite que des corrections de bugs. Néanmoins,
l’écosystème de Spring l’a reconstruit dans le projet Spring Cloud Data Flow en s’appuyant sur
les capacités de Spring Boot et Spring Cloud.
En plus du frontal web, cette console offre une API JSON et expose des métriques via
JMX (Java Management Extensions) pour gérer le fonctionnement des applications Batchs en
cours d'exécution.
Cependant, ce projet n’est plus pris en charge depuis le 31 décembre 2017. Ses
fonctionnalités ont été principalement dupliquées et développées via Spring Cloud Data Flow,
qui est désormais son alternative, ou son remplaçant recommandé.
Il est utilisé aussi pour déployer des applications Spring Boot (ou des images Docker) sous
forme de flux ou de tâches. En d’autres mots, SCDF est un micro-service de traitement des
données soit par lot ou en temps réel.
Avec Spring Cloud Data Flow, les développeurs peuvent créer et orchestrer des
pipelines de données pour des cas d’utilisation courants tels que l’acquisition de données,
l’analyse en temps réel et l’importation/exportation de données. .
Il existe deux types de pipelines de données, les pipelines de données en continu et en mode
batch.
Dans le premier cas, une quantité illimitée de données est consommée ou produite via un
middleware de messagerie. Dans le second cas, la tâche de courte durée traite un ensemble fini
de données puis se termine.
- Il est accessible via une interface utilisateur d’administration qui offre des vues
spécifiques pour les applications, les streams, les tasks etc.
- Le tableau de bord SCDF propose un éditeur graphique pour créer des pipelines de
données de manière interactive, ainsi qu’une vue intuitive pour la surveillance et la
supervision des applications déployées.
- Il est accessible aussi via un terminal en ligne de commande (SCDF Shell) ou via
Restfull URL pour les clients.
Ci-dessous un tableau qui synthétise la différence entre les cas d'utilisation de Spring
Batch Admin, ainsi que ceux qui sont pour Spring Cloud Data Flow :
Modèle -Les batch jobs et -Chaque batch job est exécuté dans une JVM
d’exécution l'application Web indépendante appelée Tasks (Tâches)
- interactive shell
Tableau 3: Tableau comparatif des cas d'utilisations de Spring Batch Admin et SCDF
Terminologie
XD-Container N/A
Modules Applications
Admin UI Dashboard
REST-API
/modules /apps
/jobs/definitions /task/definitions
/jobs/deployments /task/deployments
En se basant sur l’étude et la comparaison de ces multiples solutions citées juste avant,
il devient évident que Spring Cloud Data Flow est la meilleure solution à mettre en œuvre pour
monitorer et superviser nos batchs, car de un, il est préférable d’en tirer profit des solutions
Spring puisque la plateforme myMobilosoft est une application Spring Boot, et de deux, on ne
peut pas s’appuyer sur des solutions qui ne sont ni prises en charge ni en mises à jour.
Conclusion
Dans ce troisième chapitre, on a déterminé les besoins fonctionnels et opérationnels de
mon projet. Puis, pour mieux appréhender mon sujet, on a vu qu'est-ce que c'est un traitement
batch, et quels sont les outils qui servent à l’ordonnancer. Finalement, on y a choisi la solution
à opter pour l’orchestration et l’administration de nos batchs.
Conception et modélisation
Introduction
Maintenant qu’on a une idée précise des besoins fonctionnels et opérationnels de mon
projet, il est crucial qu’on passe à l’étape de d’analyse et modélisation.
Le modèle d’un système informatique est clé, car il sert comme document d’échange
entre clients et développeurs, d’outil de conception, de référence pour le développement, ainsi
que pour la maintenance et l’évolution. Concevoir les échanges qui auront lieu au niveau de la
solution élaborée, le rôle des utilisateurs et le format des données au préalable permet de savoir
la direction à prendre au niveau du développement, et de prévenir des fautes d’organisation des
relations entre entités par la suite.
L’idée est donc de mettre en place des diagrammes (car plus explicatifs que des textes)
qui représentent les interactions des utilisateurs avec le projet, le workflow des opérations, et
les entités existantes et les liaisons entre elles.
Ce type de diagrammes comporte deux types d’entités fondamentaux : les acteurs qui
agissent sur le système, et les cas d’utilisation. Chaque cas d’utilisation représente une
fonctionnalité déclenchée par un acteur externe du système. Il permet donc de mieux
comprendre les besoins utilisateurs. Vu que mon produit final vise les administrateurs Back-
office de Mobilosoft, on n’aura qu’un seul acteur.
Créer une nouvelle L’admin utilise ce cas pour accorder une définition à une tâche à
tâche partir de(s) application(s) Tasks déjà enregistrées : tâche simple ou
tâche composée (flux de tâches ordonnancées séquentiellement).
Exécuter une tâche Le cas d’utilisation principal de la solution. L’admin l’exploite pour
lancer d’une manière automatique un batch précis. Le batch à
exécuter est renseigné via paramètre.
Reprendre une tâche L’admin utilise ce cas pour reprendre l’exécution d’une tâche tout
en gardant sa définition.
Arrêter une tâche L’admin utilise ce cas pour arrêter ou suspendre l’exécution d’une
tâche précise.
Créer un site Pour ce faire, l’admin doit passer le nom du site et le compte GMB
sous forme de paramètre.
Créer un client Pour ce faire, l’admin doit passer le nom du client, son id et le site
qu’il veut lui faire associer.
Importer les avis des Pour cette tâche, l’admin doit indiquer le nom du site pour lequel il
clients depuis GMB veut importer les avis des clients depuis Google. Pour ce faire il doit
le passer comme paramètre avant de lancer la tâche qui lui
correspond.
Importer les avis des Pour cette tâche, l’admin doit indiquer le nom du site pour lequel il
clients depuis veut importer les avis des clients depuis Facebook. Pour ce faire il
Facebook doit le passer comme paramètre avant de lancer la tâche qui lui
correspond.
Importer les Pour cette tâche, l’admin doit indiquer le nom du site pour lequel il
reportings veut importer les reportings. Pour ce faire il doit le passer comme
paramètre avant de lancer la tâche qui lui correspond.
Consulter les fichiers L’administrateur utilise ce cas pour voir les logs de l’exécution
de journalisations d’une tâche. Il retrouve donc un journal traçant pas à pas le
déroulement du processus. Il retrouve aussi le statut de cette
exécution.
On parle de l’export de tous les informations des tous les locations d’un site
dans un fichier Excel, selon les critères saisis.
S’authentifier Pour ce faire, l’administrateur doit utiliser son compte Google pour se
connecter à la plateforme myMobilosft.
Filtrer les Tant que l’administrateur est sur la page affichant la liste des locations,
locations il peut les trier par statut, channel, mot clé, code zip, tag etc
Exporter les L’administrateur doit filtrer les locations pour lesquelles il veut générer
locations avec le fichier Excel. Ce fichier comprend deux feuilles, la première contient
filtre les données (infos des locations), et la deuxième est consacrée pour les
critères déjà mentionnés.
La création d’un nouveau client se fait d’une manière identique que celle de création du
site.
La suite logique du scénario précédent, soit celle de « la création d’un site», est tout
naturellement de commencer l’import des locations, comme le décrit le diagramme suivant.
Ceci se déclenche par la demande de l’utilisateur d’exécuter une tâche dont le paramètre
‘jobname’ est égale à ‘locations’ depuis la solution de monitoring. Cette dernière requiert alors
d’une application de type task (l’application dans laquelle on a développé ces batchs et on l’a
empaqueté sous forme de jar) de lui lancer le traitement batch correspondant, tout en lui passant
le nom du site pour lequel cette importation va être faite comme paramètre.
Ce traitement est enrobé par un job, qui est une entité qui encapsule un processus de
traitement par lots complet. Ce job comporte une ou plusieurs Steps. Dans notre cas, on a défini
une seule Step pour chaque job.
- ItemReader lit le nom du site et l’envoie à la base de données, qui lui envoie à son
tour le compte GMB qui y associé. Une fois récupéré l’ItemReader renseigne ce
compte à l’API de GMB, cette dernière renvoie à son tour les locations GMB
correspondantes.
- Une fois le traitement est effectué, ItemWriter écrit ces enregistrements (Mobilosoft
locations) dans notre base de données.
Ceci résume le scénario « Importation des locations depuis GMB », déclenché par
l’administrateur depuis la solution de monitoring.
Une fois récupérés, le job se charge de les convertir en Mobilosoft reviews et les stocker
dans la base de données.
Si tout se passe bien, l’admin peut parcourir le fichier de log correspondant à ce scénario
et le lire à son aise.
Le reste des scenarios suivent la même logique que celui-ci. Pour l’import des reviews
depuis Facebook, on utilise l’API de Facebook au lieu de celle de GMB.
Et de même pour l’import des reportings, on a eu recours à l’API de Google pour l’exportation
des rapports.
Conclusion
Dans ce chapitre on a fait une description complète du comportement du système à
développer. En d’autres mots, on a réalisé une modélisation à travers les diagrammes de cas
d’utilisation et les diagrammes de séquences qui mettent en exergue le séquencement des
opérations et des relations éventuelles entre les services. Et finalement, on a représenté la
relation entre les déférentes entités de système via le diagramme d’entité-association.
Etude technique
Introduction
L’élaboration de cette solution s’est effectuée en se basant sur la technologie Java. Ce
choix est justifié par la maturité et la richesse de cette technologie et par la multitude
d’avantages qu’elle offre et qu’on a déjà précités.
Spring Cloud Data Flow permet à un utilisateur de créer un graphe orienté, où chaque
nœud du graphe est une application de type Task. Cela se fait en utilisant ‘Composed Task
DSL’ : l’éditeur graphique de type "Drag & Drop" qui permet la création des tâches composées.
Cet éditeur est accessible via une API REST du serveur Data Flow. Ce dernier cible
plusieurs environnements d’exécution (runtimes) comme Cloud Foundry, Kubernates ou Local.
C’est une application de courte durée "Short-lived" qui traite un ensemble fini de
données puis se termine. Il existe deux variantes d'applications de courte durée.
1- Spring Cloud Task qui permet la création des microservices de courte durée pour
l’application Spring Boot. Ce qui donne la possibilité d’exécuter n’importe quelle tâche
de manière dynamique, d’allouer des ressources à la demande et de récupérer les
résultats une fois la tâche terminée.
2- Application Batch dont la vocation est d'effectuer un traitement par lot sur une masse
de données de façon autonome et automatique. Elle a pour objectif de lire des données
Après avoir défini une application Batch, il s’avère important de jeter un coup d’œil en
quoi consiste Spring Batch.
Cette vue générale et non détaillée du framework Spring Batch présente plusieurs
composants qui doivent être définis et configurés pour suivre le workflow dont le sens suit la
numérotation qui accompagne chacun d'eux sur ce schéma.
La Step : le composant qui enveloppe le cœur même du besoin métier à traiter. Il est
chargé de définir trois sous-composants structurés comme suit:
o Le Reader : le composant qui est chargé de lire les données d'entrées à traiter.
Elles peuvent provenir de diverses sources (bases de données, fichiers plats (csv,
xml, xls, etc.)).
Les Job et Step Listeners : sont des composants facultatifs qui offrent un cadre pour
l'implémentation des services de monitoring personnalisés. Ils sont très utiles pour
journaliser (loguer) les états du Job/Step avant et après leur exécution.
Une analyse profonde avant tout choix final d’une technologie est nécessaire car un
mauvais choix va dévaloriser mon travail. C’est la raison pour laquelle on a consacré plus de
temps et d’effort en travaillant là-dessus.
Apres l’étude des fonctionnalités des différentes technologies, j’ai opté pour une liste
des technologies les plus sophistiquées qu’on va développer dans le paragraphe ci-dessous
IntelliJ IDEA est un IDE Java intelligent qui fournit une combinaison robuste d’outils
de développement. Ses fonctionnalités clés incluent :
Les fonctionnalités de IntelliJ IDEA sont continuellement étendues par les utilisateurs
et les tiers via des plugins. IntelliJ IDEA prend en charge Java EE, Spring / Hibernate et d’autres
piles technologiques.
5.2.1.2. Spring
Spring est un Framework libre pour construire et définir l'infrastructure des applications
java, dont il facilite le développement et les tests. Le Framework Spring a tout d’abord été écrit
par Rod Johnson et réalisé sous la licence Apache 2.0 en 2003.
Spring est considéré comme un conteneur dit « léger » c’est-à-dire une infrastructure
similaire à un serveur d'applications J2EE. Il prend donc en charge la création d’objets et la
mise en relation d’objets par l’intermédiaire d’un fichier de configuration qui décrit les objets
à fabriquer et les relations de dépendances entre ces objets. Le gros avantage par rapport aux
serveurs d’application est qu’avec Spring, les classes n’ont pas besoin d’implémenter une
interface quelconque pour être prises en charge par le Framework (au contraire des serveurs
d'applications J2EE et des EJBs). C’est en ce sens que Spring est qualifié de conteneur «léger».
Docker est un logiciel libre permettant de lancer des applications dans des conteneurs
logiciels.
Docker est un outil qui peut empaqueter une application et ses dépendances dans un
conteneur isolé, qui pourra être exécuté sur n'importe quel serveur. Il ne s'agit pas
de virtualisation, mais de conteneurisation, une forme plus légère qui s'appuie sur certaines
parties de la machine hôte pour son fonctionnement. Cette approche permet d'accroître la
flexibilité et la portabilité d’exécution d'une application, laquelle va pouvoir tourner de façon
fiable et prévisible sur une grande variété de machines hôtes
5.2.1.4. Maven
Il est aujourd’hui difficile d’étudier une architecture de microservices en Java sans parler
de Spring Boot. Certes il existe d’autres Framework (Dropwizard, Spark Java) mais la souplesse
d’utilisation de Spring Boot et son intégration à l’écosystème Spring font de son utilisation une
évidence, ce qui justifie le fait que le choix de la société pour le développement de la plateforme
MyMobilosoft se soit porté sur Spring Boot, bien qu’il en existe des dizaines d’autres.
Spring Boot est considéré comme une enveloppe de Spring créé pour répondre aux
besoins de redéfinir la même configuration à plusieurs endroits du code donc c’est un
Framework conçu pour simplifier le démarrage et le développement de nouvelles applications
Spring.
Spring Data est un projet supplémentaire de Spring créé pour répondre aux besoins
d’écrire plus simplement l’accès aux données. Il s’interface avec plusieurs sources de données
parmi lesquelles JPA, REST, MongoDB et quelques autres.
Hibernate une solution open source de type ORM qui facilite le développement de la
couche persistance de l’application.
Spring Batch est un framework open source pour le traitement batch ou par lots . Il s'agit
d'une solution légère et complète conçue pour permettre le développement d'applications par
lots, que l'on trouve souvent dans les systèmes d'entreprise modernes. Spring Batch s'appuie sur
l'approche de développement basée sur POJO du Framework Spring .
Il fournit des fonctions réutilisables qui sont essentielles dans le traitement de grands
volumes de données, y compris la journalisation / traçage, la gestion des transactions, le ré-
lancement des jobs. Il fournit également des services et des fonctionnalités techniques avancés
pour l’automatisation des jobs.
A savoir que, Google My Business est un service de référencement destiné aux propriétaires
d'entreprise et exploité par Google. GMB a pour but de donner aux propriétaires d'entreprise
davantage de contrôle sur ce qui apparaît dans les résultats de recherche. Google permet aux
propriétaires d'entreprise de vérifier les données concernant leur établissement en créant une
nouvelle fiche ou en revendiquant une fiche existante
L’API Graph est l’interface principale par laquelle les applications peuvent lire et écrire
sur le graphe social de Facebook. Accéder aux pages, aux publications, aux groupes, aux
évènements et à d’autres sections
C’est un logiciel de modélisation UML (Unified Modeling Language) open source qui
peut remplacer dans bien des situations des logiciels commerciaux et coûteux. Étant simple
d’utilisation, nécessitant peu de ressources système, supportant UML 2, ce logiciel constitue
une excellente option pour une familiarisation à la modélisation.
5.2.4.2. GanttProject
GanttProject est un logiciel libre de gestion de projet écrit en Java, qui permet d'éditer
un diagramme de Gantt. Parmi les fonctionnalités principales de ce projet :
Conclusion
Ce chapitre avait comme finalité d’expliquer le côté technique du projet. On a
commencé donc par la schématisation du fonctionnement global, et ensuite de lister les
technologies qu’on a employées.
Introduction
Après avoir mené à terme la phase d’analyse et de conception, et les outils et les
Frameworks dans les chapitres précédents. On décrit dans ce présent chapitre les différentes
tâches qu’on a intégrées pour la réalisation et la mise en œuvre de ce projet, tout en suivant une
approche itérative et incrémentale.
Le résultat du sprint 0 :
La couche "Batch Core" contient une API permettant de lancer et gérer un batch.
Les principales interfaces et classes que contient l'API sont: Job, JobLauncher et Step.
Schématiquement un batch correspond à un job qui va être lancé via un JobLauncher.
Un job est constitué d'une ou plusieurs Step. Une Step correspond à une étape dans un batch.
Apres l’ajout des fichiers et des classes de configurations qui pallient au problème
précité, on a pu générer un jar pour notre module de batch.
Cette solution démarre une instance H2 en mémoire. Donc si la tâche à exécuter depuis
SCDF utilise une base de données autre que H2, on aura des erreurs montrant que cette dernière
cherche ces données depuis sa source de données (H2) mais elle ne les trouve pas.
C’est pour cela, on a procédé par l’introduction de deux sources de données ; une pour
la logique métier, et l’autre dédiée aux batchs. Toutefois, l’utilisation de Google Cloud Platform
dans l’application myMobilosoft interfère ma configuration. Par conséquent, on a opté de
définir une source de données commune. Il s’agit de la base de données Postgres utilisée par
l’application.
Cette démarche, m’a permis de centraliser les données de SCDF et de l’application batch
dans une seule source.
Enfin, on a pu lancer le serveur SCDF dans un conteneur docker qui contient notre
environnement préconfiguré et les dépendances nécessaires, pour appeler par la suite le jar de
l’application batch déjà développé.
L’utilisateur peut consulter et voir la listes des applications enregistrées, avec comme
suggestion d’afficher leurs détailles :
La figure ci-dessous montre que le client "client-fstt" n’existe pas dans la plateforme :
Figure 42: Interface ‘liste des sites’ depuis myMobilosoft avant migration
La figure ci-dessous montre que le client "site-fstt" n’existe pas dans la plateforme :
Figure 43: Interface ‘liste des clients’ depuis myMobilosoft avant migration
L’utilisateur peut glisser et déposez chaque application sur le canevas. Pour les relier il utilise
les flèches. A noter que la définition DSL de la tâche équivalente s’ajoute dans le panneau du
texte en haut.
La figure suivante illustre l’ordre d’exécution de chaque sous tâche. Les tâches
nommées site, client et locations sont exécutées l’une après l’autre, mais gmbreviews, fbreviews
et reportings se déclenchent parallèlement qu’après complétion de la tâche locations :
Figure 45: Interface 'visualiser le graphe associé d'une tâche' depuis SCDF
Quand l’utilisateur clique sur le bouton ‘run’ pour lancer l’exécution d’une tâche, une
interface s’affiche pour lui permettre de saisir les arguments et les paramètres y liés. Il peut
ignorer cette étape et cliquer directement sur ‘Launch the task’:
Figure 48: Interface 'liste des tâches' après complétion de la création d'un site
Figure 49: Interface ‘liste des sites’ depuis myMobilosoft après migration
Figure 50: Interface ‘liste des locations’ depuis myMobilosoft avant la migration
La figure suivante présente la liste des avis des clients du site créé avant la migration :
Figure 51: Interface ‘liste des reviews’ depuis myMobilosoft avant la migration
Figure 52: Interface ‘liste des reportings’ depuis myMobilosoft avant la migration
Figure 53: Interface 'liste des tâches' après complétion de la création d'un client
Figure 54: Interface ‘liste des clients’ depuis myMobilosoft après migration
Figure 55: Interface 'liste des tâches' après complétion d’importation des locations
Figure 56: Interface ‘liste des locations’ depuis myMobilosoft après la migration
Dès que les locations sont bien importées, les 3 tâches qui les suivent, vont s’exécuter
en parallèle. La première qui s’est terminée, est l’import des reviews depuis Facebook :
Figure 57: Interface 'liste des tâches' après complétion d'importation du Facebook reviews
Figure 58: Interface ‘liste des reviews de Facebook’ depuis myMobilosoft après la migration
De la même manière, les autres tâches se suivent, il s’agit dans la figure suivante de
l’import de GMB reviews :
Figure 59: Interface 'liste des tâches' après complétion d'importation du GMB reviews
Figure 60: Interface 'Visualisation des logs' après complétion d'importation des GMB reviews
L’utilisateur peut accéder à la page des reviews depuis la plateforme, pour voir les avis
des clients insérés :
Figure 61: Interface ‘liste des reviews de Google’ depuis myMobilosoft après la migration
La figure suivante montre les reportings qui ont été ajoutés pour le site déjà créé depuis
la plateforme :
Figure 63: Interface ‘page des reportings’ depuis myMobilosoft après la migration
Voici la première feuille du fichier Excel contenant tous les informations des locations :
Objectifs atteints
Tout au long de la période du stage, j’ai été mené à passer par toutes les phases
inhérentes du développement logiciel. Commençant par la récolte et l’analyse des besoins du
client, jusqu’à la réalisation effective de la solution finale, son implémentation et son test. Tout
ceci, sous une contrainte de délai et de qualité qui m’a forcé à travailler dur et à user de mon
esprit d’analyse pour pouvoir livrer à temps un produit optimal et de qualité.
Obstacles affrontés
Bien que le projet ait été bénéfique en termes de plusieurs aspects, sa réalisation
effective n’a pas été évidente. En effet, j’ai été censé de cerner les concepts clés sur lesquels
reposent la problématique, ainsi que d’exploiter une multitude de Framework’s et d’outils, que
je n’ai pas eu l’occasion de mettre en pratique. Mais l’envie de m’améliorer et de s’intégrer au
processus de développement m’a poussé à se documenter à propos de ces technologies, et aussi
à se renseigner auprès de mes collègues et mon chef de projet pour des informations
complémentaires.
Enseignements personnels
Ce stage a été une expérience plus qu’enrichissante, et ce sur plusieurs niveaux.
Tout d’abord, j’ai encore plus développé mes compétences sociales et surtout le travail
au sein d’une équipe. En tant qu’ingénieur, ma mission principale est de trouver des solutions
aux problèmes qui se présentent ; ce que j’ai appliqué tout au long de ces 5 mois et demi.
Sur le plan technique, ce projet a été une occasion pour moi de connaitre de nouvelles
technologies. J’ai également pu apprendre quelques règles de conception et de développement
pour fournir une solution réutilisable et maintenable dans le temps.
La contribution à un tel projet de grande envergure m’a permet de découvrir les bonnes
pratiques mises en œuvres dans les outils utilisés. J’ai essayé donc de voir comment est organisé
le code, comment il est écrit, quels sont les idiomes et j’ai essayé autant que possible d’en tirer
des leçons pour intégrer ces bonnes pratiques dans mes développements.
Et finalement, j’ai pris connaissance de nouveaux domaines, ce qui m’a donc permis de
consolider ma culture d’entreprise et de l’environnement informatique en général.
Mon projet de fin d’études effectué au sein de VirtuoCode, consistait sur l’élaboration
d’une solution de surveillance des taches constituant les scénarios de migration des clients
Mobilosoft.
Pour la réalisation de ce projet, j’ai commencé par une étude fonctionnelle des besoins
spécifiques, ainsi que l’environnement de déploiement tout en respectant les exigences
techniques. Ensuite j’ai abordé la phase de la conception détaillée de la solution qu’on a
élaborée par la suite dans le cadre de mon projet.
L’expérience que j’ai vécue durant ce stage a été enrichissante. Sur le plan technique,
j’ai approfondi mes compétences en ce qui concerne les technologies et outils. Au niveau
relationnel, j’ai compris que l’esprit d’initiative, le sens de la responsabilité et l’aptitude à
communiquer sont de éléments capitaux pour la réussite de tout projet informatique. Enfin, sur
le plan personnel, j’ai développé mon aptitude d’autonomie, de patience et persévérance. Ce
stage m’a permis de consolider mes connaissances acquises pendant ma formation.
Ceci va offrir une fonctionnalité de plus ; qui est la planification des tâches, c’est-à-dire
l’utilisation des expressions ‘cron’ pour l’exécution automatique des tâches, à une date et une
heure spécifiée à l'avance.
https://docs.spring.io/spring-batch/docs/current/reference/html/index-
single.html
https://docs.spring.io/spring-cloud-
dataflow/docs/current/reference/htmlsingle/
https://github.com/spring-cloud-task-app-starters/composed-task-runner
https://cloud.google.com/sql/docs/postgres
https://www.infoq.com/fr/articles/Multiple-Databases-with-Spring-Boot/
https://www.mobilosoft.com/fr/
https://projects.spring.io/spring-xd/
https://docs.spring.io/spring-batch-admin/trunk/reference/reference.xhtml
Règles de nommage
On a mis en place plusieurs règles de nommage pour les identificateurs (noms de
variables, types, fonctions, classes, etc.) :
Choisir des noms explicites, qui n’ont pas besoin de commentaires pour expliquer.
Éviter les ambiguïtés, comme par exemple : info, data, argc, etc.
Choisir des noms facilement prononçables, pour faciliter le travail en équipe.
Tous les noms sont en anglais.
Un nom pour concept, par exemple :
Mot-clé Concept
Fonctions
Les fonctions doivent être courtes, et ne réaliser qu’un traitement.
Leurs noms doivent être descriptifs et en général avec un verbe d’action.
Eviter toute forme de redondance. (Fonctions avec traitements similaires)
Commentaires
On a jugé judicieux d’éviter un très grand nombre de commentaires, car les noms sont
assez explicites. Toutefois, on a décidé de les mettre dans les cas suivants :
Mise en forme
Pour avoir une meilleure lisibilité du code, on a décidé de suivre ces règles :
Ajouter des lignes vides entre les éléments d’un fichier, comme les fonctions, etc.
Une seule instruction par ligne.
La ligne ne doit pas être très longue, c’est-à-dire qu’il faut éviter à avoir à utiliser le
scroll horizontal.
Utilisation de l’indentation. Les commentaires doivent suivre aussi.
Ce rapport constitue le fruit d’un travail accompli dans le cadre du projet de fin d’études
qui m’a été confié durant mon stage au sein de l’entreprise "VirtuoCode".
La matière première dans ce projet est le contenu généré par les APIs de Google et
Facebook. J’en ai donc puisé dans ces interfaces de programmation applicative, pour obtenir
des données qui sont à jour.
J’ai veillé à développer cette solution avec les technologies les plus récentes et
performantes, et ceci dans un cadre agile en adoptant l’approche SCRUM.
Ce projet est réalisé avec la partie des traitements Batch à base de Spring Batch, et
Spring Cloud Data Flow pour le monitoring des tâches.
Mots-clés: JAVA, J2EE, Spring Boot , Spring Batch, Spring Cloud Data Flow, Traitement
Batch, Monitoring, Facebook API, Google My Business API.