Skip to content

Latest commit

 

History

History
60 lines (50 loc) · 2.83 KB

7. Continuous Integration & Continuous Delivery.md

File metadata and controls

60 lines (50 loc) · 2.83 KB

Continuous Integration & Continuous Delivery

Continuous Integration

  • Automation for entire application lifecycle.
  • Allows you to detect issues & bugs early on in development lifecycle
    • It takes more time for issues to resolved when they are detected too late
    • Re-testing needs to be carried out.
    • Solution:
      • Run tests as soon as developer makes a commit to repository
      • Based on a schedule that runs e.g. every day
  • E.g.
    • Commit -> Version control --triggers--> build ---triggers--> deployed to a test environment --triggers--> test cases are automated --triggered--> final results -> build is marked as success or failure
  • Tools are important e.g. Jenkins, Atlassian Bamboo, TeamCity, Azure Pipelines
  • Multi-configuration builds
    • e.g. build app for both debug and release configurations on both x86 and x64 platforms.

Continuous Delivery

  • Compliments your continuous integration process.
  • Automates deployment of your changes after build.
  • Track of your release process quality
    • Visualizations about the quality of all the releases pipeline. e.g. adding a dashboard widget which shows the status of every release.
  • Release Notes, functional and technical documentation
    • Generate Release Notes Build Task (VSTS)
    • WIKI Updater Tasks (VSTS)
    • 💡 Treat release documentation & manuals as source-code
      • When the product changes, the documentation needs to change as well
  • Multi-configuration deployments
    • e.g. for different geographic regions.

Feature Flags

  • Allows you to separate your functional release from your technical release
  • Decide to have a feature on runtime; enable/disable a feature based on a boolean

Deployment rings

  • Gradually deploying and validating changes in production
  • Impact
    • Also called blast radius
    • evaluated through observation, testing, analysis of telemetry, and user feedback
  • E.g.:
    • Canaries* who voluntarily test bleeding edge features as soon as they are available.
    • Early adopter* who voluntarily preview releases, considered more refined than the canary bits.
    • Users who consume the products, after passing through canaries and early adopters.

Web App Deployment

  • Deployment slots
    • Allows you to create a new deployment for the web app.
    • ❗ Requires Standard or higher plan to be able to use deployment slots.
    • App content and configurations elements can be swapped between two deployment slots, including the production slot.
    • Use-cases:
      • Create staging environment easily in Web Apps
        • Validate in staging before swapping to production
      • You can apply Blue Green deployments
      • Zero downtime deployment with a auto swap
        • Allows you to ensure that all instances of the slot are warmed up before being swapped into production
        • Click on slot => App settings => Auto swap: on