Enable your Agile Team with Continuous Delivery Pipelines

Similar documents
Transcription:

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