Au sein d’une démarche DevOps, le build et le déploiement continue sont les premiers piliers à mettre en place.
Cette session avancé de notre NighClazz “Build Tools & Continuous Delivery” a pour objectif de présenter les modes de déploiement "Blue-Green Deployment" et "Feature toggle" ainsi que les principes d'automatisation des schémas de base de données.
Au sein d’une démarche DevOps, le build et le déploiement continue sont les premiers piliers à mettre en place.
Cette session découverte de notre NighClazz “Build Tools & Continuous Delivery” a pour objectif de présenter les enjeux de l’automatisation, d’introduire les principaux outils de builds Java, de comprendre le mécanisme de livraison logicielle et de déploiement continue.
Docker, Pierre angulaire du continuous delivery ?Adrien Blind
This presentation explores continuous delivery principles leveraging on Docker : it depicts the use of Docker containers as universal application artifacts, delivered flowly all along a deployment pipeline.
This slideshow has been initially presented at Devops D-Day conference, Marseille.
Presentation du socle technique Java open source Scub FoundationStéphane Traumat
Scub Foundation est un ensemble de frameworks, de conventions, d'outils et de procédures qui structurent les développeurs et leurs développements. Pour simplifier, c'est une plateforme qui permet l'industrialisation des projets de développement informatique.
Plus d'informations à http://www.scub-foundation.org
Objectifs du socle
- Ne pas réinventer la roue ! (Intégration d'Eclipse et des frameworks populaires comme hibernate, spring, gwt, JUnit…).
- Avoir des modèles de projets pour chaque type de projet mais avec des structures identiques.
- Avoir des tâches automatisées pour l'ensemble du cycle de vie du projet (compilation, packaging, test…).
- Développement SOA (intégration de la notion de noyau et du découplage Interface/implémentation).
- Gestion automatique des dépendances / librairies.
- Gérer les différents environnements (Test / Développement / Pré production / Production…).
Concrètement, notre socle technique offre au développeur un environnement de développement intégrant les meilleurs éléments Open Source (Eclipse, Maven, Spring, GWT…) ainsi que des modèles de projet.
Au sein d’une démarche DevOps, le build et le déploiement continue sont les premiers piliers à mettre en place.
Cette session découverte de notre NighClazz “Build Tools & Continuous Delivery” a pour objectif de présenter les enjeux de l’automatisation, d’introduire les principaux outils de builds Java, de comprendre le mécanisme de livraison logicielle et de déploiement continue.
Docker, Pierre angulaire du continuous delivery ?Adrien Blind
This presentation explores continuous delivery principles leveraging on Docker : it depicts the use of Docker containers as universal application artifacts, delivered flowly all along a deployment pipeline.
This slideshow has been initially presented at Devops D-Day conference, Marseille.
Presentation du socle technique Java open source Scub FoundationStéphane Traumat
Scub Foundation est un ensemble de frameworks, de conventions, d'outils et de procédures qui structurent les développeurs et leurs développements. Pour simplifier, c'est une plateforme qui permet l'industrialisation des projets de développement informatique.
Plus d'informations à http://www.scub-foundation.org
Objectifs du socle
- Ne pas réinventer la roue ! (Intégration d'Eclipse et des frameworks populaires comme hibernate, spring, gwt, JUnit…).
- Avoir des modèles de projets pour chaque type de projet mais avec des structures identiques.
- Avoir des tâches automatisées pour l'ensemble du cycle de vie du projet (compilation, packaging, test…).
- Développement SOA (intégration de la notion de noyau et du découplage Interface/implémentation).
- Gestion automatique des dépendances / librairies.
- Gérer les différents environnements (Test / Développement / Pré production / Production…).
Concrètement, notre socle technique offre au développeur un environnement de développement intégrant les meilleurs éléments Open Source (Eclipse, Maven, Spring, GWT…) ainsi que des modèles de projet.
Dans un contexte d’entreprise souvent perçu comme rigide, envisager des changements techniques et organisationnels peut sembler impossible. DevOps est un bon contre-exemple car il existe des façons progressives d’introduire une telle méthodologie à plusieurs niveaux de l’entreprise. Cette session revient sur les principes de bases de DevOps (infrastructure-as-code, continuous delivery, culture de collaboration) et leur application pas-à-pas dans différents contextes.
DevOpsDays Montréal 2019 - Plusieurs changements ont eu lieu chez Croesus dans les trois dernières années. Cette étude de cas couvrent l’agilisation complet de notre compagnie et une rétrospective sur notre culture et nos pratiques DevOps. Quels ont été nos critères de succès et qu’avons-nous appris?
Présentation au Docker Meetup de Nantes le 27 juin 2017
Dans une démarche DevOps, La Poste a choisi de mettre en place l'orchestrateur de conteneur Openshift, basé sur Kubernetes. Nous détaillerons les changements opérés (techniques et humains) pour une mise en place et une adoption réussie d'un Paas. Du POC à la MEP, quelles sont les étapes ?
Conférence donnée au Docker Meetup Nantes, juin 2017
Plutôt que de parler CI d'entreprise et de rentrer dans les détails de Jenkins et du workflow typique d'un équipe de dév, pourquoi ne pas déjà aborder toutes les bonnes pratiques et méthodologies à employer pour soi-même créer un produit testé et fiable ? Bienvenue dans l'intégration continue pour tous !
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileIppon
Présentation donnée par Julien Dubois lors de Devoxx France 2012, présentant comment réaliser une application moderne avec les technologies HTML5, Spring, NoSQL (Cassandra) et mobiles.
Puppet est un outil de gestion de configuration et de déploiement. Découvrez ce fameux mouvement DevOps, et quelles sont les raisons qui font le succès de Puppet.
Support formation vidéo : Construire et administrer vos conteneurs avec DockerSmartnSkilled
Devenez opérationnel sur Docker et déployez vos applications dans des conteneurs.
Cette formation vous permet d'avoir :
Une vision générale de la technologie Docker
- Découvrir les concepts de Docker
- Présenter les services proposés autour de Docker
- Comprendre l’intégration de Docker avec son écosystème
Des connaissances techniques pour monter une infrastructure
Découvrez la formation vidéo par ici :
https://www.smartnskilled.com/tutoriel/formation-en-ligne-construire-et-administrer-vos-conteneurs-avec-docker
Jenkins Workflow plugin lets you write Jenkins jobs as pipelines using the Groovy programming language
Talk given in french at the Lyon JUG - 15/12/2015
Dans un contexte d’entreprise souvent perçu comme rigide, envisager des changements techniques et organisationnels peut sembler impossible. DevOps est un bon contre-exemple car il existe des façons progressives d’introduire une telle méthodologie à plusieurs niveaux de l’entreprise. Cette session revient sur les principes de bases de DevOps (infrastructure-as-code, continuous delivery, culture de collaboration) et leur application pas-à-pas dans différents contextes.
DevOpsDays Montréal 2019 - Plusieurs changements ont eu lieu chez Croesus dans les trois dernières années. Cette étude de cas couvrent l’agilisation complet de notre compagnie et une rétrospective sur notre culture et nos pratiques DevOps. Quels ont été nos critères de succès et qu’avons-nous appris?
Présentation au Docker Meetup de Nantes le 27 juin 2017
Dans une démarche DevOps, La Poste a choisi de mettre en place l'orchestrateur de conteneur Openshift, basé sur Kubernetes. Nous détaillerons les changements opérés (techniques et humains) pour une mise en place et une adoption réussie d'un Paas. Du POC à la MEP, quelles sont les étapes ?
Conférence donnée au Docker Meetup Nantes, juin 2017
Plutôt que de parler CI d'entreprise et de rentrer dans les détails de Jenkins et du workflow typique d'un équipe de dév, pourquoi ne pas déjà aborder toutes les bonnes pratiques et méthodologies à employer pour soi-même créer un produit testé et fiable ? Bienvenue dans l'intégration continue pour tous !
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileIppon
Présentation donnée par Julien Dubois lors de Devoxx France 2012, présentant comment réaliser une application moderne avec les technologies HTML5, Spring, NoSQL (Cassandra) et mobiles.
Puppet est un outil de gestion de configuration et de déploiement. Découvrez ce fameux mouvement DevOps, et quelles sont les raisons qui font le succès de Puppet.
Support formation vidéo : Construire et administrer vos conteneurs avec DockerSmartnSkilled
Devenez opérationnel sur Docker et déployez vos applications dans des conteneurs.
Cette formation vous permet d'avoir :
Une vision générale de la technologie Docker
- Découvrir les concepts de Docker
- Présenter les services proposés autour de Docker
- Comprendre l’intégration de Docker avec son écosystème
Des connaissances techniques pour monter une infrastructure
Découvrez la formation vidéo par ici :
https://www.smartnskilled.com/tutoriel/formation-en-ligne-construire-et-administrer-vos-conteneurs-avec-docker
Jenkins Workflow plugin lets you write Jenkins jobs as pipelines using the Groovy programming language
Talk given in french at the Lyon JUG - 15/12/2015
Optimisez la performance de votre service client tout en maîtrisant votre b...Experian
- Comment implémenter un système efficace tout en maîtrisant votre budget CRM,
- Quelles solutions mettre en place pour gagner en productivité et en qualité,
- Comment tirer parti de vos données client et de votre CRM pour maximiser votre ROI.
Le terme ‘Microservices’ fait le buzz depuis plusieurs mois déjà dans l’ingénierie logicielle. Durant cette soirée, Zenika vous propose de décrire en détail cette technique de décomposition de son système d’information.
La première partie de la soirée présente les enjeux des MicroServices et les différents cas d’utilisation.
La seconde partie aborde différents frameworks Java qui peuvent être utilisés pour la mise en place d’une architecture MicroServices.
A technical description of http2, including background of HTTP what's been problematic with it and how http2 and its features improves the web.
See the "http2 explained" document with the complete transcript and more: http://daniel.haxx.se/http2/
(Updated version to slides shown on April 13th, 2016)
HTTP2 : ce qui va changer par Julien LanduréZenika
HTTP1 est omniprésent en 2016 et HTTP2 est pourtant "sorti" le 15 mai 2015. Qu'est-ce qu'on y gagne, nous développeurs ? Les principes d'optimisation Web seront-ils toujours d'actualités ? Venez découvrir HTTP2, le futur protocole du Web !
Venez découvrir le concept de Fold !
Hérité de la programmation fonctionnelle, le Fold abstrait l'itération sur vos structures de données, et améliore l'expressivité de votre code.
Avec de vrais bouts de Java 8 et une pincée de Haskell !
I hope you already figured out the "why" question. Let me help you with the "how".
We all have this PO/PM/CFO/boss (delete where inapplicable) that will ask us about the business impact:
- Will it let us deliver the business features faster?
- Will we gain a competitive edge?
- Is it a kind of one-off task?
- How much does it cost?
We might hate to answer these "trivial" questions, but they are all valid. After all, we pick the tools to serve the purpose, not the other way around…
In this session, I would like to present the approach IDEMIA took to upgrade any critical dependencies in our platforms. There is always some risk involved, but we have tools and practices that help us mitigate the issues, measure the impact and foresee potential consequences before they happen.
Une usine logicielle est un ensemble d’outils pré-configurés, de frameworks, de conventions, de processus, de documentations et de modèles de projets qui structurent les développeurs et leurs développements.
L’objectif est d’automatiser au maximum la production et la maintenance des applications afin d’améliorer leur qualité et le « time to market ».
Qualité & Industrialisation des développements mobiles sur iOS & AndroidThibaud CAVIN
Présentation d'une usine logicielle type pour iOS & Android permettant la compilation, la mise en place de tests automatisés unitaires et fonctionnels, le déploiement à distance sur les 2 plate-formes dominantes du marché mobile actuel
Comment débuter en devops et apprendre à réaliser son premier pipeline. Très facilement et en toute simplicité.
Une formation gratuite pour s'initier au devops.
https://youtu.be/tiSfXCM8VTw
https://gitlab.com/xavki/pipeline-saison-1
Passer à Git pour une équipe qui travaille tous les jours avec CVS.
De la migration technique au choix du workflow de travail en passant par l'accompagnement nécessaire.
Nous dresserons le bilan des problèmes rencontrés ainsi que des bénéfices retirés lors de cette migration.
Présentation de Maven et de son utilisation en entreprise dans le cadre du Ch'ti JUG, le 15 juin 2009.
Pourquoi Maven ? Pourquoi l'adopter ? Les bonnes et mauvaise pratiques. Son avenir ...
Uni.sherbrooke 2015 créez la meilleur application grâce à gwt, gwtp et j...Arcbees
MEILLEURES PRATIQUES
DE DÉVELOPPEMENT
GR CE À GWT, GWTP ET JUKITO
Conference by Christian Goudreau et Christopher Viel
au Département Génie Informatique de l'université de Sherbrooke.
Christopher Viel is Software Engineer at Arcbees.
You can follow Christian on Google+ :+ChristopherVielArcbees
Christian Goudreau is BEE-EO AND CO-FOUNDER
at Arcbees.
You can follow Christian on Twitter : @imchrisgoudreau
Christian Goudreau, ArcBees’ CEO, is a self-made entrepreneur with significant experience in project management. Christian has been managing major software development projects since his early teens, and therefore has quickly learned how to juggle heavy responsibilities and deliver.
A talented guest speaker, recognized expert in software architecture and developer tools, his services are much sought-after, not only in Quebec but also in Europe and the United States, where he takes great pleasure in sharing his technical knowledge and his passion for business.
Christian Goudreau was named Young Business Person of the Year, technology & research division, at the Jeune personnalité d’affaires Banque Nationale competition organized by the Jeune chambre de commerce de Québec (JCCQ), in 2012. He was also awarded the Creativity and Innovation Prize, and the Grand Prize at the 2013 Annual LOJIQ awards (the Quebec International Youth Offices).
Similaire à NightClazz Build Tools & Continuous Delivery Avancé (20)
La Data science au service de l'IoT : l'IoT est encore un domaine émergent et de nos jours, les systèmes compris dans les solutions constructeurs (exemple : Hue, nest...) envoient des directives aux objets en se basant essentiellement sur des moteurs de règles (définies par les utilisateurs ou pas).
Nous allons voir quelles sont les limites de tels systèmes, et quels peuvent être les apports d'une approche basée sur des solutions issues du monde du machine learning.
Matinale Agile Wake Up #4 : les tests et l'agilitéZenika
La 4ème édition de l'Agile Wake Up avait pour thématique les Tests. L'équipe Kai vous a proposé de faire un tour d'horizon des différents tests réalisables dans le cadre de l'agilité.
Se concentrer sur l’expérience et non sur le livrable, tel est le pari du Lean UX. Comment cette démarche permet-elle de s’assurer, au plus vite, que ce qui est imaginé répond bien aux attentes des utilisateurs. En se basant sur les 3 principes : Lean start-up, L’esprit design et le développement Agile, il est possible de mettre en place le cycle vertueux : Observer, Apprendre et Concevoir.
Agile Wake Up #3 : La transformation Agile de Kisio DigitalZenika
Kisio Digital (ex-Canal TP) est engagé dans une transformation agile depuis de nombreux mois. Dans cette démarche, pas toujours facile, Kisio est accompagné par des consultants de Zenika (coach agile, Product Owner, Scrum Master). C'est ce quotidien dont nous allons vous parler.
Agile Wake Up #3 : la contractualisation AgileZenika
Porteuses de grandes promesses, les méthodes agiles impliquent néanmoins des droits et devoirs pour les prestataires et les directions Achats. La contractualisation agile est donc un sujet brûlant pour lequel il est nécessaire de consigner dans un cadre légal adéquat ces droits et devoirs respectifs de toutes les parties prenantes.
Après un panorama du Big Data / Data Science, nos experts font le focus sur Spark, l’un des composants de la stack SMACK.
Spark est un framework de cluster computing qui permet de faire du traitement de larges volumes de données de manière distribuée. Le modèle de programmation proposé par Spark est plus simple que celui d'Hadoop et jusqu'à 100 fois plus rapide en temps d'exécution.
Nous découvrons ensuite Zeppelin, un outil graphique simple et rapide à mettre en oeuvre se plaçant au-dessus de Spark.
Pour terminer, nous nous intéressons au Machine Learning, aujourd’hui en plein essor. Pourquoi cela ? Quels sont ses principaux domaines d'applications et ses apports ? Quelles sont les principales stratégies utilisées dans le domaine de l'analyse prédictive ? Il est temps d'y voir plus clair et de comprendre les enjeux de cette discipline !
Motivation 3.0 : sens, autonomie et maîtrise.Zenika
Les méthodes traditionnelles de management qui reposent sur la politique de « la carotte et du bâton » sont un échec. Un nouveau paradigme est né au milieu du XXe siècle grâce à Douglas McGregor, professeur de Management au MIT, qui repose sur 3 facteurs : sens, autonomie et maîtrise. Découvrez les clés de la « Motivation 3.0 », prérequis indispensable dans un contexte agile.
React est la librairie orientée composant, produite par Facebook, qui est venue bousculer le paysage JavaScript ces dernier mois. Peut-être en avez-vous entendu parler mais vous avez du mal à positionner cette librairie dans une architecture orientée Web ? Découvrez les raisons pour lesquelles React fait le buzz.
NigthClazz Spark - Machine Learning / Introduction à Spark et ZeppelinZenika
Pour ce mois de mars, nous vous proposons une thématique Big Data autour de Spark et du Machine Learning !
Nous attaquerons par une présentation d'Apache Spark 1.5 : son architecture distribuée et ses possibilités n'auront plus de secret pour vous.
Nous enchaînerons ensuite avec les fondamentaux du Machine Learning : vocabulaire (pour enfin comprendre ce que raconte les data scientists / dataminer ! ), usages et explication des algorithmes les plus populaires ... Promis la présentation ne comporte pas de formules de maths barbares ;)
Puis nous mettrons en pratique ces deux présentations en développant ensemble votre première application prédictive avec Apache Spark et Apache Zeppelin !
Pour ce mois de mars, nous vous proposons une thématique Big Data autour de Spark et du Machine Learning !
Nous attaquerons par une présentation d'Apache Spark 1.5 : son architecture distribuée et ses possibilités n'auront plus de secret pour vous.
Nous enchaînerons ensuite avec les fondamentaux du Machine Learning : vocabulaire (pour enfin comprendre ce que raconte les data scientists / dataminer ! ), usages et explication des algorithmes les plus populaires ... Promis la présentation ne comporte pas de formules de maths barbares ;)
Puis nous mettrons en pratique ces deux présentations en développant ensemble votre première application prédictive avec Apache Spark et Apache Zeppelin !
Entreprise libérée : Du mythe à la réalité ?Zenika
Présentation faite à Agile Grenoble 2015 :
Le buzz actuel autour des entreprises libérées fascine tout autant qu'il fait peur. Certains voient en ce concept le Graal du bonheur et du plaisir au travail, alors que d'autres redoutent une utopie extrémiste inventée par des gourous soixante-huitards, qui mènerait droit à l'anarchie puis à la faillite !
Je vous invite à vous éloigner de ces débats d'experts passionnés le temps d'un talk et à réfléchir ensemble, de manière pragmatique et dépassionnée, au moyen de rendre ce rêve à la fois réel et efficace.
Je vous propose pour cela de voyager dans l'histoire vraie de Zenika, la société que je participe à développer, et qui, dès sa création il y a 10 ans, bien avant la mode de l'entreprise libérée, s'est construite sur les bases de ses piliers fondateurs que sont le plaisir au travail, l'excellence et l'innovation, la croissance et la rentabilité.
Ce retour d'expérience réel, basé sur l'histoire d'une "banale SSII", illustre de manière concrète la démarche progressive mise en place, les grands succès et les petites victoires, mais aussi les problèmes rencontrés, les doutes survenus et quelques écueils à éviter.
Après avoir abordé les différentes problématiques autour d'AngularJS, du Continuous Delivery et de Java 8 :
les NightClazz sont de retours en 2015.
Zenika a hébergé le Docker Tour de France, en décembre dernier, souhaitant poursuivre notre investissement sur cette technologie nous vous proposons d'assister à la NightClazz Docker - Découverte.
Dans la continuité de la conférence Java Concurrency and Non-blocking IO Lecture animée par Heinz Kabutz, Zenika vous propose d'assister à la NightClazz Java 8 - Découverte.
Support de la présentation "Deadlock Victim" à Devoxx-fr 2012, par Heinz Kabutz (javaspecialists.eu) et Olivier Croisier (zenika.com, thecodersbreakfast.net).
Support de la présentation de Seren, librairie de sérialisation Java, à la conférence DevoxxFR.
Présentation par Olivier Croisier (zenika.com, thecodersbreakfast.net)
2. NCBuildToolsContinuousDeliveryAvanced_v2 2
Quelques mots sur nous
1) Grégory Boissinot (@gboissinot)
– Continuous Integration, Continuous Delivery and Jenkins Addict
– Zenika Paris CTO
2) Khaled Souf (@khaledsouf)
– Consultant et Formateur Zenika
– Expérienceen Intégration Continue
3) Julien Aubin
– Consultant Zenika
– Sa dernière mission DevOps
3. NCBuildToolsContinuousDeliveryAvanced_v2 3
Programme
1) Principes de l'intégration continue et du continuous delivery (rappel)
2) Modes de déploiement
– Le mode "Blue-Green Deployment"
– Le mode "Toggle Feature"
3) La gestion des dépendances dans le monde Java pour le build
– Les différents cas d'usages
– La gestion de dépendances sous maven et gradle
4) Automatisation Migration des données
– principe d'automatisation des schémas de base de données
– Pour Java et Spring, exemple d'outils : Flyway et Liquibase
– Workshop Flyway et Liquibase avec Gradle et Maven
4. NCBuildToolsContinuousDeliveryAvanced_v2 4
Plan
1) Principes de l'intégration continue et du continuous delivery (rappel)
2) Modes de déploiement
– Le mode "Blue-Green Deployment"
– Le mode "Toggle Feature"
3) La gestion des dépendances dans le monde Java pour le build
– Les différents cas d'usages
– La gestion de dépendances sous maven et gradle
4) Automatisation Migration des données
– principe d'automatisation des schémas de base de données
– Pour Java et Spring, exemple d'outils : Flyway et Liquibase
– Workshop Flyway et Liquibase avec Gradle et Maven
5. NCBuildToolsContinuousDeliveryAvanced_v2 5
L'idéal : Livrer fréquemment
Feedback
Develop
Test
Deploy
Monitor
Cycle de livraison
avec un retour rapide des utilisateurs
Dev
Ops
→ Réduction du Time-to-
Market
→ Réduction du coût de
correction des erreurs
6. NCBuildToolsContinuousDeliveryAvanced_v2 6
La livraison logicielle
(Release)
●
Avoir un processus répétable et fiable pour la livraison logicielle
– Automatiser un maximum d'éléments
– Intervention humaine pour des fonctions à hautes valeurs ajoutés
●
Test, validation et promotion (manuelle)
DEPLOY
INSTALL
RELEASE
BUILD
UNIT TESTS
TEST
VALIDATION
Processus identifié (traçabilité) et reproductible (fiabilité) Visibilité
&
Feedback
Vérification
Ensemble des étapes d'une livraison logicielle
7. NCBuildToolsContinuousDeliveryAvanced_v2 7
Continuous Integration
(CI)
●
Méthodologie agile consistant à construire et à tester le logiciel à chaque
changement de code source
SCM
Source code
Build scripts
BUILD
Compile
Unit Tests
Code analysis
Assemble
(package + installer)
Artifact
Repository
Binaries
Unit Test Reports
BuildContext
Metadata
OBJECTIF:
Garder le code source propre (clean) en détectant les erreurs de
développement au plus tôt
Créer une livraison logicielle éligible (release candidate)
8. NCBuildToolsContinuousDeliveryAvanced_v2 8
Continuous Delivery / Continuous Deployment
(CD)
●
Focaliser sur la mise à disposition et le déploiement d'un ensemble de
changements métier sur un ou plusieurs environnements
SCM
Deployment Scripts
Configuration Data
Artifact
Repository
Binaries
Artifact
Repository
Test results
metadata
DEPLOY & TEST
Configure Environment
(Provisioning)
Deploy
Test
Validate
Orchestration et gestion d'un
ensemble d'étapes
OBJECTIF:
Livrer plus rapidement de petites itérations à l'utilisateur
(extension du CI)
9. NCBuildToolsContinuousDeliveryAvanced_v2 9
Continuous Delivery et Fonctionnalités métiers
Flux constant de nouvelles fonctionnalités dans un environnement cible
Une livraison logicielle toujours prête à être utilisée par les
utilisateurs et contraintes uniquement par les besoins métiers
(non pas par les contraintes opérationnelles)
User
Equipe
Logicielle
10. NCBuildToolsContinuousDeliveryAvanced_v2 10
Continuous Delivery
Exemple de Pipelining
START
TOMCAT
Provisining
Tomcat
ACCEPTANCE
TEST
VALIDATION
INJECT
TEST DATA
Constitution d'un workflow : ensemble d'étapes
Possibilité de paralléliser certaines étapes
Objectifs: Cartographie, Visibilité, Reprise sur erreur
Exemple de Pipeline du test d'une application Web sous Tomcat
PERFORMANCE
TEST
STOP
TOMCAT
EXPLORATING
TEST
Etape
Manuelle
11. NCBuildToolsContinuousDeliveryAvanced_v2 11
Déploiement & Environnement Applicatif
TEST PRODUCTION
Automated Lifecycle
Automated
Provisioning
Plusieurs environnements possibles
Infrastructure Physique, Virtuelle ou Cloud
Chaque environnement doit être le plus proche de la production
(Gestion des configurations par environnement)
Le provisioning doit améliorer la fiabilité du déploiement
12. NCBuildToolsContinuousDeliveryAvanced_v2 12
Blue Green Deployment
●
Problématique
➢
Déploiements longs à effectuer
➢
Downtime souvent conséquent, parfois plusieurs heures
➢
Si bug majeur, souvent difficulté conséquente à faire un rollback
➢
Solution : duplication de la chaine de production
●
Principe
➢
Deux chaînes de production aussi identiques que possible
➢
L'une contient la nouvelle version du logiciel, l'autre l'ancienne
➢
Au moment du déploiement on effectue la bascule par
l'intermédiaire d'un routeur
14. NCBuildToolsContinuousDeliveryAvanced_v2 14
Blue Green Deployment - Inconvénients
●
Dédoublement du matériel
●
Plus de maintenance système à faire
●
Garder une compatibilité ascendante de la gestion de données pour pouv
faire un rollback sans douleur
15. NCBuildToolsContinuousDeliveryAvanced_v2 15
Toggle feature
●
Problématique
●
Gestion de différents ensembles de fonctionnalités pour différents utilisateurs
●
Solution classique : une branche de développement par groupe d'utilisateurs
●
Problème : intégration des différents correctifs et features communes dans
les différentes branches
●
Principe
●
Implémenter un système pour activer ou désactiver des fonctionnalités
(toggle)
●
Possibilité de faire des déploiements avec des fonctionnalités non terminées
ou non testées (désactivées)
●
Maintenance du code plus facile
18. NCBuildToolsContinuousDeliveryAvanced_v2 18
L'étape du build
dans la livraison logicielle
PackageBinariesSource
Unit Test
Analysis
Model
DEPLOY
INSTALL
LIVRAISON
TEST
VALIDATION
Build
Generate
Packaging
Quality
BUILD
UNIT TEST
19. NCBuildToolsContinuousDeliveryAvanced_v2 19
Gestion de Dépendances
●
Avez-vous besoin d'encapsuler toutes vos dépendances dans vos livrables ?
– Des dépendances existent-elles déjà sur votre serveur de déploiment ?
– Vous avez besoin de vos dépendances sous quelle forme (sources, binaires) ?
– Vous en avez besoin à quel moment ? (compilation, exécution, test )
→ Portée et type de dépendances
●
Vos dépendances ont-elles besoin de toutes leur dépendances à leur tour ?
– Avez vous vérifié que vos dépendances ne remontent pas des versions différentes d'une
même sous-dépendance ?
– Avez vous mis en place une action pour ne plus avoir ce genre de problème ?
→ Transitivité
20. NCBuildToolsContinuousDeliveryAvanced_v2 20
Portée des dépendances avec maven
●
Compile : scope par défaut inclus dans la classpath du projet et aussi propagé
pour les projets dépendants.
●
Exemples: spring-core, eclipselink ...
●
Provided: fourni par l'environnement (JDK ou Conteneur …)
●
Exemples : JDBC driver, lombok, ...
●
Runtime : requis pour l'exécution mais pas à la compilation.
●
Exemples : jcl-over-slf4j
●
Test: requis pour les tests uniquement.
●
Exemples : JUnit, AssertJ, ...
●
System : similaire à provided sauf que le chemin de la dépendance doit être
fourni.
●
Import : dépendance de type “pom”
21. NCBuildToolsContinuousDeliveryAvanced_v2 21
Transitivité des dépendances avec maven
●
Problématique : A dépend de D en version 2.0 et A dépend de B qui lui-même
dépend de D en version 1.0.
●
Aurons-nous les deux versions de D dans A ?
●
Si ce n'est pas le cas comment Maven fait-il sont choix ?
●
Pouvons-nous exclure les dépendances transitives indésirables ?
●
Solutions envisageables :
●
Maven (à partir de la version 2.0.9) joue le médiateur et fait le choix selon la
dépendance la plus proche (dans notre cas c'est la version 2.0 qui gagne)
●
Les exclusions : exclure au niveau du projet A la dépendance D du projet B.
●
Dépendance Optionnelle : marquer la dépendance D au niveau de B
comme étant une dépendance optionnelle.
23. NCBuildToolsContinuousDeliveryAvanced_v2 23
Le Plugin Dependency de Maven
●
Permet de vérifier la portée de vos dépendances
●
Permet d'afficher tout l'arbre de dépendances déclarées et non
déclarées avec leur portées respectives.
●
Permet dedétecterles conflits de dépendances.
●
Offre aussi d'autres fonctionnalités telles que la copie des dépendances
24. NCBuildToolsContinuousDeliveryAvanced_v2 24
Portée des dépendances avec Gradle
●
compile: incluses dans la classpath du projet et aussipropagées
pour les projets dépendants.
●
runtime: scope par défaut requis pour l'exécution mais pas à la
compilation.
●
testCompile: requis pour la compilation des tests.
●
testRuntime: requis pour l'exécution des tests.
Vous pouvez aussi définir votre propre scope.
26. NCBuildToolsContinuousDeliveryAvanced_v2 26
Plugin dependencies de Gradle
●
Similaire à maven dependency
●
Permet d'afficher tout l'arbre de dépendances.
●
Permet de filtrer par “task” et par module Gradle
●
Pour plus de détails on utilisedependencyInsightpour avoir des
informations sur une certaine dépendance, sa portée, ...
28. NCBuildToolsContinuousDeliveryAvanced_v2 28
Déploiement - livrables
●
Sous quel format est livrée votre application (artifact, war, jar, dossie
●
Qui préconise le format de vos livrables ?
●
Y-a-t'il des plugins qui permettent de le faire ?
30. NCBuildToolsContinuousDeliveryAvanced_v2 30
Flyway
●
Framework de migration de bases de données
http://www.flywaydb.org
●
Migrations incrémentales (i.e. de V2 vers V5 par exemple)
●
Validation des versions de scripts avant lancement.
●
Supporte les scripts SQL pour des migrations simples ou Java pour d
migrations plus complexes
●
Ne couvre que les SGBD SQL
●
Extensible
31. NCBuildToolsContinuousDeliveryAvanced_v2 31
Flyway - Avantages
●
Analyse l'état de la base pour faire sa mise à jour (à partir d'un champ
de version), et pas de mise à jour à partir de données stockées en
dehors de la base.
●
Possibilité de migrer d'un coup un grand nombre de serveurs de
manière automatisée.
●
Très facile à invoquer, et de différentes manières (Maven, Spring, …)
●
Possibilité de tester les scripts avec des tests d'intégration (avec flyw
extensions)
32. NCBuildToolsContinuousDeliveryAvanced_v2 32
Flyway- Inconvénients
●
Nécessite un haut niveau de confiance dans les scripts de migration
●
Obligation de faire des dry-runs sur des données de production avant
de faire pour de bon les modifications (problème de récupération des
données)
●
Pas possible de mixer migrations via Flyway et migrations sans Flywa
(ou alors il faut penser à mettre à jour le champ de version de Flyway
●
Pas possible de revenir à une version antérieure de la base (mais il y
une bonne raison pour ça : cf. les DROP de requêtes et autres, cf. la
FAQ de Flyway)
●
Pas d'abstraction des scripts SQL par rapport au SGBD.
34. NCBuildToolsContinuousDeliveryAvanced_v2 34
Liquibase
●
Framework de migration de bases de données
●
http://www.liquibase.org/
●
Les changements sont sous forme de fichier XML sauf que la migratio
elle même peut être faite en SQL, YAML, XML …
●
Un seul fichier est maintenu en entrée
●
Les versions concernent les “changes set”
●
Possibilitéde fournir un rollback pour chaque “change set”.
35. NCBuildToolsContinuousDeliveryAvanced_v2 35
Liquibase - Avantages
●
Fait abstraction du SGBD (dans le cas d'utilisation d'une migration
autre que SQL)
●
Possibilitéde revenir sur une version antérieure (sous réserve de
fournir le script rollback correspondant).
●
Très facile à invoquer, et de différentes manières (Maven, Spring, ...)
36. NCBuildToolsContinuousDeliveryAvanced_v2 36
Liquibase - Inconvénients
●
Ne se limite qu'à des opérations basiques au niveau des SGBD (pas
procédure stockée, de trigger ou même de package PL/SQL)
●
Utilisation fastidieuse du XML demandant certains concepts de
Liquibase pour faire un script de migration