Download presentation
Presentation is loading. Please wait.
Published byHugh Watson Modified over 8 years ago
1
ENGINEERING PRACTICES FOR CONTINUOUS DELIVERY: From Metrics and Deployment Pipelines to Integration and Microservices By Neal Ford with Tim Brown Deployment Pipeline Challenges
2
Common Challenges Slow feedback cycles Limited resources Ineffective notifications
3
Slow Feedback Cycles Frequently driven by end-to-end functional tests paired with limited infrastructure resource Consider new ways to organize test suites – fast/slow, business/subdomain, etc. Review test suites to identify usefol cases that can be executed early, with minimal integration Review application change patterns and align component pipelines and suites to frequency of change Execute test suites that failed in prior run first
4
Limited Resources Recognize that your pipeline is a production system for the creation and release of software products Review resource usage by job type and use agent resource tags for more efficient execution – Compilation – High CPU, High disk I/O – Unit tests: ‚traditional‘ – High CPU – Unit tests: with I/O – High CPU, High I/O Consider running multiple agents on multi-core nodes – Optimize agent nodes for performance, not availability Be careful on shared infrastructure, particularly storage
5
Ineffective Notifications A pipeline’s usefulness is greatly diminished if the team isn’t aware of it’s state Consider alternatives to email notifications – chat, desktop pop-ups, and big visible displays Better targeting of notifications – committers on success, team on failure
6
Growing pipeline capabilities Require all deployments to be triggered via the pipeline Use the pipeline to control as much change as possible – Configuration, monitoring, ETL processes Include all steps, including manual, in the pipeline – Leverage the pipeline for evidence gathering – Gradually replace manual processes with self-service automation Standardize on process inputs/outputs, not pipeline patterns and tools
7
Legacy Systems Frequently monolithic, even if running on multiple nodes – Likely supported by a growing number of smaller applications or services – Aggressively stub to allow supporting services to evolve faster – Consider cascading component pipelines for easier triage Few tests, or poorly written – hard to optimize – Define and enforce limits on test categories – JVM security policies, etc. Integration databases are common – Treat the database as another component, with it’s own pipeline
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.