Enable your Agile Team with Continuous Delivery Pipelines Esteban Garcia Chief Technologist @ Nebbia Technology Microsoft Regional Director
Chief Technologist at Nebbia Technology ALM MVP, Azure Insider, Regional Director Pluralsight Author Orlando.NET User Group Orlando DevOps ALMGuide.com esteban@nebbiatech.com /in/estebangarcia
Continuous Delivery Build Release Cloud Infrastructure as Code Instrumentation Feedback
Technology/Products that you will see today Visual Studio Team Services Backlog Build Release ARM Templates Azure.NET Core Angular Containers Cosmos DB
And you can do CI/CD with many others
Potentially Shippable Product PBIs delivered each sprint Focuses on velocity We forget that our product has to ACTUALLY ship Produces working code, but not necessarily operational code Leads to feature factories
Cannot measure value only based on number of features delivered
An unreleased feature loses value every day that it sits on the shelf
Continuous Delivery Continuous Integration Continuous Testing Constant Monitoring Pipeline Analytics
Why Continuous Delivery? Time to market - Reduce the cycle-time between an idea and production Enable feedback loops Increased quality Reduce risk related to long release cycles Sustainability
Budget Time Challenges Priority Skillset Organization Buy-in
Measure deploys per day instead of lead time
How long does it take you to go from code commit to successfully running in production?
Shift Left
Enable Feedback Loops Big loops developer -> feature -> release -> backlog Small loops CI (integration and test)
Peer review vs external change approval Proactive monitoring Collaboration between Dev and Ops Customers access a production system Customers get a say on your backlog Feedback in action
Development practices are evolving
CI Verify code quality CD Automated deployment Where do we start? Instrumentation Understand usage Feedback Learn and evolve
DevOps lifecycle Development Operations
DevOps drivers Prioritization of investments is not based on real-world usage patterns Troubleshooting performance and availability is often difficult Development Operations Agile methodologies speed up the development cycle Operations cannot keep up with development and release fast enough
Plan It starts with an idea and a plan how to turn this idea into reality Project starts Manage work Develop + Test 1 Track progress Plan
Develop + Test Once the iteration starts, developers turn great ideas into features 2 Write Code Unit Testing Version Control Build Build Verification Release
Continuous Integration (CI) Issues cspkg Delivery delays Non-working/low-quality code Incomplete solutions Rework Value DEV Frequent integration Higher quality Repeatability
Continuous Integration Automate build and test Triggered on commit Collaborate through integration Understand code quality Rapid feedback
What s involved? Single Source Repository Automate the build Self-testing Commit often (at least daily) Build upon commit Keep it fast Build output should be accessible Build results should be visible
CI Tools VSTS Build Jenkins TeamCity Travis CI Go CD Bamboo CircleCI
CI Concepts Build agent Build trigger Repository access Test results Code coverage Build outputs
Demo - CI
Test Automation Because it s not just about compiling
Demo Test automation
Release When all tests pass, the build is deployed to testing environments for each stage in the release process Cloud Load Testing Integration testing environment Staging environmen t 3 Monitor + Learn Automated functional testing environment Pre-production environment
Continuous Delivery (CD) a DevOps practice Issues Slow delivery cadence Limited predictability when deploying Complexity when deploying Value DEV Consistency Accelerated deployment Repeatability Human error reduction
Release Management Build trigger Task execution Artifact store Orchestration Gates Environment definition Notifications
Source: Redgate
CD Tools VSTS Release ElectricFlow Octopus Deploy CA Release Automation IBM UrbanCode Serena Deployment
Demo - Release
Cloud Hyperscale Deploy anywhere Removes physical constraints Quickly create and tear down Easily support multiple environments
Infrastructure as Code Descriptive way to manage infrastructure Version controlled Key DevOps practice Enables production-like environments Repeatable
Infrastructure as Code options Ansible Puppet Chef Terraform ARM (Azure) Cloud Formation (AWS)
Demo - IaC
Monitor + Learn Learn and understand how users use your app, how it reacts and quickly fix issues and bugs Plan the next iteration Feedback Monitor 4
Demo - Instrumentation and Feedback
Practices that enable agility Source control everything Automate all things! Builds Test Infrastructure Deployments More
New Normal Deploy as soon as a feature is done Practice deployments early and often production is no longer an event Inject quality throughout the process Engage operations early work together
Thank you Esteban Garcia esteban@nebbiatech.com