3. Besoin d'un modèle d'infrastructure
Si mon oncle me demande de lui faire un CMS
pour son association, quel outil je choisis ?
● Hébergement mutualisé
● Infrastructure WAMP/LAMP
○ Linux/Windows – Apache – MySQL – PHP
● Joomla
○ Gratuit
○ Facile à installer et configurer
○ Prise en main rapide
○ Des multiples options de personnalisation
○ Thèmes
○ Add-ons
4. Besoin d'un modèle d'infrastructure
Si mon client bancaire me demande un CMS
pour un petit projet, quel outil je dois employer ?
● Ca depend !
○ Des normes internes du client
○ Le niveau de risque du projet
○ Les contraintes d'infrastructure
● Souvent une solution progicielle, comme Jalios JCMS pour le CMS
○ Payant
○ Processus d'installation complexe
○ Courbe d'apprentissage pour la prise en main
○ Personnalisation complexe
○ Peu d'addons et des thèmes
○ Customisation à prévoir
5. Besoin d'un modèle d'infrastructure
Pourquoi choisir donc Jalios JCMS et non Joomla ?
Industrialisation
On ne choisit pas un outil pour un groupe bancaire comme
on choisit un outil pour une association
6. Industrialisation
Dans le monde réel il n'y a pas que
les arguments techniques
○ Choix technologiques pragmatiques
○ Capitalisation et mutualisation
■ Des infrastructures
■ Des licences
■ Des coût d'intégration
■ Du savoir faire
○ Maîtrise du SI
○ Gestion des risques
8. Industrialisation
● Qualité de service
○ Charge
■ Load-balancing
■ Scalabilité
○ Temps de réponse
○ PRA /PCA
● Sécurité
○ Maîtrise technologique du socle d'infrastructure
○ Expertise sur le modèle applicatif
9. Industrialisation
● Exploitation / Devops
○ Equipes de pilotage
■ Besoin d'outils de monitoring et surveillance
■ Besoin de consignes d'exploitation
■ Besoin de procédures uniformisés
○ Suivi d'exploitation
■ Equipes de support niveau 2
■ Besoin d'uniformité du parc applicatif
■ Besoin de maîtriser la plateforme
○ Support niveau 3
■ Experts techniques internes ou externes
■ Besoin d'outils de diagnostique
■ Besoin de maîtriser la plateforme
10. Industrialisation
● Gestion de crises
○ Temps d'analyse
○ Besoin d'expertise
○ Remontée vers les développeurs
Il faut pouvoir résoudre une crise le plus
rapidement possible et au moindre coût
12. Forge logicielle
En informatique, une forge désigne un système de gestion
de développement collaboratif de logiciel.
Merci Wikipedia
● Objectifs :
○ Amélioration de la qualité des logiciels
○ Amélioration de la traçabilité
du developpement à la production
○ Garantir la pérennité
○ Amélioration de la productivité des développements
« Fournir un outillage et des processus en
cohérence avec ces problématiques »
13. C'est quoi donc cette forge ?
Un ensemble d'outils et de pratiques mis en cohérence afin
d'assurer l'industrialisation de la pratique logicielle
● Un socle technique et l'outillage qui va avec
● Des processus et bonnes pratiques
● Des outils associés à la pratique logicielle et aux
processus
● Un cadre facilitant l'industrialisation
14. Socle Applicatif
Structuration des architectures applicatives
autour d'éléments logiciels maîtrisés
qui fournit le cadre de démarrage des
développements logiciels
● Type de technologie (Java, PHP, Python...)
● Type de serveur (Tomcat, Jetty, Play...)
● Type d'architecture (Synchrone/asynchrone,
Frontend/Backend...)
● Bibliothèques communes (Apache Commons, Guava...)
● Composants aditionnels (Memcached,
BDDs)
15. Modèle Applicatif
Définition des architectures applicatives type, selon le type
de besoin auquel elles répondent, pour le développement
des applications.
● Type de framework (GWT, Spring, Play...)
● Normes d'utilisation (Asynchronisme, equilibrage de
charge, stateless...)
● Charte graphique et ergonomique
16. Environnement de build
Un moteur de production est un logiciel dont la fonction
principale consiste à automatiser (ordonnancer et piloter)
l'ensemble des actions (préprocessing, compilation,
éditions des liens, etc.) contribuant, à partir de données
sources, à la production d'un ensemble logiciel
opérationnel.
● Une alternative complète... et complexe :
○ Apache Maven
● Une alternative plus simple... mais moins puissante :
○ Apache Ant
● Des nouveaux venus : Sbt, Gradle...
17. Intégration continue
Processus d'automatisation des tâches récurrentes
liées aux développements logiciels
● Lancement automatisé des constructions
en lien avec le SCM
● Exécution des tests
● Déploiement du livrable
● Reporting sur les étapes ci-dessus
● Outil le plus utilisé : Jenkins
18. SCM
Référentiel unique des sources des applications
permettant de suivre et d'identifier les différentes versions
des applications et les différents intervenants
● Gestion de version centralisée (CVS, SVN)
○ Un seul dépôt des versions qui fait référence
● Gestion de versions décentralisée (Git, Mercurial)
○ Le développeur travail dans son propre dépôt
○ Les dépôts sont synchronisés ensuite
19. SCM
● Avantages des gestions de versions décentralisées
○ Performance (opérations faites en local)
○ Ne pas dépendre d'une seule machine
(point de défaillance)
○ Pouvoir travailler sans connexion
○ Travailler sur un projet sans nécessiter les
permissions
○ Le travail privé reste dans le depôt local
● Désavantages
○ Le clonage initial est plus lent (tout est copié)
○ Pas de système de lock
20. Référentiel de
bibliothèques
Outil de stockage et de gestion des dépendances entre les
composants logiciels mis en oeuvre dans les projets
● Le type d'outil dépend de l'outil choisi pour le build
○ Maven fait au même temps la construction et le
référentiel de bibliothèques
○ Avec Ant il faut utiliser Ivy pour la récuperation des
bibliothèques
○ Sbt utilise Ivy en interne
21. Qualimétrie
C'est une pratique automatisée ou non
visant à évaluer la qualité du code
selon des critères fixés
● Détecter au plus tôt les bugs
● Uniformiser les pratiques de codages
● Améliorer la maintenabilité
● Eduquer aux bonnes pratiques
● Outils les plus employés : FindBugs, PMD, Sonar
Le coût de correction d'une erreur croît
exponentiellement avec le temps...
22. Espace de communication
Un ensemble de média d'échanges d'informations
visant à faciliter l'accès à la connaissance ou
le référencement des informations
● Des solutions multiples : blogs, listes de courrier,
twitter...
● Une solution à privilegier : wiki
○ Documentation collaborative
23. Tracker
Permet d'identifier et de tracer les demandes
d'évolutions et la remontée d'incident, ainsi que
le suivi de leurs prises en compte dans le temps
● Identifier de manière unique une
évolution/incident/anomalie
● Proposer un workflow pour le cycle de vie d'une
évolution/incident
● Mettre en relation les différents acteurs
24. Le mythe de la techno unique
Ou le syndrome du marteau
25. Si le seul outil que vous avez est un marteau,
vous tendez à voir tout problème comme un clou
● Pretendre d'avoir une technologie de référence à utiliser
pour tous les projets
● Approche très reductrice, on adapte le projet à l'outil et
non l'outil au projet
● Approche dangereuse, elle nuit à l'innovation et
sclerose le SI
Le syndrome du marteau
26. Mais l'industrialisation alors...
Il faut choisir le bon outil pour chaque problème
● Parmi une panoplie d'outils qui ont été industrialisés
● Ca demande plus d'effort :
○ Veille technologique
○ Remise en question
○ Industrialisation
○ Formation des équipes
● Mais le résultat est à la hauteur
○ Productivité
○ Évolutivité
○ Motivation
● Le bon ingénieur sait être disruptif