Searching...
Français
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
Continuous delivery

Continuous delivery

par Jez Humble 2010 463 pages
4.20
3.3K évaluations
Écouter
Try Full Access for 7 Days
Unlock listening & more!
Continue

Points clés

1. Livraison Continue : Automatiser le Processus de Mise en Production

Lorsqu’une bonne idée émerge, comment la livrer aux utilisateurs le plus rapidement possible ?

Des livraisons rapides et fiables. La Livraison Continue regroupe un ensemble de pratiques et de principes visant à réduire le délai entre la conception d’une idée et la mise à disposition d’un logiciel fonctionnel aux utilisateurs. Elle repose sur l’automatisation des processus de compilation, de test et de déploiement afin de permettre des livraisons fréquentes et à faible risque. Cette approche nécessite une collaboration étroite entre les équipes de développement, de test et d’exploitation.

Les avantages clés :

  • Mise sur le marché accélérée des nouvelles fonctionnalités
  • Qualité logicielle améliorée grâce aux tests automatisés
  • Risques réduits lors des déploiements
  • Meilleur retour d’expérience des utilisateurs

En adoptant la Livraison Continue, les organisations atteignent un état où la mise en production devient un événement routinier et prévisible, loin du stress habituel.

2. Le Pipeline de Déploiement : Un Cadre pour des Livraisons Fiables

Chaque modification apportée à votre logiciel suit un processus complexe avant d’être mise en production.

Visualiser le processus de livraison. Le pipeline de déploiement est un modèle conceptuel qui représente l’ensemble des étapes nécessaires pour passer du contrôle de version à la production. Il offre une visibilité sur chaque phase du processus, permettant aux équipes d’identifier les goulots d’étranglement et d’optimiser leur flux de travail.

Étapes typiques d’un pipeline de déploiement :

  1. Phase de commit : compilation du code, exécution des tests unitaires
  2. Tests d’acceptation automatisés
  3. Tests manuels (exploratoires, d’ergonomie, etc.)
  4. Tests de performance et de capacité
  5. Déploiement en production

Le pipeline garantit que seul un code de haute qualité, rigoureusement testé, atteint la production, limitant ainsi les risques de bugs critiques et renforçant la fiabilité globale du logiciel.

3. Automatisation de la Compilation et du Déploiement : Des Scripts pour la Cohérence

Le processus de compilation doit être automatisé jusqu’au point où une intervention humaine spécifique est nécessaire.

Éliminer les erreurs manuelles. Automatiser les processus de compilation et de déploiement est essentiel pour assurer la cohérence et la fiabilité des livraisons. En créant des scripts dédiés, les équipes suppriment les erreurs humaines et garantissent que chaque déploiement suit un protocole testé et identique.

Aspects clés de l’automatisation :

  • Contrôle de version pour tous les scripts et configurations
  • Paramétrage adapté aux environnements spécifiques
  • Scripts de déploiement idempotents (exécutables plusieurs fois sans risque)
  • Possibilité de retour arrière automatisé

Investir dans des scripts robustes se traduit par un gain de temps, moins d’erreurs et une confiance accrue dans le processus de livraison.

4. Phase de Commit : Un Retour Rapide sur la Qualité du Code

La phase de commit vérifie que le système fonctionne techniquement.

Contrôles qualité rapides. La phase de commit est la première étape du pipeline, déclenchée à chaque fois qu’un code est soumis au contrôle de version. Son objectif principal est de fournir un retour rapide sur la santé basique du code, détectant les erreurs simples avant qu’elles ne progressent dans le pipeline.

Activités typiques de la phase de commit :

  • Compilation (pour les langages compilés)
  • Tests unitaires
  • Analyse statique du code
  • Vérification du style de code

En maintenant cette phase rapide (idéalement moins de 5 minutes), les développeurs obtiennent un retour immédiat, leur permettant de corriger les problèmes tant que le contexte est encore frais.

5. Tests d’Acceptation Automatisés : Valider les Exigences Métier

Les tests d’acceptation sont une étape cruciale du pipeline : ils vont au-delà de l’intégration continue basique.

Garantir la valeur métier. Les tests d’acceptation automatisés vérifient que le logiciel répond aux exigences métier et apporte une réelle valeur aux utilisateurs. Ils s’exécutent sur un système entièrement intégré dans un environnement proche de la production, assurant que l’application fonctionne comme prévu du point de vue de l’utilisateur final.

