Enable your Agile Team with Continuous Delivery Pipelines

Size: px
Start display at page:

Download "Enable your Agile Team with Continuous Delivery Pipelines"

Transcription

1 Enable your Agile Team with Continuous Delivery Pipelines Esteban Garcia Chief Nebbia Technology Microsoft Regional Director

2 Chief Technologist at Nebbia Technology ALM MVP, Azure Insider, Regional Director Pluralsight Author Orlando.NET User Group Orlando DevOps ALMGuide.com /in/estebangarcia

3 Continuous Delivery Build Release Cloud Infrastructure as Code Instrumentation Feedback

4 Technology/Products that you will see today Visual Studio Team Services Backlog Build Release ARM Templates Azure.NET Core Angular Containers Cosmos DB

5 And you can do CI/CD with many others

6

7

8 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

9 Cannot measure value only based on number of features delivered

10 An unreleased feature loses value every day that it sits on the shelf

11 Continuous Delivery Continuous Integration Continuous Testing Constant Monitoring Pipeline Analytics

12

13 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

14 Budget Time Challenges Priority Skillset Organization Buy-in

15 Measure deploys per day instead of lead time

16 How long does it take you to go from code commit to successfully running in production?

17 Shift Left

18 Enable Feedback Loops Big loops developer -> feature -> release -> backlog Small loops CI (integration and test)

19 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

20 Development practices are evolving

21 CI Verify code quality CD Automated deployment Where do we start? Instrumentation Understand usage Feedback Learn and evolve

22 DevOps lifecycle Development Operations

23 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

24 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

25 Develop + Test Once the iteration starts, developers turn great ideas into features 2 Write Code Unit Testing Version Control Build Build Verification Release

26 Continuous Integration (CI) Issues cspkg Delivery delays Non-working/low-quality code Incomplete solutions Rework Value DEV Frequent integration Higher quality Repeatability

27 Continuous Integration Automate build and test Triggered on commit Collaborate through integration Understand code quality Rapid feedback

28 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

29 CI Tools VSTS Build Jenkins TeamCity Travis CI Go CD Bamboo CircleCI

30 CI Concepts Build agent Build trigger Repository access Test results Code coverage Build outputs

31 Demo - CI

32 Test Automation Because it s not just about compiling

33 Demo Test automation

34 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

35 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

36 Release Management Build trigger Task execution Artifact store Orchestration Gates Environment definition Notifications

37 Source: Redgate

38 CD Tools VSTS Release ElectricFlow Octopus Deploy CA Release Automation IBM UrbanCode Serena Deployment

39 Demo - Release

40 Cloud Hyperscale Deploy anywhere Removes physical constraints Quickly create and tear down Easily support multiple environments

41 Infrastructure as Code Descriptive way to manage infrastructure Version controlled Key DevOps practice Enables production-like environments Repeatable

42 Infrastructure as Code options Ansible Puppet Chef Terraform ARM (Azure) Cloud Formation (AWS)

43 Demo - IaC

44 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

45 Demo - Instrumentation and Feedback

46 Practices that enable agility Source control everything Automate all things! Builds Test Infrastructure Deployments More

47 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

48 Thank you Esteban Garcia