MLOps
ML Platform Engineering, Self-Service, and Multi-Tenancy
Design platform capabilities, paved roads, tenancy boundaries, extensibility, governance, and adoption for multiple ML teams.
By the end you can
- Separate reusable platform capabilities from product and domain responsibilities
- Design self-service interfaces with safe defaults, escape hatches, and ownership
- Control multi-tenant isolation, quota, cost attribution, and noisy-neighbor risk
- Measure platform success through adoption, lead time, reliability, and user outcomes
Example
The self-service portal provisions an unsafe default
One convenience link, published so that other people could use a model, handed out an entire storage account.
- Convenient default: Microsoft AI researchers published a SAS token in robust-models-transfer, a public Microsoft GitHub repository, so that others could fetch their model files. The token was scoped to the entire Azure storage account rather than to the model files. Wiz Research and the Microsoft Security Response Center disclosed the exposure on 18 September 2023.
- Missing context: No field on the sharing mechanism asked what else lived in the account, and a second mistake rode along with the first. Hillai Ben-Sasson and Ronny Greenberg of Wiz Research wrote on 18 September 2023: “In addition to the overly permissive access scope, the token was also misconfigured to allow “full control” permissions instead of read-only.” Scope was one field. Permission was another. Both were wrong in the same link.
- Fast deployment: The link reached 38TB of data, including over 30,000 internal Microsoft Teams messages from 359 employees. Nothing had to be deployed for that scope to exist. Publishing the link was the whole action.
- Platform illusion: Nothing about the link was unofficial. It came from a Microsoft repository, it worked, and it did exactly what its permissions said. Microsoft concluded that no customer data was exposed — a statement about what happened to be sitting in that account, not about what the token permitted.
- Repair: Wiz reported it to MSRC on 22 June 2023, and Microsoft revoked the token two days later, on 24 June 2023. Microsoft's own account of the incident describes the SAS secret-scanning changes it made afterwards. Encode risk-aware templates, least-privilege defaults, ownership, and required evidence by workload class. Scope and permission are two fields a platform can refuse to leave open.
A platform can standardize the wrong thing at scale
A central team builds one pipeline template for every model. Teams take it up at first, then fork it because time-series splits, streaming features, and human review do not fit the abstraction.
Platform engineering should remove repeated operational work while preserving the domain choices that determine evidence and risk. A paved road is valuable when it is easy to use, observable, and possible to leave deliberately.
Tenancy is where a shared platform earns or loses trust, and the documentation for shared clusters begins with quotas. The Kubernetes multi-tenancy documentation states that “By mapping tenants to namespaces, cluster admins can use quotas to ensure that a tenant cannot monopolize a cluster’s resources or overwhelm its control plane”, and that limits on object count “ensure fairness and aim to avoid noisy neighbor issues from affecting other tenants that share a control plane”. Google's best-practice guide for enterprise multi-tenancy on Kubernetes Engine gives the same two controls in the same order: “To provide a logical isolation between tenants that are on the same cluster, implement namespaces”, then “To ensure all tenants that share a cluster have fair access to the cluster resources, enforce resource quotas”.
Quotas decide how much of a cluster a tenant may take. They say nothing about what a tenant may reach. An ML platform can hold the first while losing the second.
On 4 April 2024 Wiz Research and Hugging Face jointly disclosed one such loss. A malicious pickle-serialised model, uploaded to the Hugging Face Inference API, allowed container escape and cross-tenant access to other customers' models on the shared inference infrastructure. Shir Tamari and Sagi Tzadik described the route in Wiz's write-up that day: “Wiz Research was able to compromise the service running the custom models by uploading our own malicious model and leveraging container escape techniques to break out from our tenant and compromise the entire service.” Hugging Face confirmed in its own post the same day that Wiz “identified shortcomings of our sandboxed compute environments by running arbitrary code within the system thanks to pickle”, and said all issues related to the exploit were resolved.
The upload was not an attack on the platform's edges. It was the platform's advertised function — run the model a user brings — carried one step further than the sandbox could hold.
The platform is a product with internal users
Teams adopt platforms when they reduce time, cognitive load, and operational risk better than local alternatives. A mandate can leave teams adopting the platform in name only, while they bypass its controls through notebooks, side systems, or copied credentials.
Treat product teams as users: research workflows, onboarding, documentation, support, service objectives, deprecation, and feedback all matter.
DORA's 2019 report gives a platform the four numbers it should move. They are deployment frequency, lead time for changes, time to restore service, and change failure rate. Nothing about tooling appears in that list. The report finds that “elite performers deploy code 208 times more frequently than low performers”, that “the elite group has 106 times faster change lead times than low performers”, and that “elites have 2,604 times faster time to restore service than low performers”. The last two get swapped in retellings. The large multiplier belongs to recovery.
Five years later the same research programme measured the platforms themselves. DORA's 2024 report, released on 22 October 2024 with nearly 3,000 respondents, is the first to quantify internal developer platforms. Of those respondents, 89% were using one. Platform users showed 8% higher individual productivity, 10% higher team performance and 6% higher organizational performance, with developer independence adding a further 5% at both individual and team level.
Then the platform engineering chapter gives the other half of the result: “However, these gains do not come without some drawbacks. Throughput and change stability saw decreases of 8% and 14%, respectively, which was a surprising result.” The report links that instability to higher burnout. A platform can make its users feel faster while the two delivery metrics move the other way. That is why the second pair of numbers belongs on the platform dashboard beside the first. A satisfaction survey on its own is not evidence of a working platform.
Figure
Visual
A layered ML platform
The platform should expose stable capabilities without absorbing every domain decision.
The foundational layer is not a given. It has version numbers. NVIDIA's record for CVE-2024-0132, published on 26 September 2024, reads: “NVIDIA Container Toolkit 1.16.1 or earlier contains a Time-of-check Time-of-Use (TOCTOU) vulnerability when used with default configuration where a specifically crafted container image may gain access to the host file system.” It covers NVIDIA Container Toolkit v1.16.1 and earlier and GPU Operator up to 24.6.1. NVIDIA scored it CVSS 3.1 base 9.0 CRITICAL, vector AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H; NVD's own analysis of the same flaw scored it 8.3 HIGH. Wiz, which found it, estimated that the affected toolkit was present in over 35% of cloud environments.
Every layer drawn above the first one assumes a container boundary. That boundary is itself a patchable, versioned platform capability — with a default configuration, an affected range, and a number that somebody on the platform team owns.
- 01
Foundational infrastructure
Identity, networking, compute, storage, secrets, and policy enforcement.
- 02
Shared ML capabilities
Pipelines, tracking, registries, serving, observability, and evaluation hooks.
- 03
Paved-road workflows
Opinionated templates for common batch, online, and retraining patterns.
- 04
Domain extensions
Feature logic, labels, metrics, review policy, and specialized runtime needs.
- 05
Product ownership
Intended use, outcomes, harms, release decision, and retirement.
Comparison
Standardization and centralization are not the same
A platform can provide common contracts without owning every implementation.
Spotify's paved road has a date, an origin story and a stated exit. A fragmented tooling ecosystem had produced what Spotify called “rumour-driven development”, and eight engineers built the first “Golden Path” tutorial during a Hack Week. Gary Niemen, a product manager there, described both in a post of 17 August 2020. The Golden Path has since been extended to client development, data engineering, data science, machine learning, web and audio processing, and is in Niemen's words “the 'opinionated and supported' path to 'build something'”.
What separates it from a mandate is written down by the operator: “If you are an adventurer you can of course leave the Golden Path and do your own thing, but then you will not have the same support.” The exit is named, and its price is support rather than permission.
DORA's 2024 report names Spotify among the industry leaders that popularised the practice, and defines golden paths as “highly-automated, self-service workflows that users of the platform use when interacting with resources required to deliver and operate applications”. That is the middle column of this comparison: an opinionated implementation, maintained, with a documented way out. It is not a standard interface, which fixes inputs and outputs and admits several implementations. It is not a mandate either, which fixes the implementation and pushes the mismatch into workarounds nobody records.
Standard interface
Defines stable inputs, outputs, evidence, and lifecycle behavior.
- Enables interoperability
- Supports multiple implementations
- Reduces integration cost
- Example: common deployment manifest
Paved road
Provides an opinionated implementation for common needs.
- Fast onboarding
- Safe defaults
- Maintained by platform team
- Needs explicit escape hatch
Central mandate
Requires one implementation regardless of workload fit.
- Simplifies governance superficially
- Creates hidden workarounds
- Can block specialized needs
- Often transfers rather than removes complexity
Steps
Design a platform capability
Begin with repeated user work and a measurable service promise.
Measure the promise in both directions. DORA's 2024 report found platform users reporting 8% higher individual productivity and 10% higher team performance. In the same report, throughput fell 8% and change stability fell 14%. A platform review that collects only the first pair of numbers will keep reporting success through the period in which delivery gets worse.
1. Study the user journey
Observe how teams build, validate, release, debug, and retire systems.
2. Define the capability contract
Inputs, outputs, evidence, ownership, SLO, and supported workload classes.
3. Build safe defaults
Least privilege, versioning, observability, rollback, cost visibility, and policy.
4. Provide extension and exit
Document plugins, escape review, portability, and deprecation.
5. Measure product outcomes
Adoption quality, lead time, incident rate, toil, satisfaction, and avoided duplication.
Key idea
Escape hatches need governance too
A platform without escape hatches blocks legitimate workloads. An unrestricted escape hatch creates a parallel ungoverned ecosystem. So define review, ownership, integration contracts, support limits, and a path to contribute reusable capabilities back.
Track why teams leave the paved road. Repeated exceptions are product research for the platform.
SAP AI Core is the case where the extension point was the product. Running a paying customer's own training code is what the service is for. Hillai Ben-Sasson of Wiz Research stated the consequence in the SAPwned disclosure of 17 July 2024: “Similar to other cloud providers (and AI infrastructure providers), the customer’s code runs within SAP’s shared environment – posing a risk of cross-tenant access.”
Wiz reported five vulnerabilities in the service. Through them an ordinary training job — arbitrary code the platform is designed to run — could be escalated to cluster-administrator privileges on the AI Core Kubernetes cluster, and from there to other customers' private AI artifacts and to their AWS, Azure and SAP HANA Cloud credentials. The chain ran through shareProcessNamespace and runAsUser 1337, which let the job inherit the Istio sidecar's network rules. SAP was notified on 25 January 2024 and had fixed all five by 15 May 2024, with no SAP Security Note required because the fixes were cloud-side. Onapsis, an SAP security research firm, confirmed the same user-ID and Istio-1337 mechanism and the cloud-side remediation independently.
An extension point that executes code you did not write needs the isolation budget of a cloud provider, not the review checklist of an internal exception.
An escape hatch is a controlled extension point, not an exemption from operational responsibility.
The platform should make evidence cheaper than bypass
Teams will choose the shortest path to delivery. The platform's safe path must be easier than building untracked scripts, while still allowing honest domain variation. That is what the Golden Path buys with the word supported and gives back with the adventurer's exit.
A successful platform reduces repeated engineering and increases visibility without claiming ownership of the model's intended use or product harm. It is worth noticing that none of the four incidents in this lesson involved a team refusing the platform. A link published from Microsoft's own repository, a model uploaded to the Hugging Face Inference API, a training job running on SAP AI Core, and the default configuration of the NVIDIA Container Toolkit were all the supported path, used as designed. Evidence has to be cheaper than bypass. And the supported path has to be safe on the days when nobody bypasses it.
Position
Buying the platform does not buy the practice
A budget can settle the tooling question inside a quarter, so that is the question a team settles first. DORA's 2019 report measured software delivery performance on four numbers: deployment frequency, lead time for changes, time to restore service, and change failure rate. Not one of them names a tool. In that report the elite group deployed 208 times more frequently than the low performers, had change lead times 106 times faster, and restored service 2,604 times faster. The largest of those three multipliers belongs to recovery rather than to shipping. The bands describe two groups in one year's report. They are not a law about engineering, and they are not an inventory of what anybody had installed.
By 2024 almost everybody had installed something. Of the nearly 3,000 respondents to that year's report, released on 22 October 2024, 89% were using an internal developer platform. The platform engineering chapter records the gains — 8% higher individual productivity, 10% higher team performance, 6% higher organizational performance — and then the rest of the finding: “However, these gains do not come without some drawbacks. Throughput and change stability saw decreases of 8% and 14%, respectively, which was a surprising result.” Adoption was near universal and the two delivery metrics still moved the wrong way, with the report linking that instability to higher burnout. Whatever a platform is, it is not by itself the practice.
The Microsoft incident is what a mechanism without a practice looks like from the inside. One convenience link, published in the public repository robust-models-transfer to make model files easy to fetch, was scoped to the whole Azure storage account and set to “full control” instead of read-only. It reached 38TB, including over 30,000 internal Microsoft Teams messages from 359 employees. Wiz reported it on 22 June 2023 and the token was revoked on 24 June. Nothing there was a shadow system. Everything went through official infrastructure, and nobody reviewed the two fields that mattered — centralisation mistaken for governance.
A central mandate can carry the same defect in a larger size. It simplifies governance superficially while creating hidden workarounds, because teams take the shortest path to delivery and will keep taking it after the mandate is announced. Making the evidence cheaper than the bypass is the work. No procurement decision performs it on a team's behalf.
A platform can be installed in a quarter. The discipline it was built to support does not arrive with it.
Key takeaways
- Platform engineering should standardize repeated operational work, not domain judgment. The four numbers DORA measured in 2019 — deployment frequency, lead time for changes, time to restore service, change failure rate — name no tool.
- A paved road succeeds through usefulness, safe defaults, and observable support. Spotify's Golden Path, described by Gary Niemen on 17 August 2020, charges for the exit in support rather than in permission.
- Central mandates can create hidden bypasses rather than real governance. 89% of DORA's 2024 respondents were using an internal developer platform, and throughput still fell 8% while change stability fell 14%.
- Multi-tenancy requires isolation, quota, cost attribution, and noisy-neighbor controls, and quotas are only the first of those. On 4 April 2024 a pickle-serialised model crossed tenants on the Hugging Face Inference API by container escape.
- Escape hatches need ownership, review, contracts, and portability. SAP AI Core's five vulnerabilities, disclosed 17 July 2024, turned a customer's ordinary training job into cluster-administrator access on the shared cluster.
- Measure platform success through user and reliability outcomes, not feature count. The shared foundation carries version numbers of its own, as CVE-2024-0132 showed in the default configuration of NVIDIA Container Toolkit 1.16.1 and earlier.