Avantages des tests d’acceptation automatisés :

  • Validation des exigences métier
  • Détection précoce des problèmes d’intégration
  • Documentation vivante du comportement du système
  • Accélération et fréquence accrues des livraisons

Bien que leur création et maintenance demandent un effort, les bénéfices à long terme en termes de qualité et de confiance dans les livraisons surpassent largement les coûts.

6. Intégration Continue : Détecter les Problèmes Rapidement

« Continu » signifie plus souvent que vous ne le pensez.

Intégration fréquente. L’Intégration Continue (CI) consiste à fusionner régulièrement les modifications de code dans un dépôt partagé, souvent plusieurs fois par jour. Chaque intégration déclenche un processus automatisé de compilation et de test, permettant de détecter et corriger rapidement les problèmes d’intégration.

Principes clés de l’Intégration Continue :

  • Maintenir un dépôt source unique
  • Automatiser la compilation
  • Rendre la compilation auto-testée
  • Garder la compilation rapide
  • Faciliter l’accès à la dernière version exécutable pour tous

En intégrant fréquemment, les équipes évitent le « cauchemar de l’intégration » qui survient souvent lors de fusions massives après de longues périodes de développement isolé.

7. Gestion des Environnements et des Données : Cohérence Tout au Long du Pipeline

Il doit être possible de reproduire exactement n’importe lequel de mes environnements, y compris la version du système d’exploitation, son niveau de patch, la configuration réseau, la pile logicielle, les applications déployées et leur configuration.

Parité des environnements. Maintenir des environnements cohérents tout au long du pipeline de déploiement est essentiel pour garantir des livraisons fiables. Cela inclut non seulement le code applicatif, mais aussi le système d’exploitation, les middlewares, la configuration et les données entre développement, test et production.

Stratégies pour la gestion des environnements :

  • Utiliser des outils de gestion de configuration (Puppet, Chef, etc.)
  • Versionner toutes les configurations d’environnement
  • Automatiser la mise en place des environnements
  • Recourir à la virtualisation ou à la containerisation pour la cohérence

Assurer cette parité réduit les problèmes du type « ça marche sur ma machine » et renforce la confiance que ce qui fonctionne en test fonctionnera aussi en production.

8. Tester les Exigences Non Fonctionnelles : Au-Delà des Fonctionnalités

Les exigences non fonctionnelles telles que la disponibilité, la capacité, la sécurité et la maintenabilité sont tout aussi importantes et précieuses que les exigences fonctionnelles, et elles sont essentielles au bon fonctionnement du système.

Assurance qualité globale. Tester les exigences non fonctionnelles (NFR) est indispensable pour s’assurer qu’un système fonctionne correctement, offre de bonnes performances, s’adapte à la montée en charge, reste sécurisé et facile à maintenir. Ces aspects sont souvent négligés mais cruciaux pour le succès en production.

Exigences non fonctionnelles clés à tester :

  • Performance et réactivité
  • Scalabilité et capacité
  • Sécurité et protection des données
  • Fiabilité et disponibilité
  • Maintenabilité et qualité du code

En intégrant ces tests dans le pipeline, les équipes détectent tôt les problèmes potentiels et garantissent que le système répond à toutes ses exigences opérationnelles avant la mise en production.

9. Stratégies de Livraison : Minimiser les Risques en Production

La mise en production devrait être simple. Elle l’est lorsque chaque étape du processus a été testée des centaines de fois auparavant.

Livraisons sûres et fréquentes. Adopter des stratégies de livraison efficaces permet de déployer en production avec un risque et un temps d’indisponibilité minimaux. Ces stratégies reposent sur des changements incrémentaux, un retour rapide et la capacité à revenir rapidement en arrière en cas de problème.

Stratégies de livraison efficaces :

  • Déploiements blue-green : maintenir deux environnements de production et basculer le trafic entre eux
  • Releases canari : déployer progressivement les changements à un petit groupe d’utilisateurs
  • Bascule de fonctionnalités (feature toggles) : activer ou désactiver des fonctionnalités sans redéploiement
  • Retours arrière automatisés : revenir rapidement à un état stable en cas de problème

En mettant en œuvre ces stratégies et en pratiquant des livraisons fréquentes, les équipes transforment la mise en production d’un moment stressant en une opération routinière et maîtrisée.

Dernière mise à jour:

FAQ

