Step-by-Step Guide to AZ-400 Designing and Implementing Microsoft DevOps Solutions
It is possible to have a working Azure DevOps pipeline and still be unable to explain whether a particular production deployment was authorized, tested, reproducible or recoverable. That is a release-control problem, not merely a YAML problem. For candidates studying AZ-400, this article uses a failed release investigation to show how source control, build provenance, environment checks, deployment gates and monitoring should be connected. It differs from a basic pipeline-building lab: the task is to reconstruct what actually ran and decide how to recover safely.
The scenario uses a fictional API with synthetic customer data and a deployment pipeline in a nonproduction subscription. A release appears successful, but some requests begin failing after promotion. The acceptance question is not “Which pipeline button is green?” It is “Which version reached which environment, who or what authorized it, what changed, which measurements establish impact and how can the team return to a known-good state?” Microsoft’s July 27, 2026 AZ-400 study guide emphasizes build and release pipelines, but the supporting source-control, security and instrumentation objectives remain relevant to that question.
Begin with a customer-visible symptom: synthetic checkout requests return intermittent errors in one region. Record the affected route, deployment time, trace identifier, environment and the first known failure. Compare it with the previous healthy release. An application log alone does not identify the source commit, infrastructure change or package used. The job is to connect runtime evidence to the deployment record without assuming that the latest commit caused the outage.
The investigation should produce a chronology: alert, traffic shift, deployment event, artifact identity, build record, reviewed source change and associated work item. Missing links are not harmless omissions. If the team cannot identify the artifact that is running, even an apparently easy rollback becomes risky because the proposed previous version may depend on data or infrastructure that has also changed.
A reliable pipeline builds a versioned, immutable artifact and promotes that exact artifact through appropriate stages. Rebuilding independently in staging and production can introduce dependency drift even when both builds begin from the same source revision. For the exercise, record the commit, build job, dependency-lock state, package digest and environment-specific configuration. Compare the deployed package identity against the tested identity and explain any discrepancy.
The Azure DevOps suite offers work tracking, source repositories, pipelines and artifacts, but a product name is not evidence of integrity. The chain must be configured. If an upstream package tag can be silently overwritten or an agent downloads unspecified dependencies, document how the pipeline detects that condition rather than treating the artifact repository as a guarantee on its own.
Suppose automated unit tests passed but a required external approval did not run. Identify where the check belongs. Repository branch protection, pipeline quality gates and deployment-environment approvals protect different events. A rule in YAML is not necessarily equivalent to a protected environment check managed outside the pipeline definition. Examine permissions to alter each control as well as the approval record created when the deployment was attempted.
For an incident review, ask four questions: Was an authorized reviewer actually required? Could the pipeline author bypass the check by editing the same repository? Did the stage deploy to the intended resource scope? Was evidence of the check retained after the run? This exposes a common failure pattern: an organization has an “approval” step in a diagram, but the identity running the job can also change the controls that step was supposed to enforce.
A deployment identity should have only the permissions required for its target resources. A pipeline with broad subscription Contributor permissions can do much more than deploy a single application; it may change networking, storage or service configuration during a failed run. Record how authentication is established, whether short-lived identity federation is supported, what resource scope the connection reaches and which environments may use it.
In the lab, remove one unnecessary deployment permission and verify that the application release still succeeds. Then try a synthetic out-of-scope operation and confirm it fails with an observable authorization result. This is stronger evidence of least privilege than merely stating that a service connection is secure. Secrets must remain outside build logs and untrusted branches, and the team should be able to rotate or disable a compromised connection without guessing which pipelines depend on it.
The application package might be easy to revert while the deployment also changed a schema, rotated a secret or updated a network rule. Those changes cannot always be undone by redeploying the prior binary. Before taking action, inventory release-affecting state: the package version, feature flags, configuration, infrastructure-as-code version, database migration and external dependency. Identify which changes are reversible and which need a forward repair.
For a controlled drill, introduce a backward-compatible schema change and separately simulate a breaking one. Measure whether the prior application version can still read the test records. The safe recovery plan might disable the feature or shift traffic rather than restoring a database snapshot that would discard valid newer writes. Capture the restoration decision and the exact invariant that proves the system recovered.
Deploying a previous artifact is an action, not evidence that customers are healthy again. Define acceptance signals before an experiment: request success rate, tail latency, dependency errors, failed synthetic transactions, and the health of the deployment’s supported regions. Compare those signals across a short canary or ring of test traffic with an agreed threshold for stopping. Ensure traces and metrics are tagged to the artifact and deployment versions under investigation.
When deciding whether to keep a progressive rollout, avoid treating one normal-looking metric as a complete answer. An aggregate success rate may hide a failure confined to a region or account cohort; synthetic health checks may pass while a database write path fails. Document the exact evidence supporting either continuation or rollback. A prepared stop condition is a stronger release control than an engineer’s confidence after briefly watching a dashboard.
Write an incident note that names the original customer symptom, timeline, verified cause or remaining uncertainty, impact boundary, remedial action and two concrete prevention changes. One prevention change might tighten artifact provenance; another might require an environment check or customer-journey canary. Avoid reflexively proposing more manual approvals if the real gap is a missing production validation that could be automated.
This is the AZ-400 exercise: receive an imperfect release, reconstruct the chain from work item to runtime, distinguish security from quality controls, and demonstrate a measured recovery. Unlike a step-by-step YAML lab, its output is a defensible decision record. If another engineer can identify the artifact, environment, permission, gate and recovery evidence without guesswork, the release process is becoming operationally trustworthy.