Enabling Continuous Delivery by Leveraging the Deployment Pipeline Jason Carter Principal (972) 689-6402 Jason.carter@parivedasolutions.com Pariveda Solutions, Inc. Dallas,TX
Table of Contents Matching Software Delivery with Business Innovation Continuous Delivery The Continuous Delivery Assessment 2 Pariveda Solutions. Confidential & Proprietary.
Traditional methods of software delivery have not kept pace with the demands a business needs to continuously innovate and stay competitive The rise of social media, mobile and cloud platforms has enabled companies to continuously interact with customers, employees and partners to create innovative new products and services Today innovation is fluid, fast paced and collaborative Software is the fuel for fast paced innovation Launch early, incorporate feedback fast and refactor Complex systems take teams; no more solitary genius Rising customer expectations and competition is driving faster product life cycles and forcing product development teams to adapt new software delivery practices Businesses must continuously deliver high quality software quickly and efficiently in order to stay competitive React quickly to market trends Build quality into the product Increase accuracy of deployments Establish tight feedback loops A process based on continuous improvement is essential to enable the rapid delivery of quality software Since the late 90 s, roughly 60% of IT projects have been challenged or failed, costing financial and political capital something has to change The first step to designing projects for success is engaging the right stakeholders, and this begins at the top with Executive Sponsorship 3 Pariveda Solutions. Confidential & Proprietary.
A software delivery revolution is underway to make the path from idea to realized value shorter and safer Evolution of software delivery System Delivery Iteration Delivery Feature Delivery Waterfall Release-ready after all functionality is developed Big design up front Substantial testing effort during last mile of project Changes are introduced in a large, big bang deployment Feedback occurs at end of project Agile Release-ready after all functionality in an iteration is developed Iterative design Testing occurs at the end of each development iteration and last mile Changes occur in batches at regular release cycles Feedback at end of iterations Continuous Delivery Release-ready at all times Minimum viable product design Testing is automated and triggered on any change made to the system Changes occur continuously, on business demand; software is always ready for release Constant feedback 4 Pariveda Solutions. Confidential & Proprietary.
Pariveda s approach to Continuous Delivery aims to deliver ideas earlier, gather feedback faster and evolve the business hypothesis Continuous Delivery Overview 1 2 3 4 5 Ideation Develop Accept Release Measure 1 Product teams innovate through lean product development and learning fast by delivering minimal viable products 2 Engineering teams frequently provide small change sets and regularly validate architecture and change management processes support effective collaboration and rapid development 3 Automated acceptance testing provides fast confidence on the production readiness of the system 4 Releases are entirely automated and fully compliant to reduce risk and cycle time 5 Tight feedback loops are established to fail fast and constantly improve 5 Pariveda Solutions. Confidential & Proprietary.
Continuous Delivery discipline requires tight collaboration and dedicated focus across the organization Business Engineering Operations Ideation Lean Product Development Re-examine assumptions Validate hypothesis Prioritize backlogs Technical debt prioritization Feature level estimation Develop Develop small change sets Minimum viable product Continuously improve and refactor Automate the repetitiveness Architecture of self-contained components Infrastructure as code across environments Automate the repetitiveness User Acceptance Testing Exploratory testing Automate acceptance testing Automate infrastructure testing Accept Automated application deployments Automated infrastructure rollouts Release Gather user feedback Analyze data from change Monitor application performance metrics Operational monitoring Support desk Measure 6 Pariveda Solutions. Confidential & Proprietary.
The benefits of moving to Continuous Delivery seem plainly obvious, however, there are significant hurdles and a big mind shift organizations face moving to this model Establish business goals Why do you want to change? What is the business driver? Hurdles to adoption Executive Sponsorship Organization Culture Change Management Architecture Tools are important but focus on people and process Recommend starting with Engineering to enable a smooth transition as others are involved Evaluate current state of software delivery and determine areas for improvement Begin with Continuous Integration and Automated Testing Establish trust with the business; prove increased stability and reduced risk Evolve business to lean product development Implement measureable change along the way even if reaching your goal takes years Many struggle to get the right engagement this impacts the ability to effectively roll out projects and obtain the benefits that justified the project. 7 Pariveda Solutions. Confidential & Proprietary.
We have developed a framework that will assess the current state of an IT organization and provide specific and actionable steps to enable Continuous Delivery Continuous Delivery Evolutionary Model Regressive Exploratory Defined Adoptive Adaptive No standard requirement, defect or release tracking tool Requirements and defects tracked ALM tracks requirements, defects and releases Product owners continuously groom backlog MVP idea, continuously iterate in production Ideation Develop No branching strategy No clear architecture/patterns Manual build process Monolithic architecture Defined branching strategy VCS used for all assets Automated builds Modular architecture Minimize branching Libraries and dependencies managed Any change triggers build Some independent components Branches used only for releases Devs check-in mainline at least once/day Builds are not left broken Component based architecture Regular validation of architecture and CM policy supports effective collaboration and rapid dev Branch by abstraction Build metrics gathered, acted on Accept Manual testing after development Promotions via rebuild from source Automated tests written as part of story development Promotion via binaries Testing is part of development process; no huge test effort on last mile Component versioning scheme Quality metrics and trends tracked Non-functional requirements defined and measured Testers write automated acceptance tests Defects found and fixed immediately Production rollbacks are extremely rare; roll forward Release Environments provisioned manually Binaries are environment-specific Manual deployment process Infrequent and unreliable releases Creating new environments is cheap All configurations are external and versioned Painful but reliable releases Limited traceability from requirements to release Environment virtualization Automated deployments to some environments Regulatory and compliance conditions met Infrastructure as code Fully automated deploy Same deploy process across all environments CM and approval process defined and enforced Ops and delivery teams regularly collaborate to reduce risk and cycle time Measure No automated alerts No defined SLAs Manual ad-hoc reporting Outage alerts Page/service level SLAs defined Static code analysis Custom reports SLA Alerting Pipeline traceability Environment and app health monitored and proactively managed Test coverage analysis Trend analysis Application dashboards QA reports on generated on build/accept steps 8 Pariveda Solutions. Confidential & Proprietary.
A comprehensive deployment pipeline should be implemented to provide fast, automated feedback on the production readiness of the system anytime there is a change Components of a Deployment Pipeline Application Lifecycle Management Source Control Management Continuous Integration Build Process Automated Testing Facilitates management of releases, requirements and defects Manages all changes to artifacts and facilitates development coordination across multiple efforts CI is triggered on any change to the system and executes steps to verify the production readiness of the system Builds are automated, compile quickly and executed with a single command Automated unit, integration and UI tests provide fast feedback the moment issues are discovered Automated Code Analysis Application Versioning Configuration Management Deploy Measure & Monitoring Code health is measured throughout the lifetime of the application and warn of potential issues with the maintainability of the application Application versioning allows for the building of rollback processes and gives flexibility in testing Change management policy supports effective collaboration, auditable change process and rapid development Operations and developers work together regularly to manage risk and reduce cycle time of delivering software Measures the impacts of change and enables rapid resolution to issues 9 Pariveda Solutions. Confidential & Proprietary.
Our deployment pipeline assessment provides a means to quickly determine opportunities to shorten cycle time from idea to go live Each component of the deployment pipeline is given a maturity score, value for improvement and level of effort Pipeline components include an assessment broken down by focus area with maturity rank, strengths, weaknesses and opportunities to improve Recommendations are provided by focus area in two types of activities Focused efforts Modify Practice 10 Pariveda Solutions. Confidential & Proprietary.