Enib cours c.a.i. web - séance #6 : autour de la webapp

Preview:

DESCRIPTION

 

Citation preview

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