Επεξεργασία

Κοινή χρήση μέσω


DevOps considerations

This article provides considerations and recommendations for DevOps in Azure landing zones.

What is DevOps

DevOps is the union of people, processes, and technology that provides continuous value to development (dev) and operations (ops). The DevOps approach encourages team collaboration that creates repeatable processes to help organizations operate efficiently and at scale.

In the context of Azure landing zones, DevOps becomes the framework that guides your team (or teams) responsible for your entire Azure landing zones lifecycle management in areas such as:

  • How to self-organize and define boundaries with other teams to achieve the appropriate balance between autonomy and governance
  • How to continuously evolve Azure landing zone architecture design (Conway's Law)
  • How to plan, prioritize and iterate the implementation of the designed architecture
  • How to implement version control, continuous integration and continuous deployment for Azure landing zone code
  • How to operate and respond to incidents for systems and platforms you own
  • The level of automation you apply to Azure landing zone provisioning and self-healing
  • How to collaborate with other teams in your organization in an agile, outcome-oriented way
  • How to create a generative culture of security, quality, user-centricity and continuous learning

The decisions you make when reviewing cloud operating models can influence how you use your DevOps framework.

DevOps design considerations

  • Define your DevOps framework, or align it with your organizational's DevOps and cloud adoption strategy. Include the definition of DevOps and the principles and practices your team must follow. Make sure you connect your DevOps strategy to your business strategy.

  • Establish metrics that allow your team to improve their DevOps performance. High-performance teams use a hypothesis to test their ideas, measure it to see how the hypothesis works, then make changes as needed. DevOps' final intent is to improve aspects like deployment frequency, mean time to apply a change, or time to restore a degraded service. You must design all these metrics to eventually affect overall business performance.

  • Determine the DevOps practices your team should implement first based on their current skilling, and design a roadmap to incrementally apply new practices that help your team improve their DevOps metrics. Investing in engineering capabilities and resources is critical.

  • Determine the DevOps toolchain your team should use to implement the DevOps practices. Make sure that the tools are consistent with your overall DevOps strategy to avoid scenarios of heterogenous DevOps ecosystems increasing the complexity of Azure landing zone or workload deployments.

  • Evaluate the effect that your implemented DevOps practices and DevOps tools have on the design of your Azure Landing Zones.

  • Create a readiness plan to continuously grow your team's skills. Blanket application of a DevOps model doesn't instantly establish capable DevOps teams.

  • Determine the team topology that best aligns with your organization's DevOps strategy and cloud operating model, and establish clear boundaries, responsibilities and dependencies between the teams.

  • Determine how the team responsible for Azure Landing Zones should collaborate with other teams in your organization to capture new Azure Landing Zone requirements to update design and implementation, resolve incidents, minimize dependencies, and align with business priorities.

DevOps recommendations

The following sections contain recommendations to help you implement the DevOps framework within your organization.

Define your DevOps framework

To establish your DevOps framework, consider using the frameworks that are already available to start with a set of predefined proven practices:

Define DevOps practices for your Azure landing zones management

Consider the following DevOps practices for your Azure landing zones:

Plan your DevOps implementation journey

Define and align your DevOps implementation journey with your organization's cloud adoption plan.

Implement desired DevOps metrics

Identify which metrics you'll use to measure your team's DevOps performance. Use metrics to drive desired habits in your team that connect with business outcomes. Establish metrics to let your team measure impact over activities. Make key metrics visible to all, since transparency promotes trust and drives alignment with organizational objectives.

Examples of metrics that measure DevOps performance to improve business impact include:

  • Business Outcomes:

    • Use Objectives and Key Results as a tool to move your teams away from an "output" mindset and toward an "outcome" mindset. For example, you might use the number of workloads that improved their compliance rating over the number of policies deployed to Azure.
    • Customer or end user satisfaction. Examples include Net Promoter Score (NPS), surveys, interviews.
    • Business growth. Examples include increased profitability, increased revenue, and new revenue source acquirements.
    • People metrics. Examples include the Employee Net Promoter Score (eNPS), utilization, retention, and satisfaction.
    • Costs. For example, you might use reduction in costs.
  • Software delivery performance:

    • Lead Time for Change, the time it takes for a bug fix, new feature or any other change to go from idea to deployment to production.
    • Deployment Frequency, the deployments per day of code changes to production.
    • Mean Time to Restore, the time it takes to restore service in production after an incident occurs.
    • Change Fail Percentage, the percentage of changes to production (such as configuration changes) that lead to a failure.
  • Quality:

    • Defect escape rate, the number of defects identified by your end users.
    • Unplanned work or rework, the percentage of time spent doing unplanned work or rework.
    • Active bugs, the number of bugs that aren't yet fixed.
    • Code Health, the percentage of code that hasn't been unit tested.

Define your DevOps technology ecosystem

The DevOps toolchain you choose to manage the lifecycle of your Azure Landing Zones affects:

  • Your strategies for implementing DevOps principles and practices
  • Security considerations for your DevOps lifecycle
  • The overall architecture design of your Azure Landing Zones lifecycle management

Use the DevOps framework that you previously defined to identify which tools to use for each of your DevOps processes. Choose the DevOps technologies that are most suitable for your teams' needs, but find a balance that lets you achieve standardization across your organization but avoid too much complexity or heterogeneity in your DevOps ecosystems.

Examples of DevOps technologies across different DevOps stages include:

  • Planning: Atlassian Jira, Atlassian Trello, Azure Boards, GitHub
  • Continuous integration (CI) and testing: Atlassian Bitbucket, Azure Repos, GitHub Repos, npm, NuGet, Selenium, SmartBear Cucumber, SonarSource SonarQube, Zed Attack Proxy
  • Continuous delivery (CD): Atlassian Bamboo, Azure Pipelines, GitHub Actions, Jenkins, Octopus Deploy, Perforce Puppet, RedHat Ansible
    • Infrastructure as code: Bicep, Pulumi, Terraform
    • Bootstrapping: ArgoCD GitOps, Flux GitOps, Progress Chef, PowerShell Desired State Configuration (DSC)
  • Operations: Azure Automation, Azure Monitor, CISCO Splunk, Grafana, Microsoft Power BI
  • Collaboration and feedback: Atlassian Confluence, Azure DevOps Wikis, GitHub Discussions, GitHub Wikis, Microsoft Teams, Slack, Stack Overflow

The following diagram shows an example DevOps framework with Azure DevOps toolchain selection:

Diagram of DevOps framework with Azure DevOps toolchain selection.

The following diagram shows an example DevOps framework with Azure DevOps and GitHub toolchain selection:

Diagram of DevOps framework with Azure DevOps and GitHub toolchain selection.

Next step