Sr. Content Developer at Microsoft, working remotely in PA, TechBash conference organizer, former Microsoft MVP, Husband, Dad and Geek.
161056 stories
·
33 followers

Kubernetes v1.37: Scheduler Preemption for In-Place Pod Resize (Alpha)

1 Share

In Kubernetes, resource allocation has historically been a static decision made during a Pod's initial scheduling and placement. With the graduation of the core in-Place Pod resize feature to General Availability in v1.35, application developers and cluster operators gained the powerful ability to dynamically adjust CPU and memory allocations of running containers without incurring disruptive restarts or application downtime.

However, in-place resizing introduced a unique resource scheduling gap: if a running Pod requested a resource scale-up that exceeded the host node's allocatable headroom, the Kubelet was forced to mark the request as Deferred. The Pod would remain parked in this state indefinitely, waiting for resources on the node to naturally free up.

To bridge this scheduling gap, Kubernetes v1.37 introduces scheduler preemption for in-place Pod resize (Alpha), behind the InPlacePodVerticalScalingSchedulerPreemption feature gate. This feature allows the Kubernetes scheduler to actively free up capacity on a fully-utilized node by preempting lower-priority workloads, enabling the pending in-place resizes of critical, higher-priority applications to succeed.

The "deferred" resize challenge

To understand why this preemption mechanism is needed, it is helpful to look at how Kubernetes handles running Pod resizing. When a user or controller (such as the Vertical Pod Autoscaler) updates the resource requests of an active container, the Kubelet evaluates whether the underlying node has enough spare allocatable capacity to fulfill the increase.

