Enib   cours c.a.i. web - séance #6 : autour de la webapp
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

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

  • 522 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
522
On Slideshare
522
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
16
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Conception dApplicationsInteractives :Applications Web et JEESéance #6Autour de la webapp
  • 2. Besoin dun modèledinfrastructureIndustrialisation
  • 3. Besoin dun modèle dinfrastructureSi mon oncle me demande de lui faire un CMSpour 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 dun modèle dinfrastructureSi mon client bancaire me demande un CMSpour un petit projet, quel outil je dois employer ?● Ca depend !○ Des normes internes du client○ Le niveau de risque du projet○ Les contraintes dinfrastructure● Souvent une solution progicielle, comme Jalios JCMS pour le CMS○ Payant○ Processus dinstallation complexe○ Courbe dapprentissage pour la prise en main○ Personnalisation complexe○ Peu daddons et des thèmes○ Customisation à prévoir
  • 5. Besoin dun modèle dinfrastructurePourquoi choisir donc Jalios JCMS et non Joomla ?IndustrialisationOn ne choisit pas un outil pour un groupe bancaire commeon choisit un outil pour une association
  • 6. IndustrialisationDans le monde réel il ny a pas queles arguments techniques○ Choix technologiques pragmatiques○ Capitalisation et mutualisation■ Des infrastructures■ Des licences■ Des coût dintégration■ Du savoir faire○ Maîtrise du SI○ Gestion des risques
  • 7. Industrialisation● Infrastructures○ Machines○ Systèmes dexploitation○ Logiciels■ Serveurs■ Bases de Données○ Disques■ Stockage■ Sauvegardes○ Réseau■ Routage■ ACL○ Traffic
  • 8. Industrialisation● Qualité de service○ Charge■ Load-balancing■ Scalabilité○ Temps de réponse○ PRA /PCA● Sécurité○ Maîtrise technologique du socle dinfrastructure○ Expertise sur le modèle applicatif
  • 9. Industrialisation● Exploitation / Devops○ Equipes de pilotage■ Besoin doutils de monitoring et surveillance■ Besoin de consignes dexploitation■ Besoin de procédures uniformisés○ Suivi dexploitation■ Equipes de support niveau 2■ Besoin duniformité du parc applicatif■ Besoin de maîtriser la plateforme○ Support niveau 3■ Experts techniques internes ou externes■ Besoin doutils de diagnostique■ Besoin de maîtriser la plateforme
  • 10. Industrialisation● Gestion de crises○ Temps danalyse○ Besoin dexpertise○ Remontée vers les développeursIl faut pouvoir résoudre une crise le plusrapidement possible et au moindre coût
  • 11. La forge logicielleDes outils pour des développeurs
  • 12. Forge logicielleEn informatique, une forge désigne un système de gestionde 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 encohérence avec ces problématiques »
  • 13. Cest quoi donc cette forge ?Un ensemble doutils et de pratiques mis en cohérence afindassurer lindustrialisation de la pratique logicielle● Un socle technique et loutillage qui va avec● Des processus et bonnes pratiques● Des outils associés à la pratique logicielle et auxprocessus● Un cadre facilitant lindustrialisation
  • 14. Socle ApplicatifStructuration des architectures applicativesautour déléments logiciels maîtrisésqui fournit le cadre de démarrage desdéveloppements logiciels● Type de technologie (Java, PHP, Python...)● Type de serveur (Tomcat, Jetty, Play...)● Type darchitecture (Synchrone/asynchrone,Frontend/Backend...)● Bibliothèques communes (Apache Commons, Guava...)● Composants aditionnels (Memcached,BDDs)
  • 15. Modèle ApplicatifDéfinition des architectures applicatives type, selon le typede besoin auquel elles répondent, pour le développementdes applications.● Type de framework (GWT, Spring, Play...)● Normes dutilisation (Asynchronisme, equilibrage decharge, stateless...)● Charte graphique et ergonomique
  • 16. Environnement de buildUn moteur de production est un logiciel dont la fonctionprincipale consiste à automatiser (ordonnancer et piloter)lensemble des actions (préprocessing, compilation,éditions des liens, etc.) contribuant, à partir de donnéessources, à la production dun ensemble logicielopé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 continueProcessus dautomatisation des tâches récurrentesliées aux développements logiciels● Lancement automatisé des constructionsen lien avec le SCM● Exécution des tests● Déploiement du livrable● Reporting sur les étapes ci-dessus● Outil le plus utilisé : Jenkins
  • 18. SCMRéférentiel unique des sources des applicationspermettant de suivre et didentifier les différentes versionsdes 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 dune seule machine(point de défaillance)○ Pouvoir travailler sans connexion○ Travailler sur un projet sans nécessiter lespermissions○ 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 debibliothèquesOutil de stockage et de gestion des dépendances entre lescomposants logiciels mis en oeuvre dans les projets● Le type doutil dépend de loutil choisi pour le build○ Maven fait au même temps la construction et leréférentiel de bibliothèques○ Avec Ant il faut utiliser Ivy pour la récuperation desbibliothèques○ Sbt utilise Ivy en interne
  • 21. QualimétrieCest une pratique automatisée ou nonvisant à évaluer la qualité du codeselon 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, SonarLe coût de correction dune erreur croîtexponentiellement avec le temps...
  • 22. Espace de communicationUn ensemble de média déchanges dinformationsvisant à faciliter laccès à la connaissance oule référencement des informations● Des solutions multiples : blogs, listes de courrier,twitter...● Une solution à privilegier : wiki○ Documentation collaborative
  • 23. TrackerPermet didentifier et de tracer les demandesdévolutions et la remontée dincident, 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 duneévolution/incident● Mettre en relation les différents acteurs
  • 24. Le mythe de la techno uniqueOu 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 davoir une technologie de référence à utiliserpour tous les projets● Approche très reductrice, on adapte le projet à loutil etnon loutil au projet● Approche dangereuse, elle nuit à linnovation etsclerose le SILe syndrome du marteau
  • 26. Mais lindustrialisation alors...Il faut choisir le bon outil pour chaque problème● Parmi une panoplie doutils qui ont été industrialisés● Ca demande plus deffort :○ 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