What's Continuous Delivery by Jez Humble about?

  • Focus on Automation: Continuous Delivery emphasizes automating the software delivery process to enable rapid, reliable, and low-risk releases.
  • Deployment Pipeline: Introduces the concept of a deployment pipeline, an automated process that takes software from version control to production.
  • Collaboration and Feedback: Highlights the importance of collaboration among developers, testers, and operations teams to improve software quality and reduce cycle times.
  • Risk Management: Discusses strategies for minimizing risks associated with deploying new software versions through automated testing and deployment.

Why should I read Continuous Delivery by Jez Humble?

  • Improve Release Processes: Offers insights into streamlining software release processes, making them more efficient and less stressful.
  • Learn Best Practices: Provides best practices for implementing continuous integration and deployment, essential for modern software development.
  • Stay Competitive: Equips readers with the knowledge to deliver software quickly and reliably, crucial for staying competitive in today's tech environment.
  • Comprehensive Framework: Presents a framework covering everything from version control to deployment strategies, valuable for software teams.

What are the key takeaways of Continuous Delivery by Jez Humble?

  • Automate Everything: Emphasizes automating the build, test, and deployment process to reduce human error and increase reliability.
  • Continuous Integration: Stresses the importance of continuous integration, where every change is automatically built and tested.
  • Feedback Loops: Advocates for fast feedback loops to identify and resolve issues quickly, involving all team members in the delivery process.
  • Incremental Changes: Encourages making small, incremental changes to keep the application in a releasable state and reduce the risk of bugs.

What is the deployment pipeline in Continuous Delivery by Jez Humble?

  • Automated Process: Describes the deployment pipeline as an automated process for getting software from version control into users' hands.
  • Stages of the Pipeline: Includes stages like commit, acceptance testing, and deployment to production-like environments, validating software readiness.
  • Visibility and Control: Provides visibility into the progress of changes, helping teams identify bottlenecks and improve collaboration.
  • Feedback Mechanism: Offers rapid feedback on the state of the application, allowing quick identification and resolution of issues.

How does Continuous Delivery by Jez Humble define continuous integration?

  • Frequent Integration: Defined as integrating code changes into a shared repository frequently, ideally multiple times a day.
  • Automated Testing: Every integration should trigger an automated build and comprehensive tests, providing immediate feedback on code quality.
  • Team Responsibility: Requires a commitment from the entire team to fix issues immediately, maintaining a high-quality codebase.
  • Facilitating Collaboration: Central to enabling collaboration among team members, ensuring a stable and releasable codebase.

What are some common release antipatterns mentioned in Continuous Delivery by Jez Humble?

  • Manual Deployments: Deploying software manually is error-prone and can lead to unpredictable outcomes; automation is recommended.
  • Late Testing: Deploying to production-like environments only after development can result in late issue discovery, making fixes harder.
  • Configuration Management Issues: Manual configuration management is problematic; automated processes ensure consistent configurations across environments.
  • Lack of Feedback: Delayed feedback loops can hinder the identification and resolution of issues, affecting software quality.

What are blue-green deployments as described in Continuous Delivery by Jez Humble?

  • Two Environments: Involves maintaining two identical production environments, blue and green, to minimize downtime during releases.
  • Deployment Strategy: New versions are deployed to the inactive environment while the active one serves users, allowing quick rollbacks.
  • Risk Reduction: Reduces risks associated with new releases by ensuring a seamless transition between environments.
  • User Impact: Minimizes user impact during deployments, providing a smoother experience.

What is canary releasing in the context of Continuous Delivery by Jez Humble?

  • Small Subset Rollout: New versions are rolled out to a small subset of users before a full deployment.
  • Real-World Testing: Allows monitoring of the new version under real-world conditions, gathering feedback before wider release.
  • Issue Identification: Helps identify issues without impacting the majority of users, reducing deployment risks.
  • Feedback Collection: Provides valuable insights into user experience and application performance.

How does Continuous Delivery by Jez Humble suggest managing infrastructure and environments?

  • Automated Provisioning: Emphasizes automated provisioning and configuration management to ensure consistent environments.
  • Tools and Consistency: Recommends tools like Puppet or Chef for managing infrastructure, catching configuration issues early.
  • Environment Reproduction: Ensures environments can be recreated easily, closely resembling production for accurate testing.
  • Risk Mitigation: Reduces risks associated with environment discrepancies, improving deployment success.

