MLOps roadmap: Code-first vs platform-first paths
look great. Then you try to deploy and the serving stack throws a NoRoutingConfig error you have never seen before. That gap — between a notebook that runs and a system that serves predictions at 3 a.m. without paging you — is where an MLOps roadmap lives.

Two paths exist. The code-first path treats your pipeline as software — YAML, Git, CI/CD, Kubernetes. The platform-first path hands the infrastructure to a managed vendor — SageMaker, Vertex AI, Databricks — and trades flexibility for velocity. Both ship in production. Both cost real money. The question is which one your team can actually maintain.
The Evolution of MLOps: From Custom Pipelines to Managed Platforms
The MLOps market was worth $3.8 billion in 2021. By 2026, analysts project it at $21.1 billion. That is a 5.5x expansion in five years — the kind of growth curve that tells you production AI is no longer a research project. It is an infrastructure problem.
A decade ago, deploying a model meant writing a Flask wrapper, renting a VM, and hoping for the best. That is not a path. It is a workaround. Today we have two mature paths, each with a different theory of who owns the undifferentiated heavy lifting.
The code-first path treats your pipeline as a software artifact. Everything is declarative — YAML, SQL, Python SDKs. The pipeline lives in Git. CI/CD triggers it. GitOps rolls it out. The way you already ship microservices, applied to ML.
The platform-first path takes a different bet. You adopt a unified managed platform — AWS SageMaker, Azure Machine Learning, Google Cloud Vertex AI, or Databricks — and let the vendor run the Kubernetes, the autoscaling, and the patching. You trade flexibility for velocity and control for governance.
The first gotcha on either path is the same: there is no path that removes the need for engineering judgment. Platforms don't kill complexity. They move it.
Both paths are valid. Both run in production at companies you have heard of. The mistake is not choosing one. It is choosing without knowing what you are trading away.
Code-First Architecture: Leveraging GitOps and Declarative Workflows
The code-first MLOps path starts with a simple premise: infrastructure as code, ML as code. If you can describe it in a declarative file, you can version it, review it, and roll it back.
Concretely, the stack looks like:
- A
pipeline.yamlordvc.yamldefining stages of training, evaluation, and packaging - Terraform or Pulumi modules provisioning the serving infrastructure
- A GitHub Actions or GitLab CI workflow triggering the pipeline on every commit
- Argo CD or Flux watching the manifests and reconciling cluster state
The usual suspects: Kubeflow for training orchestration, MLflow for experiment tracking, Seldon Core or BentoML for model serving, Prometheus and Grafana for monitoring, Feast for feature management. None of these are owned by a single vendor. That is the point — and the headache.
We have all spent a week wiring Kubernetes namespaces, configuring service meshes, and tuning autoscalers before the first model sees a real request. The gotcha nobody warns you about: code-first means you own every layer of the stack. When something breaks at 2 a.m., the pager hits your team, not Databricks.
The upside is real. You get full control over the serving runtime. You can swap in a custom CUDA kernel, run inference on a niche accelerator, or pin a Python version the managed runtime has not blessed. If your model has unusual constraints — low latency, regulated inputs, custom feature transforms — the code-first path gives you room to maneuver.
It is also the only path that aligns with how most backend teams already work. GitOps practices, automated testing, CI/CD workflows — these are not foreign concepts. The learning curve is steep in places, but the conceptual surface is familiar.
Platform-First Strategy: Building the Golden Path for Enterprise AI
The platform-first path flips the equation. You do not build the platform. You consume it.
A unified MLOps platform bundles the pieces into a single control plane. You get a visual pipeline designer. You get AutoML for baseline models. You get built-in experiment tracking, model registry, feature store, and deployment infrastructure. The vendor maintains the Kubernetes, the autoscaling, the patching.
Platform engineering in MLOps is about building a Golden Path — an Internal Developer Platform that hides the GPU plumbing and lets data scientists focus on modeling.
That is the framing enterprise platform teams use. The platform team builds the IDP. The data science team ships models through it. The line between MLOps engineer and platform engineer blurs on this path — the platform-first MLOps engineer often maintains the platform itself, not the individual models.
In practice, this means a data scientist submits a training job through a notebook UI, the platform provisions the GPU cluster, tracks the experiment in a managed MLflow instance, registers the model, and deploys it to a managed endpoint — all without writing a single YAML file. We can have a model behind an API in an afternoon.
Two developments tighten the platform-first story in 2025. Databricks and Palantir announced a strategic partnership that enables zero-copy data integration between governed enterprise data and ML pipelines — a real pain point when your data lives in a warehouse and your training pipeline needs it pruned and labeled. MLflow 3, released as an open-source AI platform, added agent operational tracing and a prompt registry for versioning, optimization, and A/B testing — features that used to require a custom build.
The trade-off: portability. Once your pipelines are encoded in a managed platform's SDK, migrating away is non-trivial. The platform's opinions about training, feature serving, and monitoring become your opinions.
Strategic Trade-offs: Balancing Operational Overhead and Scalability
Putting the two paths side by side. The numbers below are directional — vendor pricing is custom and rarely public — but the engineering tradeoffs are concrete.
| Dimension | Code-first | Platform-first |
|---|---|---|
| Time to first model in production | 2–6 weeks (single engineer) | 1–3 days (with existing platform) |
| Initial setup cost | High (engineer hours) | Low to medium (license + onboarding) |
| Ongoing operational overhead | High (your pager) | Medium (vendor's pager, with escalation) |
| Customization ceiling | Unlimited | Bound by platform SDK |
| Portability | High (open formats) | Low (vendor lock-in) |
| Governance and audit | DIY (you build it) | Built-in (lineage, RBAC, audit logs) |
| Best fit | Specialized models, regulated industries, existing platform teams | Standard ML workloads, fast iteration, mixed-skill teams |
The deployment speed gap is real, and it is the first thing leadership notices. A platform-first team can ship a model behind an endpoint in an afternoon. A code-first team needs time to provision, configure, and wire up the stack. If your competitive moat is iteration speed, the platform-first path wins the first six months.
The cost picture is messier. Code-first looks cheaper on paper — no license fees — but the engineering hours add up. A team of three senior engineers maintaining a code-first pipeline costs the same as a generous enterprise license. The decision rarely comes down to sticker price. It comes down to which input is cheaper: your labor or the platform license.
Code-first is not always cheaper. Custom engineering hours and maintenance overhead can exceed platform licensing fees — that's the trap that buries teams who chose "free" without counting the on-call rotation.
A second trap: assuming the platform path eliminates the need for MLOps expertise. It does not. You still need someone who understands data drift, model retraining triggers, and feature freshness. The platform automates the plumbing. It does not replace the judgment.
Navigating the Maturity Curve: When to Shift from API Serving to Orchestration
Every MLOps roadmap we have seen follows the same curve. The mistake is skipping steps.
1. Phase 1 — Foundations. A single model served behind a REST API. No orchestration. No Kubernetes. No feature store. This is where every team should start. If you cannot ship a single model reliably, you cannot ship ten.
2. Phase 2 — CI/CD for ML. Versioned data, versioned models, automated training on every commit. Still a single model, but the pipeline is repeatable.
3. Phase 3 — Multi-model serving. More than one model. You need a router, a registry, and a way to A/B test. Seldon, BentoML, or a managed equivalent.
4. Phase 4 — Feature store and monitoring. Data drift, concept drift, model performance degradation. This is where the on-call rotation gets real.
5. Phase 5 — Orchestration. Kubernetes, distributed training, multi-region serving. The code-first path lives here fully. The platform-first path abstracts it.
6. Phase 6 — Advanced specializations. Edge deployment, quantization, agent orchestration, regulatory compliance. Specialized work for specific industries.
Don't jump to Kubernetes orchestration on day one. Master single-model serving behind an API first — that one skill unlocks the rest of the curve.
The shift from code-first to platform-first — or vice versa — usually happens at Phase 3 or 4. Single-model serving is straightforward on either path. The divergence appears when you have multiple teams, multiple models, and the organizational need for governance. That is where the IDP and the Golden Path start to pay off.
If you are a small team shipping a single model, pick the path that gets you to production fastest. If you are a large enterprise with five data science teams and a compliance regime, the platform-first path is almost always the right starting point — even if you eventually build custom layers on top.
A hybrid path is also viable. Many teams use a managed platform for data preparation and experiment tracking, then drop down to code-first for the serving layer where latency and customization matter. That is the practical answer most teams arrive at after a year of trying.
Both paths are real. Both are deployed at scale. The MLOps roadmap you choose is less about ideology and more about what your team can actually maintain on a Tuesday afternoon when inference latency spikes and the feature pipeline is throwing a foreign key error. Pick the path whose pager you can answer.