2017 09 QuangPham Rapport Stage Final
2017 09 QuangPham Rapport Stage Final
2017 09 QuangPham Rapport Stage Final
Master 2 DCISS
Rapport de stage
Refonte de GeoNature
pour moderniser et modulariser les applications web
J'aimerais remercier chaleureusement mon maître de stage Camille Monchicourt, qui m’a aidé à me
rendre au parc tous les jours, qui m’a donné la motivation pour aller de l'avant, à Gil Deluermoz,
qui m'a transmis beaucoup de connaissances techniques et professionnelles. Merci d’avoir fait
confiance à un « novice » en développement web pour commencer un projet important comme
GeoNature.
Je remercie également l’ensemble des collègues du PNE pour votre accueil chaleureux pour un
environnement amical, et sympathique !
Merci à mes examinateurs Jean-Michel Adam et Jérôme David à l’équipe pédagogique du master,
Je suis vraiment impressionné par votre attention et votre aide pendant mes études.
Table des matières
Remerciements..................................................................................................................2
I.Contexte.............................................................................................................................................5
1.Présentation de la structure d’accueil...........................................................................................5
2.L’équipe de travail........................................................................................................................6
3.Les missions du SI........................................................................................................................6
II.Objectif général, Geonature, Taxhub................................................................................................8
1.Objectif général.............................................................................................................................8
2.Contexte........................................................................................................................................8
3.Besions..........................................................................................................................................8
III.Les applications développées par le Parc national des Ecrins.........................................................9
1.UsersHub......................................................................................................................................9
2.TaxHub........................................................................................................................................10
3.GeoNature-atlas..........................................................................................................................11
4.GeoSites......................................................................................................................................11
5.GeoNature...................................................................................................................................12
IV.Mon stage sur TaxHub...................................................................................................................13
V.Mon stage sur GeoNature v2...........................................................................................................13
1.La mission de stage.....................................................................................................................13
2.Inconvénient des technologies utilisées dans GeoNature 1........................................................13
3.Renforcer le projet avec Python Flask et Angular 4...................................................................13
4.Structure du code GeoNature 2...................................................................................................15
5.Base de donnée...........................................................................................................................16
5.1Organisation de la base de données.....................................................................................16
5.2Modèle de données...............................................................................................................17
6.Fontend.......................................................................................................................................18
6.1Organisation frontend...........................................................................................................18
6.2Frontend Core – Modules....................................................................................................19
6.3Frontend Interface................................................................................................................20
6.3.1Menu Bar - SideNav-Bar..............................................................................................21
6.3.2Accueil..........................................................................................................................22
6.3.3Module Contact............................................................................................................23
6.3.4Composant map............................................................................................................24
6.3.5Composant form contact:.............................................................................................25
6.3.6Composant form contact avec les options....................................................................26
6.3.7Les technos frontend....................................................................................................27
7.Backend......................................................................................................................................28
7.1Organisation backend...........................................................................................................28
7.2Backend API REST conception...........................................................................................29
7.3Les technologies backend....................................................................................................30
8.Dev-ops.......................................................................................................................................31
8.1Docker..................................................................................................................................31
8.2Github...................................................................................................................................31
8.3Automatisation avec script SH.............................................................................................31
9.Toutes les technologies...............................................................................................................32
VI.Travail collectif.............................................................................................................................33
1.Agile avec Github.......................................................................................................................33
2.Workshop de développement (Briançon – 21 aout 2017)...........................................................35
VII.Calendrier de travail.....................................................................................................................36
1.Taxhub........................................................................................................................................36
2.GeoNature Frontend...................................................................................................................36
3.GeoNature Backend....................................................................................................................36
4.Docker.........................................................................................................................................37
5.Workshop – Rapport – Transfert.................................................................................................37
VIII.Futur de GeoNature....................................................................................................................38
1.Ionic............................................................................................................................................38
2.Progressive web apps..................................................................................................................38
3.Docker.........................................................................................................................................38
IX.Les difficultés................................................................................................................................40
1.Difficulté de la choix de technologies........................................................................................40
2.Difficulté de la discussion en groupe..........................................................................................40
X.La conclusion..................................................................................................................................41
I. Contexte
3. Les missions du SI
Le pôle SI occupe une position transversale puisqu'il est amené à travailler avec tous les
services du Parc. Il assiste aussi bien le service scientifique dans la mise en place de
protocoles de suivi faune-flore, que le service aménagement dans le suivi du patrimoine bâti
et de l'agriculture, ou encore le service communication dans le mise en place d'outils de mise
en valeur des sentiers de randonnées et l'animation du site web.
De part ses missions de protection de la faune et de la flore, le parc national est amené à
collecter des quantités importantes de données spatialisées. Le rôle du SI au sein du parc est
donc d'organiser et de faciliter la collecte de ces données, de les gérer mais également de
créer des outils pour les analyser. Une grande composante métier du SI tient donc dans
l'administration de bases de données.
Le PNE a été novateur dans la mise en place de la collecte et le stockage des données sur
informatique et possède aujourd'hui une architecture de base de données et des outils
structurés. Le schéma ci-dessous (figure 2) résume la modernisation de la stratégie générale
du SI, du recueil de la donnée jusqu’à son traitement et sa consultation. En fonction des
protocoles et des besoins des agents, plusieurs chaînes de travail ont été mises en place. La
collecte sur le terrain, anciennement effectuée sur papier (en blanc sur le schéma) est
aujourd'hui saisie sur des outils nomades (applications mobiles sur tablette). Pour les
protocoles importants, l'ensemble de ces données sont ensuite centralisées dans des bases de
données PostgreSQL (avec extension PostGIS pour les besoins spatiaux). A partir de ces
bases de données, des applications de consultation métier ou grand public sont développées
soit par des prestataires extérieurs , soit directement par le SI.
Illustration 2: La chaîne de travail du SI : du recueil à la consultation des données (document
interne).On distingue en vert la chaîne de travail actuelle, et en blanc l'ancienne.
II. Objectif général, Geonature, Taxhub
1. Objectif général
Refondre les applications utilisées par les parcs nationaux (ObsOcc et GeoNature) pour en
faire un outil open source plus modulaire, plus moderne, plus ouvert, qui intègre de
nouvelles fonctionnalités et permet à chaque structure d’y intégrer des modules pour ses
protocoles spécifiques
2. Contexte
Actuellement les parcs nationaux utilisent les outils ObsOcc (aka SICEN) et GeoNature (+
KaruNati au PNG et PNRun) pour la gestion de leurs protocoles et données Faune et Flore.
Ces 2 outils sont développés en interne depuis 2010 et deviennent obsolescents
techniquement (technologies vieillissantes, non maintenues, présentant donc des défauts de
compatibilité, d'ergonomie et de performances). Ils sont partiellement redondants et ont été
développés dans des contextes spécifiques. Le premier n'est pas compatible avec la stratégie
scientifique inter-parc, ni la stratégie commune SI qui est en train d'être construite. Le
second n'est pas assez modulaire pour permettre à chacun de l'adapter à ses besoins et
protocoles. Par ailleurs les protocoles, le contexte et les besoins des structures ont évolué
depuis la conception de ces outils.
3. Besoins
• Disposer d'une organisation des données souple et solide, ouverte vers les
partenaires, structurée à partir d'un socle et de référentiels communs tout en facilitant
à chaque structure la possibilité d'y intégrer ses propres protocoles
1. UsersHub
Application web de gestion centralisée des utilisateurs.
https://github.com/PnEcrins/UsersHub
UsersHub est une application web permettant de regrouper l'ensemble des utilisateurs
d'applications web afin de gérer de manière différenciée et centralisée les droits d'accès à ces
applications ainsi que le contenu des listes déroulantes d'observateurs.
Elle permet de gérer de manière centralisée des utilisateurs et de les placer dans des
groupes ; de créer différents niveaux de droits et de les affecter aux utilisateurs et/ou aux
groupes d'utilisateurs pour chacune de vos applications. Elle permet également de gérer des
organismes, des unités et des listes déroulantes regroupant des utilisateurs ou des groupes
d'utilisateurs.
2. TaxHub
Application web de gestion centralisée des taxons basée sur le référentiel TAXREF
(http://inpn.mnhn.fr/programme/referentiel-taxonomique-taxref) du MNHN.
Elle permet de gérer la liste des taxons présents dans chaque structure, d'y greffer des informations
spécifiques, de définir des listes de taxons et des filtres en fonction des besoins.
Elle permet aussi de gérer les descriptions et les médias des taxons pour leur affichage sur
GeoNature-atlas.
https://github.com/PnX-SI/TaxHub
Illustration 6: GeoNature -atlas - Parc national des Ecrins
3. GeoNature-atlas
Atlas WEB dynamique Faune-Flore basé sur les données présentes dans la synthèse de GeoNature.
https://github.com/PnEcrins/GeoNature-atlas
4. GeoSites
GeoSites permet de mettre en ligne une application WEB grand public pour consulter l'inventaire du
patrimoine géologique d'un territoire. Cet inventaire est coordonné au niveau national par la CPPG
(Commission permanente du patrimoine géologique) et validé scientifiquement par le MNHN
(Muséum national d'Histoire naturelle) et le BRGM (Bureau de Recherches Géologiques et
Minières). https://github.com/PnEcrins/GeoSites
5. GeoNature
• https://github.com/PnX-SI/GeoNature
• GeoNature version 1.0 est un ensemble d'applications web et mobile utilisé par les parcs
nationaux pour la gestion de protocoles et données Faune et Flore. Il est développé et
maintenu par le collectif de développeurs du réseau des Parcs Nationaux depuis 2012
• GeoNature est aussi en train d’être déployé pour être utilisé comme l’outil national de saisie
des données des études d'impact dans le cadre de l'article L 411-1 A de la loi pour la
reconquête de la biodiversité, de la nature et des paysages n° 2016-1087 du 8 août 2016.
• GeoNature version 2 : Refondre GeoNature 1, pour en faire un outil open source plus
modulaire, plus moderne, plus ouvert, qui intègre de nouvelles fonctionnalités et permet à
chaque structure d’y intégrer des modules pour ses protocoles spécifiques.
• Cahier de charge V2 http://geonature.fr/documents/2017-04-GN2-Fonctionnalites-0.1.pdf
1. La mission de stage
Mes tâches:
• Tester les technologies.
• Initialiser l'environnement pour le projet GeoNature 2.
Avec la rôle de stagiaire, mes missions ont été la découverte des technologies et
l’initialisation de l’environnement stable de développement pour un projet de
développement qui aura une durée 3 ans minimum.
C’est une mission assez large mais pour ma part c’est la chance de découvrir tous les
côté.aspects d’un projet qui démarre.
Je me suis fixé comme objectif initial d’acquérir le maximum connaissances sur les
différents de la base de données, du backend ainsi que DevOps, Ux/Ui, API, tests, scripts SH
de déploiement automatique, modularisation de l’application…
Extjs : ce framework javascript n'est quasiment plus utilisé ; les versions utilisées ne sont
plus du tout maintenu et des incompatibilités avec l'implémentation javascript des
navigateurs modernes sont déjà survenues (corrigées) mais pourrait devenir bloquantes.
Extjs n'est plus réellement open source, son interface est vieillissante. Et surtout, c'est le
framework js qui prend en charge totalement le DOM (c'est le JS qui construit tout le
HTML). Il est donc difficile de personnaliser l'interface.
La framework Flask a été utilisé dans le projet TaxHub et GeoNature Atlas. Dans
GeoNature 2 Flask remplacera Symfony.
Angular 4: Mon stage a donc été l'occasion pour le parc national de faire de nouveaux choix
en terme de technologie, en accord les SI des autres parcs nationaux.
VueJs est un framework intéressant qui monte fortement, il est très adapté à des projets
léger ou pour des développeurs moins expérimentés.
Angular 4 est un framework récent, il est sorti en décembre 2016. Il fait suite à AngularJS et
Angular 2. Il est soutenu par Google. C'est un framework lourd mais adapté à la taille du
projet, avec une forte rigueur d'organisation de l'architecture du code, notamment pour
obtenir un découpage pertinent et fonctionnel en modules suffisamment autonomes.
Finalement, l'équipe inter-parc a choisi Angular 4 parce qu'il est plus tôt adapté à un grand
projet comme GeoNature 2.
Put
L'image ci-dessus correspond à l'interface de la page d'accueil. Pour accéder à cette page,
aucune connexion n'est nécessaire.
Sur la page actuelle, il existe trois composants principaux: un texte introduction et de
présentation de l'application, suivi d'une carte dynamique avec des fonctionnalités simple
comme la recherche, l'affichage de coordonnées GPS chaque fois que l’on clique sur la
carte, et des graphiques d'analyse automatique des données.
Sur la page d'accueil, j'ai testé la compatibilité des bibliothèques Leaflet et Chartjs avec
Angular 4.
6.3.3 Module Contact
C'est l'un des modules les plus importants de l'application car c’est celui utilisé le plus
fréquemment. Le module de contact se compose de deux composants principaux: la carte et
le formulaire. Il y a d'autres petits composants intégrés dans la formulaire comme taxonomy,
nomenclature et observers.
6.3.4 Composant map
Il s’agit d’une api simple car il n'y a pas de relations entre les tables, dans cette partie.
J’aurai souhaité en développer davantage, mais en raison des limites du temps de stage, de
l’importance du test des technologies ainsi que l’initialisation de l'environnement, je n’ai
pas pu aller plus loin.
Au cours de la conception de l’api, j'ai utilisé Postman, un outil utile pour partager des cas
de test d’une API, ainsi que l'auto-documentation d’une API et pour partager la conception
de l‘API entre les développeurs backend, les développeurs frontend ou d'autres utilisateurs.
Cet outil a considérablement simplifié le travail en équipe.
7.3 Les technologies backend
8.2 Github
• Voir ma présentation de la façon dont le PNE utilise github sur mon rapport de mi-
stage, page 11 http://geonature.fr/documents/2017-05-QuangPham-Rapport-mi-
stage.pdf
• Pendant le temps que j'ai travaillé ici, Camille a organisé le travail de l’équipe selon
les méthodes Agiles avec Github. C'est aussi une chose très intéressante que j'ai
appris.La méthode Agile avec github sera présenté plus précisément dans la section
sur le travail de groupe.
1. Taxhub
Rapport de mi stage http://geonature.fr/documents/2017-05-QuangPham-Rapport-mi-
stage.pdf
2. GeoNature Frontend
Cette étape de test du frontend, de choix des technologies, d’auto-apprentissage
technologies, des tests de compatibilité avec les frameworks et les bibliothèques, de
développement d’une démo a pris environ 1,5 mois. Puis l’étape de conception de l'interface
avec Materiel Design et Bootstrap a pris 2 semaines. Une démonstration a été réalisée après
2 mois de travail.
Pour tester la démonstration sur : https://geonature-a568d.firebaseapp.com/
Compte : [email protected]
Mot de passe : 123456
3. GeoNature Backend
Le travail de création d'un environnement du backend a pris deux semaines. Pour moi, c'était
un travail vraiment intéressant, bien que l'environnement backend n'ait pas été utilisé dans le
projet, mais j'ai acquis beaucoup de connaissance intéressantes et très utiles. Avant cela il
n’y avait pas d’outil pour tester les APIs, partager les APIs, et faire la documentation des
APIs. Postman – l’outil que j’utilise pendant le développement du backend, a été ensuite
déployé et utilisé par l’ensemblede l’équipe.
4. Docker
J'ai passé une semaine à explorer cette technologie et l'ai appliqué avec succès au
développement de l'environnement du frontend.
1. Ionic
Ionic Framework est un mélange d’outils et de technologies pour développer des
applications mobiles hybrides rapidement et facilement. Il s’appuie sur Angular pour la
partie application web du framework et sur Cordova pour la partie construction des
applications natives. Ce framework open source permet de développer une application
déployable sur plusieurs environnements tel qu’un site web ou une application mobile pour
des systèmes tel que Android ou iOS.
Avec la GeoNature 1, une entreprise a été engagée pour créer une application mobile basée
sur les fonctionnalités de GeoNature Web. Ce travail est compliqué à amener en terme de
ressources personnelles du PNE pour pouvoir suivre le projet mobile.
IONIC : serait une bonne solution à ce problème, et il sera encore plus pratique lorsque
GeoNature sera entierement développé avec Angular 4. Il y aura des adaptations à faire dans
le CSS et HTML pour à taille de l’application mobile notamment, mais la logique du core de
TypeScript et Angular ne changera pas par rapport à une application pour le Web.
3. Docker
L'installation d'un environnement de travail pour une application comme GeoNature est
toujours une tâche complexe. Le problème de « It works on my machine » existe toujours.
GeoNature est un projet open source, lorsqu’il sera largement développé, il y aura plus de
développeurs qui souhaiteront participer au développement, apporter des modification à
Geonature comme ils veulent et souhaitent déployer sur leur serveur. C’est beaucoup plus
simple si tout cela se fait avec une seule ligne de commande de docker.
IX. Les difficultés
1. Difficulté du choix des technologies
Angular 4 vs Vuejs
J’ai travaillé de manière importante sur ce sujet, pendant plus d'un mois, c'est le sujet le plus
considéré. Nous avons d’abord comparé les frameworks javascript, testé Angular et Vuejs.
En plus des discussions dans le groupe, Camille a également demandé des conseils aux
autres développeurs qu'il connaissait. Cependant il était difficile d‘arriver à un consensus
final, et pendant plus d’un mois, le groupe n’avait pas de position claire sur le sujet. Camille
a décidé de commencer à développer une démonstration avec Angular. Voir la partie
Renforcer le projet avec Python Flask et Angular 4 pour plus de détail.
Bootstrap vs Materiel Design Angular
Bootstrap est le Framework Css standard le plus populaire aujourd'hui. Les avantages de
BootStrap sont qu’il est facile à utiliser et il existe de nombreux exemples et documentations
Materiel Design Angular est un nouveau Framework Css basé sur la norme de conception de
Materiel Design de Google et est le Framework pour Angular, avec des designs modernes et
pratiques.
Il y a eu une reflexion dans le choix entre l'un de ces 2 Framework Css, avec le consensus de
commencer à concevoir avec Bootstrap. Mais après quelques jours de test de Bootstrap pour
réaliser le design du tableau de bord , j'ai rencontré de nombreuses difficultés. Celles-ci ont
pu être résolues plus facilement avec avec Material Design.
Enfin, pour résoudre ce problème, j'ai intégré les deux Framework. Bootstrap et ses
composants sont la structure principal de l'application combinée un certain nombre de
composants avec des designs modernes et pratiques de Material Design.
J’ai également eu la chance de rencontrer des collègues intéressants tels que Camille, Gil,
Vincent, Théo et beaucoup d'autres collègues. Je travaille dans un environnement convivial.
Pour un étranger comme moi, c'est une expérience extrêmement précieuse.
Les six derniers mois ont été les six meilleurs mois et les plus spéciaux que j'ai jamais eu
dans mon séjour à l'étranger.