What are the best practices for automated testing in Continuous Delivery by Jez Humble?

  • Comprehensive Test Coverage: Stresses the importance of a comprehensive suite of automated tests, including unit, integration, and acceptance tests.
  • Fast Feedback Loops: Tests should run quickly, providing rapid feedback to developers and identifying issues early.
  • Continuous Testing: Advocates for continuous testing as part of the deployment pipeline, ensuring the application remains releasable.
  • Collaboration in Test Creation: Encourages collaboration among developers, testers, and users to write accurate automated acceptance tests.

How does Continuous Delivery by Jez Humble address the issue of legacy systems?

  • Incremental Refactoring: Suggests improving legacy systems through incremental refactoring rather than complete rewrites.
  • Branch by Abstraction: Introduces "branch by abstraction" to manage changes without disrupting current functionality.
  • Automated Testing: Emphasizes automated testing to ensure changes do not introduce new bugs, maintaining system integrity.
  • Risk Management: Provides strategies for managing risks associated with updating legacy systems.

How can I implement the practices from Continuous Delivery by Jez Humble in my organization?

  • Start Small: Begin with key practices like automating build and testing processes, expanding gradually.
  • Foster Collaboration: Encourage open communication and cross-functional teamwork to enhance the delivery process.
  • Measure and Adapt: Use metrics to track effectiveness, regularly reviewing and adapting processes for continuous improvement.
  • Cultural Shift: Promote a culture of shared responsibility and continuous learning among team members.

Avis

4.20 sur 5
Moyenne de 3.3K évaluations de Goodreads et Amazon.

Continuous Delivery reçoit des critiques majoritairement positives, avec une note moyenne de 4,19 sur 5. Les lecteurs saluent sa couverture exhaustive des pratiques CI/CD, bien que certains le jugent répétitif et un peu daté. Ce livre est considéré comme un ouvrage incontournable pour les développeurs logiciels et les professionnels DevOps, offrant des éclairages précieux sur l’automatisation des processus de déploiement et l’amélioration de la qualité logicielle. Certains critiques soulignent sa longueur et un manque occasionnel d’exemples concrets. Malgré sa publication en 2010, de nombreux lecteurs estiment que ses principes fondamentaux restent pertinents et applicables aux pratiques modernes de développement logiciel.

Your rating:
4.59
60 évaluations

À propos de l'auteur

Jez Humble et Dave Farley sont des experts reconnus dans le domaine du développement logiciel et de la livraison continue. Jez Humble, consultant principal chez ThoughtWorks, a accompagné de nombreuses organisations dans la mise en place et l’amélioration de leurs processus de livraison. Intervenant régulier lors de conférences, il est également l’auteur de plusieurs ouvrages consacrés au DevOps et à la livraison continue. Dave Farley, développeur logiciel indépendant, cumule plus de 25 ans d’expérience dans la conception de systèmes de livraison logicielle. Forts de leur riche expérience pratique, les deux auteurs partagent dans cet ouvrage des analyses approfondies et des bonnes pratiques incontournables en matière de livraison continue. Leur collaboration a donné naissance à un ouvrage de référence, qui a profondément influencé de nombreuses organisations et professionnels dans l’adoption de méthodes de livraison performantes.

Listen
Now playing
Continuous delivery
0:00
-0:00
Now playing
Continuous delivery
0:00
-0:00
1x
Voice
Speed
Dan
Andrew
Michelle
Lauren
1.0×
+
200 words per minute
Queue
Home
Library
Get App
Create a free account to unlock:
Recommendations: Personalized for you
Requests: Request new book summaries
Bookmarks: Save your favorite books
History: Revisit books later
Ratings: Rate books & see your ratings
100,000+ readers
Try Full Access for 7 Days
Listen, bookmark, and more
Compare Features Free Pro
📖 Read Summaries
All summaries are free to read in 40 languages
🎧 Listen to Summaries
Listen to unlimited summaries in 40 languages
❤️ Unlimited Bookmarks
Free users are limited to 4
📜 Unlimited History
Free users are limited to 4
📥 Unlimited Downloads
Free users are limited to 1
Risk-Free Timeline
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Jul 3,
cancel anytime before.
Consume 2.8x More Books
2.8x more books Listening Reading
Our users love us
100,000+ readers
"...I can 10x the number of books I can read..."
"...exceptionally accurate, engaging, and beautifully presented..."
"...better than any amazon review when I'm making a book-buying decision..."
Save 62%
Yearly
$119.88 $44.99/year
$3.75/mo
Monthly
$9.99/mo
Start a 7-Day Free Trial
7 days free, then $44.99/year. Cancel anytime.
Scanner
Find a barcode to scan

Settings
General
Widget
Loading...