If the node's resources are fully utilized and cannot satisfy the new limits, the Kubelet sets the container's resizeStatus (reported in the Pod's status.containerStatuses[]) to Deferred. Unlike an Infeasible resize request (which is immediately rejected because it exceeds physical machine boundaries, namespace limit ranges, or admission quotas) a Deferred status indicates that the request is valid but is temporarily unable to be actuated, waiting until node capacity becomes available.

Before the introduction of this preemption mechanism, a Pod's in-place resize scale-up request could become permanently blocked if the node was heavily utilized. Even when a critical application (such as an in-memory database or a real-time web server) required more memory to prevent an imminent out-of-memory (OOM) crash, and the node lacked free capacity, the resize remained Deferred.

In this scenario, cluster administrators had limited choices:

  1. Manually evict lower-priority Pods from the node to clear resource headroom.
  2. Rely on the cluster autoscaler to eventually spin up a larger node and reschedule the Pod. However, this is an operation that is highly disruptive and violates the core "no restart" value proposition of in-place scaling.
  3. Rely on a custom autoscaling solution, for example a cluster autoscaler that can trigger dynamic node resizing operations itself.

Because the kube-scheduler was unaware of deferred resizes on running Pods, it could not leverage standard priority-based preemption to evict lower-priority workloads and make room for the higher-priority running Pod's resource growth.

Why this matters

In production Kubernetes environments, cluster administrators strive to maximize resource utilization and efficiency. A common strategy is to bin-pack unused capacity on not-yet-full nodes with lower-priority workloads, such as batch jobs, background data processing, or best-effort tasks.

Without scheduler preemption for in-place resizing, this created a major operational dilemma. If lower-priority workloads consumed the remaining headroom on a node, higher-priority applications running on that same node would become blocked (Deferred) when they needed to scale up to handle sudden traffic surges or memory spikes. Operators were forced to choose between running low-utilization clusters with idle buffer capacity or risking that critical workloads could not resize when needed.

With scheduler preemption for in-place Pod resize, you can confidently bin-pack unused space across your clusters with lower-priority workloads without worrying about them degrading higher-priority Pods or blocking their scale-up requests. If a high-priority workload requires an in-place resize that exceeds available node capacity, the scheduler automatically preempts the lower-priority Pods to clear headroom. You achieve high cluster utilization and cost efficiency while preserving the responsiveness and reliability of critical services.

Architectural mechanics: How it works

Scheduler preemption for in-place Pod resize integrates directly into the core scheduling cycle to coordinate resources dynamically and safely.

Centralized scheduler tracking

The kube-scheduler monitors the cluster for running Pods with a Deferred resize status condition. Normally, Pods with spec.nodeName populated are considered successfully placed and bypass the active scheduling queue. Under this feature gate, the scheduler intercepts Pods carrying the Deferred condition, permitting them to remain in active scheduling evaluations specifically to trigger preemption. The scheduler maintains continuous tracking of these Pods until the Kubelet successfully completes the resize actuation.

Single-node preemption boundary

Unlike placement preemption, which evaluates all nodes in a cluster to find the best scheduling fit, preemption for in-place resizing is strictly localized to the Pod's currently assigned node. The scheduler identifies eligible lower-priority "victim" Pods on the same host and initiates their graceful eviction, freeing up local capacity. Preemption is strictly scoped to the same node where the deferred Pod is running; if a node cannot accommodate the resize even after evicting all eligible lower-priority workloads, the resize remains in the Deferred state.

Resource reservation safety

To prevent scheduling races and double-allocation, the scheduler treats resources requested for a resize as already consumed. This enables the Kubelet to actuate the resize once the preemption takes effect.

Separation of concerns & critical admission

When a node is under resource pressure, the Kubelet includes a local mechanism known as the critical Pod admission handler. During initial Pod admission, if a critical system Pod arrives on a node that lacks spare capacity, this local handler can directly evict lower-priority Pods on that node to guarantee admission for the critical workload.

A significant architectural benefit of this new feature is the strict separation of concerns between the Kubelet and the scheduler. Under the InPlacePodVerticalScalingSchedulerPreemption feature gate, the Kubelet's critical Pod admission handler does not perform local preemption checks or trigger local evictions for in-place resizing operations. Instead, the Kubelet defers the request and delegates the preemption decision entirely to the scheduler. This guarantees that a single, centralized orchestrator manages all resize-related preemption logic, respecting global priorities, Pod disruption budgets (PDBs), and graceful termination policies.

Managing competing updates & races

If a competing, higher-priority resize request is submitted for another running Pod on the same node during an active preemption cycle, the Kubelet prioritizes the higher-priority request. The scheduler is designed to observe these updates and will dynamically trigger a new round of preemption if more capacity is required to fulfill the new state.

Node-level preemption configuration

Administrators and automated controllers (such as a cluster autoscaler) can disable preemption specifically for in-place resizes on particular nodes. This is configured using the new spec.podPreemptionPolicy field in the Node Spec:

apiVersion: v1
kind: Node
metadata:
 name: batch-workload-node
spec:
 podPreemptionPolicy:
 disableResizePreemption:
 - "cluster-autoscaler.kubernetes.io/disable-preemption"
 - "operator.example.com/policy-override"

An example use case for this policy is when a controller would prefer to size down other pods or dynamically adjust the node capacity itself when possible, only enabling scheduler preemption as a last resort.

Try it out!

To utilize scheduler preemption for in-place Pod resize:

  • Your cluster must be running Kubernetes v1.37 or later across both the control plane and all worker nodes.
  • The InPlacePodVerticalScalingSchedulerPreemption feature gate must be enabled across all control plane components (kube-apiserver, kube-scheduler) and the kubelet.

Mini-tutorial: Observe resize preemption in action

To see this feature in action locally, you can test scheduler preemption on a single-node kind cluster with constrained CPU headroom.

1. Create a kind cluster with scheduler resize preemption enabled

Create a kind cluster configuration file named kind-config.yaml with the InPlacePodVerticalScalingSchedulerPreemption feature gate enabled:

# kind-config.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
featureGates:
 InPlacePodVerticalScalingSchedulerPreemption: true

Create the cluster using this configuration, passing the --image flag to ensure the cluster is running Kubernetes v1.37 (or later):

kind create cluster --config kind-config.yaml --image kindest/node:v1.37.0

Note:

Make sure that the node image you specify corresponds to a Kubernetes v1.37 cluster or later (such as kindest/node:v1.37.0). Older Kubernetes releases do not support the InPlacePodVerticalScalingSchedulerPreemption feature gate.

Once your cluster is ready, inspect the node to check how many allocatable CPU cores it has:

kubectl get nodes -o custom-columns=NAME:.metadata.name,ALLOCATABLE_CPU:.status.allocatable.cpu

In a standard local kind environment, the output shows 8 allocatable CPU cores:

NAME ALLOCATABLE_CPU
kind-control-plane 8

2. Create PriorityClasses and deploy Pods

Create two PriorityClasses and deploy a low-priority Pod (requesting 3 CPU) alongside a high-priority Pod (requesting 4 CPU). Together, these workloads consume 7 of the 8 available CPU cores, leaving 1 CPU of free allocatable headroom on the node.

# preemption-demo.yaml
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
 name: high-priority
value: 1000000
globalDefault: false
description: "High priority workload"
---
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
 name: low-priority
value: 1000
globalDefault: false
description: "Low priority workload"
---
apiVersion: v1
kind: Pod
metadata:
 name: low-priority-pod
spec:
 priorityClassName: low-priority
 containers:
 - name: worker
 image: nginx
 resources:
 requests:
 cpu: "3"
 memory: "500Mi"
 limits:
 cpu: "3"
 memory: "500Mi"
---
apiVersion: v1
kind: Pod
metadata:
 name: high-priority-pod
spec:
 priorityClassName: high-priority
 containers:
 - name: app
 image: nginx
 resources:
 requests:
 cpu: "4"
 memory: "1Gi"
 limits:
 cpu: "4"
 memory: "1Gi"

Save this manifest to preemption-demo.yaml and apply it:

kubectl apply -f preemption-demo.yaml

Wait until both Pods are running on the node:

kubectl get pods

Output:

NAME READY STATUS RESTARTS AGE
high-priority-pod 1/1 Running 0 9s
low-priority-pod 1/1 Running 0 9s

3. Request an in-place scale-up

Patch the high-priority Pod to increase its CPU request from 4 to 6 (+2 CPU delta). Because only 1 CPU of headroom is free on the node, this resize request exceeds remaining allocatable capacity:

kubectl patch pod high-priority-pod --subresource resize --patch \
 '{"spec":{"containers":[{"name":"app", "resources":{"requests":{"cpu":"6"}, "limits":{"cpu":"6"}}}]}}'

4. Inspect the preemption event on the low-priority Pod

With InPlacePodVerticalScalingSchedulerPreemption enabled, the scheduler intercepts the Deferred resize condition on high-priority-pod and targets low-priority-pod for preemption.

To verify that the scheduler actively preempted the low-priority Pod, inspect its events:

kubectl get events --field-selector involvedObject.name=low-priority-pod

In the event stream (or via kubectl describe pod low-priority-pod), you will see a Preempted event emitted by the scheduler:

LAST SEEN TYPE REASON OBJECT MESSAGE
5s Normal Preempted pod/low-priority-pod Preempted by pod 97dba925-6b5f-4e2f-99f9-d51c30016586 on node kind-control-plane
5s Normal Killing pod/low-priority-pod Stopping container worker

5. Trace the resize event lifecycle on the high-priority Pod

Next, inspect the event history on high-priority-pod to observe how the resize progressed from being deferred to successfully completed:

kubectl get events --field-selector involvedObject.name=high-priority-pod

You will observe a sequence of events as the Kubelet coordinates with the scheduler:

LAST SEEN TYPE REASON OBJECT MESSAGE
33s Warning ResizeDeferred pod/high-priority-pod Pod resize OutOfcpu: {"containers":[{"name":"app","resources":{"limits":{"cpu":"6","memory":"1Gi"},"requests":{"cpu":"6","memory":"1Gi"}}}],"generation":2,"error":"Node didn't have enough resource: cpu, requested: 6000, used: 3950, capacity: 8000"}
32s Normal ResizeStarted pod/high-priority-pod Pod resize started: {"containers":[{"name":"app","resources":{"limits":{"cpu":"6","memory":"1Gi"},"requests":{"cpu":"6","memory":"1Gi"}}}],"generation":2}
32s Normal ResizeCompleted pod/high-priority-pod Pod resize completed: {"containers":[{"name":"app","resources":{"limits":{"cpu":"6","memory":"1Gi"},"requests":{"cpu":"6","memory":"1Gi"}}}],"generation":2}
  1. ResizeDeferred: The Kubelet initially marks the resize request as deferred (Warning) due to insufficient CPU headroom on the node (OutOfcpu).
  2. ResizeStarted: Once the scheduler preempts low-priority-pod and capacity is released, the Kubelet accepts the new allocation and begins actuating the resize.
  3. ResizeCompleted: The Kubelet successfully updates container cgroup limits via the container runtime without restarting the Pod.

Finally, verify that the allocated CPU on the container reflects the new request (appending {"\n"} to the JSONPath query ensures a trailing newline in your terminal):

kubectl get pod high-priority-pod -o jsonpath='{.status.containerStatuses[0].allocatedResources.cpu}{"\n"}'

Output:

6

This confirms that the in-place resize succeeded.

Getting involved

This feature represents a major step forward for resource scheduling, bringing enterprise-grade density control and workload prioritization to dynamic resource scaling. We invite cluster operators, platform architects, and developers to enable the InPlacePodVerticalScalingSchedulerPreemption feature gate in their testing environments and share feedback.

If you want to share your experience with this feature, please get in touch with the community via SIG Scheduling or SIG Node channels!

Read the whole story
alvinashcraft
47 seconds ago
reply
Pennsylvania, USA
Share this story
Delete

The Economics of Agent Optimization: How AI agent governance controls cost and proves ROI

1 Share

This blog post is the fourth and final installment of The Economics of Agent Optimization, which shares the strategies, capabilities, and proof points that can help you optimize agent costs and run AI as a managed investment system on Microsoft Foundry. The first post set out the three decisions that systems rest on, the second post took the request at runtime, and the third post took the workflow over time. This post takes the decision that never stops running: governing the spend.


AI agents are moving from isolated pilots into an enterprise estate. They work across teams, connect to data and tools, and make decisions with varying degrees of autonomy. For IT leaders, that creates a broader operating question: how do you govern a agentic system that can grow and act faster than traditional applications?

AI agent governance starts with knowing which agents exist, who owns them, what they can access, and which policies apply. It is often discussed in terms of security, compliance, and lifecycle management. It is also fundamental to cost optimization. Without consistent governance, each team makes its own choices about models, tools, capacity, and limits—and small inefficiencies multiply across every agent and every turn.

Good governance makes consumption visible, attributable, and bounded. IT needs to see which agents and teams are driving usage. Finance needs budgets and cost allocation it can trust, without discovering an unexpected increase after the invoice closes. Developers need controls that can respond at the speed agents run.

That last requirement exposes an important distinction. Traditional cost management tools can track spending and alert on actual or forecasted costs, but they typically operate on billing data rather than in the request path. An agent caught in a retry loop does not wait for the next budget evaluation.

A budget alert is a smoke detector. An agent also needs a circuit breaker. Effective cost governance therefore depends on three things: seeing the spend, bounding it, and proving the return.

See the spend where it starts

AI costs become difficult to manage when they arrive as one aggregate number. One deployment may serve several agents; one agent may use several models and tools; and one outcome may require many turns. By the time that appears on an invoice, the business context has disappeared.

Cost management capabilities in Foundry brings that context closer to the systems creating it. Teams can see estimated costs across projects, inspect cost and token usage for individual agents, and monitor model costs. These estimates support operating decisions; Microsoft Cost Management and invoiced charges remain the system of record for financial reconciliation.

Foundry also supports project-level cost attribution. Every Foundry project is automatically associated with a project tag on its underlying usage. FinOps teams can filter Cost Analysis by that tag to allocate spending to the business unit, team, or workload that incurred it. This capability is currently in preview for models sold by Microsoft Azure, including Azure OpenAI.

At the gateway, Azure API Management’s AI Gateway can emit token metrics by API, product, user, subscription, gateway, and backend. Tracing in Foundry captures tool usage, retries, latency, token consumption, and costs for an agent run.

Together, observability signals explain not only how much an agent consumed, but why:

  • Traces reveal model calls, tool invocations, retries, latency, and token usage.
  • Monitoring surfaces production trends and anomalies.
  • Evaluations measure quality, safety, groundedness, and task completion. Run continuously, they give teams evidence to test whether a smaller model still meets their quality bar rather than defaulting to the largest one. Safety evaluators can also flag issues such as prompt injection, sensitive data leakage, and harmful content before they reach production, where remediation can be costly.

Viewed together, these signals help teams understand whether rising costs are driven by customer demand, inefficient agent behavior, quality regressions, or architectural issues.

That context turns cost data into actionable governance. Before teams can set limits or measure ROI, they need to understand how agents behave in production.

Set spend limits at every layer

Visibility tells you where the money went. Limits determine whether it can keep going. There are three layers to the control system, each working at a different scope and speed:

1. Enforce limits in Foundry

With AI Gateway configured, Foundry Control Plane can enforce tokens-per-minute rate limits and total token quotas for model deployments at the project scope. A request that exceeds the rate limit receives a 429 Too Many Requests response. A caller that exhausts its token quota receives a 403 Forbidden response.

Unlike a cost alert, enforcement happens in the request path. Teams can contain one project’s consumption before it monopolizes shared capacity and establish different boundaries for different projects. Quotas can operate over hourly, daily, weekly, monthly, or yearly periods. Teams can configure the Azure API Management-backed gateway and manage its token limits through Foundry Control Plane.

2. Apply policy across models and providers

For controls spanning projects or model providers, the llm-token-limit policy limits consumption per key using a rate, a cumulative quota, or both. The key can represent a subscription, application, team, customer, workload identity, or another business boundary.

AI Gateway applies the same governance model across OpenAI-compatible APIs, the Anthropic Messages API, as well as MCP servers and agent-to-agent APIs. Backend load balancing can prioritize provisioned capacity before spilling over to pay-as-you-go deployments, while circuit breakers can temporarily stop sending requests to a failing or throttled backend.

Like any distributed limit, these controls have boundaries. Counters are maintained independently at each gateway, and concurrent requests can create a small temporary overage because final token consumption is known only after responses return. The goal is to replace unbounded consumption with a predictable operating boundary.

3. Use financial budgets for accountability and escalation

Microsoft Cost Management budgets serve a different purpose from token limits. They use Azure billing data, including actual prices, credits, and purchasing commitments, to give finance and IT an authoritative view of what the organization has spent and is forecast to spend.

Teams can set budget thresholds and notify owners when actual or forecasted costs approach them. They can also connect a budget to an Azure Monitor action group, which can invoke a customer-designed workflow such as opening a ticket, notifying an operations team, or starting a Logic App or automation runbook. Cost anomaly detection provides another warning when spending departs from its historical pattern.

These are valuable accountability and escalation tools, but they are not instant spending caps. They respond to billing data after consumption occurs. Token limits operate earlier, in the path of each model request, where they can reject new calls after a rate limit or quota is reached. Organizations need both: token limits to contain consumption as agents run, and financial budgets to keep owners accountable and prevent finance from being surprised.

Today, these two layers use different units. The platform enforces consumption in tokens, while finance plans and allocates investment in dollars. Because token prices vary by model and offer, a token quota does not translate into one stable dollar amount.

We are actively working to close that gap with future capabilities in Microsoft Foundry and the AI Gateway in Azure API Management that bring dollar-denominated budgets, finer-grained attribution, and policy-driven controls closer to where agents run.

Measure the value the agent creates

Putting a ceiling on consumption solves only half of the governance problem.

While cost controls can help organizations manage spending, they do not answer a more important question: is the agent delivering enough business value to justify that investment?

The least expensive agent is not necessarily the best investment. An agent that costs more but resolves substantially more cases may deserve additional capacity. An inexpensive agent that rarely completes its task may not. Governance therefore needs a second unit alongside tokens and dollars: business outcomes.

This is ultimately an ROI problem. Organizations want to understand whether their agents are creating more value than they cost. However, connecting business outcomes to the underlying cost of running an agent can be difficult.

ROI for agents in Foundry, currently in private preview, helps organizations connect agent costs to business outcomes. Teams define the outcomes they want to track, such as successful task completion, customer satisfaction, or case deflection. They then assign a business value to those outcomes and define how success should be measured. Foundry tracks which outcomes an agent achieves, and the model and tool costs incurred along the way, calculating:

  • Value generated: The total value attributed to successful business outcomes.
  • Total cost: The model and tool costs incurred to achieve those outcomes.
  • Net value: The value remaining after costs are subtracted.
  • ROI: The return generated relative to the investment required.

The dashboard shows daily trends and separates models from tool costs. Teams can compare agent versions using average value per conversation, pass rate, and improvement percentage. That makes optimization decisions defensible in business terms: not merely “the new version uses fewer tokens,” but “the new version produces more net value.”

The ROI feature also connects the business view to engineering evidence. Teams can inspect the lowest-ROI conversations and traces to find an oversized model, repetitive tool calls, or a workflow consuming tokens without producing meaningful outcomes. Because ROI is connected to observability data, teams can move directly from a business metric to the traces, evaluations, and operational signals that explain what is driving cost, quality, and business outcomes.

A low-ROI trace can point to a request that should be routed differently, context that should be removed, or an agent configuration that should be optimized. The same telemetry used to improve quality and efficiency can now help organizations answer the question the business ultimately asks: is this agent worth what it costs?

Run AI as one managed investment system

Together, the four posts in this series describe one optimization system operating at three speeds. At runtime, model routing, deployment choices, and caching right-size each request. Over days and weeks, context engineering, memory, tools, and agent optimization improve the workflow. Continuously, governance attributes consumption, enforces limits, and measures whether the portfolio is creating value.

The same evidence connects every layer, and answers different questions:

  1. Traces show what an agent did on a run, exposing expensive requests and inefficient context.
  2. Evaluations show whether the output was good, protecting quality as configurations change.
  3. Cost attribution shows where the money went, pointing to the project, agent, or model to intervene on.
  4. ROI shows whether the work was worth it, telling leaders whether to optimize an agent, give it more capacity, or retire it.

Cost is only one part of a much bigger governance story, and it helps to be clear about who owns which part.

  • Foundry is built for developers creating agents. It’s where developers build, test, and optimize, and Foundry Control Plane gives them an operating view of everything they’ve shipped, from cost trends and anomalies to token usage and lifecycle controls, with Azure Policy, Microsoft Defender, and Microsoft Purview woven in so compliance and security aren’t an afterthought.
  • Microsoft Agent 365 is built for the people responsible for the entire enterprise estate. IT administrators and security teams use it to discover, inventory, secure, and manage every agent in the tenant, whether it came out of Foundry, Microsoft 365, or a partner platform, and to extend the same identity, access, and data protections to agents that they already apply to people.

The FinOps capabilities we’ve covered in this series live on the Foundry side of that line, giving developers and platform teams the levers to keep spend predictable, while IT and security govern the estate around them in Agent 365.

Agent optimization isn’t about driving the cost of every request to zero. It’s about running agents with the same discipline you’d apply to any other serious investment, and that is what Foundry is built for: helping developers build and manage agents that are efficient by design, contained as they scale, and accountable for the value they create.

Get started

If you’re governing agents today, start by making their consumption visible and attributable. Identify which agents and teams are driving usage, apply request-time limits to contain unexpected consumption, and pair those controls with financial budgets and alerts. Then connect cost to business outcomes so you can decide which agents to optimize, scale, or retire.

Microsoft Foundry

The enterprise AI platform to build, ground, and govern AI apps and agents at scale.

person looking ta the laptop screen in scientific setting

Did you miss these posts in The Economics of Agent Optimization series?

The post The Economics of Agent Optimization: How AI agent governance controls cost and proves ROI appeared first on Microsoft Azure Blog.

Read the whole story
alvinashcraft
51 seconds ago
reply
Pennsylvania, USA
Share this story
Delete

The future of infrastructure resiliency starts with modernization

1 Share

Why infrastructure resiliency is essential for modern applications and AI workloads

Organizations today face constant pressure to modernize; business-critical applications are being transformed, AI workloads are becoming foundational to business operations, and infrastructure environments continue to grow in complexity. Yet modernization only succeeds when organizations have confidence that their applications, data, and infrastructure can withstand disruption and continue supporting critical operations.

As organizations adopt distributed applications, AI-powered services, and hybrid and multicloud architectures, the resiliency of their IT estate has become more than a technical consideration, it is a business requirement. Resiliency is the ability of infrastructure and workloads to withstand, adapt to, and recover from disruptions while maintaining critical business operations. Organizations need infrastructure platforms that can help reduce the impact of disruption, maintain workload availability, and support effective recovery when challenges occur.

At the same time, resiliency strategy is evolving. Historically, organizations often approached resiliency through backups, redundancy, and disaster recovery plans. While these capabilities remain essential, modern resiliency requires a broader approach that spans architecture, operations, recovery, and continuous optimization. Customers increasingly recognize that resiliency is not about preventing every disruption. It is about designing for uncertainty, minimizing operational impact, recovering effectively, and continuously strengthening readiness over time.

At Microsoft, we believe Azure IaaS resiliency is an ongoing partnership and shared responsibility that helps organizations modernize with confidence. Microsoft Azure provides the infrastructure foundation, platform capabilities, and guidance that enable customers to build resilience into workloads from the start, maintain operational continuity as environments evolve, and continuously improve recovery readiness over time.

Resilient by design

Resiliency starts long before an outage occurs.

As organizations modernize business-critical applications, cloud-native services, and AI workloads, resiliency can no longer be bolted on after deployment. The most effective resiliency strategies begin during planning and design, with architectures that align availability, recovery, performance, compliance, and operational requirements to the needs of each workload. Not every application requires the same resiliency strategy, and a one-size-fits-all approach is no longer sufficient. This is especially true for AI and business-critical workloads, where downtime, performance degradation, or data loss can have significant business consequences.

Azure helps organizations build resiliency into infrastructure from the start through availability zones, resilient networking architectures, durable storage options, recovery services, and proven guidance from the Azure Well-Architected Framework and Azure Architecture Center.

The recently announced Azure Infrastructure Resiliency Manager extends this foundation by helping organizations define resiliency goals, understand workload criticality, identify gaps, and evaluate resiliency posture at the application level. Rather than relying on manual reviews and static assessments, organizations can continuously understand how workloads align to resiliency objectives and where improvements may be needed.

To further simplify resiliency adoption, Azure Infrastructure Resiliency Manager provides recommendations, deployment guidance, and AI-assisted experiences through the resiliency agent in Azure Copilot. Teams can describe workloads, generate resilient deployment templates, assess existing environments, and receive recommendations aligned to their resiliency goals. This helps organizations embed resiliency earlier in the lifecycle and reduce the effort required to operationalize best practices.

The goal is simple: make resiliency part of how applications are designed, not something organizations revisit only after a disruption has occurred.

Innovate without interruption

Modernization is not a one-time project. Applications evolve, new services are introduced, new dependencies emerge, and infrastructure environments continuously change.

As environments evolve, resiliency must evolve with them.

One of the most common challenges organizations face is maintaining operational continuity while introducing change. New deployments, configuration drift, scaling requirements, infrastructure updates, and evolving application architectures can gradually move workloads away from their original resiliency objectives. What was resilient six months ago may no longer meet current availability or recovery requirements.

This is why resiliency is becoming a continuous operational practice rather than a one-time design exercise. Organizations increasingly need visibility into resiliency posture, the ability to prioritize remediation efforts, and mechanisms for validating whether workloads continue to meet business objectives as they grow and change. Azure Infrastructure Resiliency Manager helps organizations continuously assess resiliency posture, identify high-priority gaps, and increase uptime through recommendations, operational guidance, and application-centric resiliency management.

Azure is also embedding resiliency more deeply across the infrastructure stack, enabling the platform to respond to certain component-level disruptions while helping unaffected resources continue operating. This increasingly self-healing approach can reduce the blast radius of isolated failures and help maintain continuity as infrastructure conditions change.

Per-disk resiliency for Azure Managed Disks, now available in public preview in select regions, illustrates this approach at the storage layer. Traditionally, when a virtual machine lost connectivity to an attached managed disk for an extended period, Azure recovered the virtual machine after connectivity was restored. With per-disk resiliency enabled, Azure can temporarily take only the affected data disk offline while allowing the virtual machine and its remaining disks to continue operating. After connectivity is restored, Azure automatically reattaches the disk.

For workloads that can tolerate the temporary loss of an individual data disk, including clustered applications, workloads using auxiliary disks, and certain containerized architectures, this approach can help reduce the impact of isolated storage disruptions and allow critical workload operations to continue. It reflects a broader trend in cloud resiliency: reducing the blast radius of failures and helping organizations continue innovating even when individual infrastructure components encounter issues.

Recover with confidence

No organization can prevent every disruption.

The measure of resiliency is not whether disruption occurs. It is how effectively organizations prepare for, respond to, recover from, and learn from those events.

Historically, recovery planning was often treated as a periodic exercise. Today, leading organizations recognize that recovery readiness must be continuously validated. Recovery plans that have never been tested may not perform as expected during an actual disruption.

Azure helps organizations improve recovery readiness through integrated backup, disaster recovery, monitoring, and resiliency management capabilities. Organizations can define recovery objectives, validate failover strategies, monitor recovery performance, and continuously improve resiliency posture over time. Azure Infrastructure Resiliency Manager and Azure Chaos Studio extend this process by helping teams test recovery plans under controlled conditions, validate failover procedures, identify hidden dependencies, and measure recovery outcomes against defined objectives before a real disruption occurs.

A configuration that looks resilient on paper still has to withstand a real failure. Azure Chaos Studio helps organizations simulate outage conditions and validate how applications respond. From availability zone failures and database failovers to DNS and Microsoft Entra disruptions, teams can safely test assumptions, verify recovery procedures, and build confidence that their resiliency strategies will perform as intended. Guided drills, automated cleanup, and audit-ready reporting help transform resiliency validation into an ongoing operational practice rather than an infrequent event.

Recovery confidence also depends on protecting data and preparing for increasingly sophisticated cyber threats. Infrastructure failures are only part of the resiliency equation. Organizations must also plan for accidental deletion, data corruption, ransomware, and compromised credentials.

Azure Backup helps organizations improve recovery readiness with built-in capabilities that protect backup data, support cyber resilience, and simplify recovery. Features such as immutable vaults, soft delete, multi-user authorization, and recovery orchestration help organizations preserve clean recovery points and restore critical workloads with confidence.

When recovery involves a cyberattack rather than an infrastructure failure, trust becomes just as important as speed. Capabilities such as immutable vaults, multi-user authorization, and isolated recovery experiences help organizations identify trusted recovery points and restore operations without reintroducing compromised data or configurations.

The future of resiliency is not simply recovering faster. It is enabling organizations to build resilient foundations, operate with confidence as environments evolve, and continuously strengthen recovery readiness over time.

See Azure resiliency capabilities in action

Join Microsoft’s Azure webinar series “Minimize downtime with resilient cloud applications” episode on September 17 at 10:00 AM PT, where Azure resiliency experts will demonstrate how organizations can build resilient architectures, assess resiliency posture, validate recovery readiness, and strengthen recovery outcomes using Azure Infrastructure Resiliency Manager, Azure Backup, Azure Site Recovery, Azure Chaos Studio, and the Azure Copilot Resiliency Agent.

Minimize downtime with resilient cloud applications

Learn strategies to improve application resilience, reduce downtime, and maintain business continuity in the cloud.

Abstract 3D illustration of curved blue and teal ribbon-like surfaces covered with floating geometric shapes, including cubes, spheres, and capsule forms connected by fine lines.

The post The future of infrastructure resiliency starts with modernization appeared first on Microsoft Azure Blog.

Read the whole story
alvinashcraft
57 seconds ago
reply
Pennsylvania, USA
Share this story
Delete

Announcing Files v4.2.33

1 Share
Announcing Files Preview v4.2.33 for users of the preview version.

Read the whole story
alvinashcraft
1 minute ago
reply
Pennsylvania, USA
Share this story
Delete

SVN in the AI Era: How AI Is Changing Subversion Workflows

1 Share

AI coding tools are changing how developers write, review, test, and ship software. But if your team uses Apache Subversion (SVN), you might be wondering where that leaves you.

Much of the conversation around AI-assisted development happens in a Git-first world. That can make it seem as though adopting AI also means changing your version control system.

It doesn’t.

AI coding tools can work with code stored in SVN repositories, and emerging technologies such as the Model Context Protocol (MCP) are creating new ways for AI agents to interact with development tools and repositories.

The more useful question for SVN teams isn’t whether SVN was designed for AI. It wasn’t. Neither were most of the development tools teams rely on today.

The question is: How can you introduce useful AI capabilities into an existing SVN workflow without adding unnecessary time, cost, or risk?

In Short

AI coding tools can work with SVN. Teams do not need to migrate to Git simply to adopt AI-assisted development. AI can work with SVN code, repository history, diffs, and other context, while integration layers such as MCP can give AI agents controlled access to repository tools. The key consideration is deciding what level of access AI should have while maintaining security, governance, and human oversight.

Can AI Coding Tools Work With SVN?

Yes.

At the simplest level, an AI coding assistant can work with files in an SVN working copy just as it can work with other local project files. The source code doesn’t become inaccessible to an AI assistant because it is versioned with SVN.

Where things get more interesting is when an AI agent needs to understand or interact with the version control system itself.

For example, an AI agent might need to:

  • Inspect which files have changed
  • Review a diff
  • Look through repository history
  • Examine previous changes to a file
  • Summarize changes before a commit
  • Update a working copy
  • Perform a repository action after receiving approval

Those tasks require more than access to the files. The AI needs a way to interact with SVN.

That’s where tools and protocols such as MCP become relevant.

Why Does AI Development Feel So Git-First?

Git dominates much of modern software development, so it makes sense that many AI developer tools have built their first source control integrations around Git and Git-based platforms.

But that doesn’t mean AI itself depends on Git.

There is an important distinction between an AI coding tool and the version control integrations built around it.

An AI model can analyze or modify code regardless of whether that code ultimately lives in Git, SVN, Perforce, or another version control system. Repository-aware capabilities depend on the tools, context, and permissions available to the AI.

SVN teams have encountered this situation before.

Development tooling doesn’t always support every version control system equally from day one. CI/CD systems, code review tools, IDEs, and other parts of the development stack have all required integrations with source control.

AI is creating the next version of that integration challenge.

How Can AI Work With SVN?

It helps to think about AI access to SVN in layers.

1. Code Access

The simplest level is access to the code itself.

An AI coding assistant can analyze files in an SVN working copy and help a developer understand, write, refactor, document, or troubleshoot code.

For many AI-assisted development tasks, this may be enough.

2. Repository Context

An AI agent becomes more useful when it can understand what is happening in the repository.

For example, a developer might ask:

  • What changed in my working copy?
  • What did this file look like before the last change?
  • Which revision introduced this code?
  • What changed between these revisions?
  • Which files are currently modified?
  • Can you summarize these changes before I commit them?

Answering those questions accurately requires access to SVN information such as status, logs, history, and diffs.

3. Repository Actions

The next level goes beyond reading information.

An AI agent could potentially update a working copy, add files, revert changes, or perform other SVN operations.

Eventually, teams may also choose to allow agents to initiate commits or other higher-impact actions.

That changes the risk considerably.

An AI system reading an SVN log is very different from an AI system being allowed to modify or commit code.

So the important question isn’t simply:

Can AI access SVN?

It’s:

What should AI be allowed to do with SVN?

What Does MCP Change for SVN?

The Model Context Protocol provides a standardized way for AI applications to connect with external tools and data.

In simple terms, an MCP server can make specific capabilities available to an AI application. Instead of expecting an AI model to understand and control every external system on its own, the integration provides defined tools that the AI can use.

For an SVN environment, that creates an interesting possibility.

An SVN-aware MCP server could expose operations such as:

  • SVN status
  • Repository logs
  • Diffs
  • Repository information
  • Updates
  • Adds
  • Reverts
  • Commits

The AI agent can then use those tools when it needs repository context or needs to perform an approved action.

This changes the conversation around SVN and AI.

SVN doesn’t have to become Git for an AI agent to interact with it.

Instead, an integration layer can bring SVN capabilities to the AI.

What Could an AI-Enabled SVN Workflow Look Like?

Imagine a developer working on an established application stored in SVN.

They make changes across several files and ask their AI assistant:

“Review my changes and tell me if anything looks risky.”

With access to the working copy, the assistant can inspect the current code.

With controlled access to SVN context, it could potentially do more.

It could inspect the current diff, identify the files that changed, examine relevant repository history, compare the implementation with previous revisions, and summarize the overall change.

The developer could then ask:

“Create a summary for my commit message.”

The AI generates one based on the actual changes.

The developer reviews the code and the proposed commit message, then commits through the normal SVN workflow.

That’s a relatively conservative implementation of AI-assisted SVN.

AI does the investigation and repetitive work. The developer remains responsible for the repository action.

More autonomous workflows are possible, but more autonomy isn’t automatically better.

How Much SVN Access Should an AI Agent Have?

This may become one of the most important questions for teams introducing agentic AI into software development.

Giving an AI system access to a repository creates a spectrum of permissions.

At one end is read-only access.

The agent can inspect history, status, diffs, or other repository information but cannot alter anything.

The next level might allow an AI agent to modify files in a local working copy while requiring a developer to review and commit those changes.

At the other end, an autonomous agent might be permitted to perform write operations against the repository itself.

Each step increases what the AI can accomplish, but it also increases the potential impact of an incorrect or unintended action.

For SVN teams evaluating AI agents, familiar security principles still apply.

Use the Least Privilege Necessary

An agent that only needs repository history shouldn’t automatically receive write access.

Start with the minimum permissions required for the task.

Keep Humans Involved in High-Impact Actions

AI can automate work without necessarily controlling the entire workflow.

Code changes, commits, deletes, and other significant repository actions may warrant explicit human review or approval.

Limit Repository Scope

An agent shouldn’t automatically have access to every repository simply because it needs access to one project.

Access can be scoped around the job the agent is expected to perform.

Protect Credentials

AI integrations shouldn’t become a shortcut around existing authentication and access controls.

Repository credentials need to be treated with the same care regardless of whether the user is a developer, automation process, or AI agent.

Maintain Auditability

Teams should be able to understand what actions were performed, when they happened, and what system or user initiated them.

AI changes the interface.

It doesn’t remove the need for source code governance.

Where Can AI Save SVN Teams Time?

The biggest opportunity may not be letting an autonomous agent commit code.

It may be eliminating dozens of smaller tasks developers perform around the repository.

Consider investigating an unfamiliar section of a long-lived codebase.

A developer might inspect several files, check SVN history, compare revisions, identify previous changes, read associated tickets, and piece together why a particular implementation exists.

An AI assistant with appropriate repository context could help bring that information together faster.

The same principle can apply to:

  • Summarizing changes
  • Reviewing diffs
  • Understanding legacy code
  • Creating documentation
  • Troubleshooting problems
  • Investigating repository history
  • Preparing commit messages
  • Explaining unfamiliar code
  • Assisting with testing
  • Connecting source code context with other development tools

For teams with long-running SVN repositories, this could be particularly valuable.

Those repositories may contain years of development history and institutional knowledge.

AI creates an opportunity to make that information easier for developers to work with.

What About the Risk?

Saving time is only useful if the new workflow doesn’t create bigger problems somewhere else.

AI agents introduce a different operational model from traditional developer tools.

A developer typically makes a deliberate decision to run a command. An agent may be capable of deciding which tool to call as part of completing a broader task.

That means teams need to think carefully about where automation ends and approval begins.

A useful approach is to separate AI-assisted workflows into levels.

Read: Let AI inspect code and repository information.

Recommend: Let AI propose changes or actions.

Prepare: Let AI modify a working copy or prepare an action for review.

Execute: Allow AI to perform repository operations.

Not every organization needs to reach the final level.

In fact, some of the highest-value AI use cases may come from the first three.

The goal isn’t maximum autonomy.

The goal is to remove work that doesn’t need to consume engineering time while maintaining appropriate control over critical source code.

Do You Need to Change Version Control Systems to Adopt AI?

Not automatically.

If your current version control system no longer meets your technical or business requirements, that’s a legitimate reason to evaluate alternatives.

But adopting AI doesn’t inherently require replacing SVN.

Before considering a major infrastructure or workflow change, start with the capability you’re actually trying to add.

Do developers need an AI assistant to understand code?

Do they need AI to inspect repository history?

Do you want AI-assisted reviews?

Do agents need access to tickets or CI/CD information?

Do they need permission to perform repository actions?

Once you define the desired outcome, you can determine what integration and repository access is actually required.

That matters because changing development infrastructure has a cost.

There is the time engineers spend implementing and maintaining the change.

There is the operational risk of changing systems that may support critical development workflows.

And there is the broader cost of retraining teams, rebuilding integrations, changing automation, and maintaining new infrastructure.

The goal should be to adopt AI where it creates meaningful value—not to rebuild working systems simply because AI is the latest addition to the development stack.

What Should SVN Teams Do Now?

For most SVN teams, the sensible starting point is relatively conservative.

First, identify one or two repetitive development tasks where AI could save meaningful time.

Maybe developers regularly spend time understanding legacy code.

Maybe reviewing changes requires digging through repository history.

Maybe creating documentation or summarizing commits is repetitive.

Start there.

Then determine what context the AI actually needs.

If it only needs source files, don’t give it repository credentials.

If it needs SVN history, consider read-only repository access.

If it needs to modify code, keep the changes in the working copy and maintain human review before they reach the repository.

And measure the result.

Did developers actually save time?

Did the integration introduce additional maintenance?

Did it create new security concerns?

Did developers trust the output?

Did it make an existing workflow simpler or more complicated?

Those answers will tell you far more about the value of AI in your development environment than adopting AI simply because everyone else is doing it.

The Future of SVN in an AI World

SVN wasn’t built for AI agents.

But that doesn’t mean SVN teams are excluded from AI-assisted development.

The emerging agentic development model is increasingly about connecting AI systems to the tools, data, and workflows teams already use.

Technologies such as MCP make that model particularly interesting because they create a common way for AI applications to interact with systems that existed long before today’s generation of AI coding tools.

For SVN teams, that creates another path forward.

Instead of starting with:

“How do we replace SVN so we can use AI?”

start with:

“How can AI improve the SVN workflow we already have?”

Sometimes changing the underlying version control system will still be the right decision.

Sometimes it won’t.

What matters is making that decision based on your development requirements, engineering time, operational risk, and total cost—not on the assumption that modern development automatically requires abandoning SVN.

Bringing AI Into an Existing SVN Environment

Assembla has supported SVN alongside Git and Perforce for years because different development teams have different requirements.

For teams that continue to rely on SVN, the challenge isn’t simply keeping the repository running. It’s making sure the development environment can evolve without creating unnecessary operational work.

AI is part of that evolution.

The opportunity is to introduce AI where it can make developers more productive while maintaining the security, control, and reliability your source code requires.

And that fits a much broader principle:

Your engineering team should spend its time building products—not maintaining the infrastructure and integrations behind them.

Assembla’s SVN Cloud Hosting provides a managed environment for teams that want to keep using SVN without taking on the operational burden of hosting and maintaining the infrastructure themselves.

Explore Assembla SVN Cloud Hosting →

Frequently Asked Questions

Can AI coding assistants work with SVN?

Yes. AI coding assistants can work with files stored in an SVN working copy. More advanced repository-aware capabilities, such as examining SVN history or performing SVN operations, require appropriate tools or integrations.

Does SVN support MCP?

MCP is an integration protocol rather than a native SVN feature. An MCP server can expose SVN capabilities as tools that an AI application or agent can use.

Do I need Git to use AI coding tools?

No. AI models can work with code regardless of whether it is versioned with Git, SVN, Perforce, or another version control system. However, individual AI products may provide deeper built-in integrations with some version control systems than others.

Can an AI agent commit code to SVN?

Technically, an AI agent can be given tools capable of performing SVN write operations. Whether it should have that permission is a separate question. Teams should consider least-privilege access, human approval, credential security, repository scope, and auditability before allowing autonomous repository changes.

Is SVN still relevant in the AI era?

Yes. AI doesn’t inherently change the reasons organizations use SVN. Teams with established repositories, centralized workflows, large files, or specific governance requirements can still introduce AI-assisted development without automatically replacing their version control system.

Should we replace SVN to use AI?

Not solely because you want to adopt AI. First identify the AI capabilities your team actually needs and determine whether they can work with your existing SVN environment. A version control migration should be based on broader technical and business requirements, not simply the assumption that AI requires Git.

Read the whole story
alvinashcraft
3 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

Would You Kindly... Search Without an Index?

1 Share

I am boyter, and I’m here to ask you a question.

Is a developer not entitled to the relevance of his own query?

  • “No!” says the man in Algorithms, “It belongs to the poor… performance on cold starts.”
  • “No!” says the man in the Search Engine Temple, “It belongs to the inverted index.”
  • “No!” says the man in the Trigram Cathedral, “It belongs to the trigram postings list, pre-computed and eternal.”

I rejected those answers; instead, I chose something different.

Read the whole story
alvinashcraft
4 minutes ago
reply
Pennsylvania, USA
Share this story
Delete
Next Page of Stories