Conception d'Applications Interactives :
Applications Web et JEESéance #6
Autour de la webapp
Besoin d'un modèle d'infrastructure
Industrialisation
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
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
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
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
Industrialisation
● Infrastructures○ Machines○ Systèmes d'exploitation○ Logiciels
■ Serveurs■ Bases de Données
○ Disques■ Stockage■ Sauvegardes
○ Réseau■ Routage■ ACL
○ Traffic
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
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
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
La forge logicielle
Des outils pour des développeurs
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 »
C'est quoi donc cette forge ?
Un ensemble d'outils et de pratiques mis en cohérence afind'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
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)
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
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...
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
SCM
Référentiel unique des sources des applicationspermettant 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
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
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
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...
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
Tracker
Permet d'identifier et de tracer les demandes d'évolutions et la remontée d'incident, ainsi quele 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
Le mythe de la techno unique
Ou le syndrome du marteau
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
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