---
title: "Architecture Asset: MLOps Training and Serving on STACKIT"
description: 'Reference architecture for an MLOps lifecycle on STACKIT: notebooks, Kubernetes-based training, a model registry in Object Storage, and managed serving.'
sidebar:
  badge:
    text: "STACKIT"
    variant: success
scfAsset:
  maintainers:
    - user: "tobias.mueller"
  managed: false
  category: 'blueprint'
  external: false
  tags: ["operate", "mlops", "model-serving", "kubernetes", "object-storage", "wip"]
source_url: "https://framework.stackit.cloud/data-and-ai/assetcontainer/stackit/mlops-training-serving/"
source_file: "docs/data-and-ai/assetcontainer/stackit/mlops-training-serving.mdx"
---

## Overview

This pattern operationalizes machine learning. Experiments run in notebooks, training executes on Kubernetes, models are versioned in an Object Storage registry, and the selected model is served behind a load balancer with monitoring and retraining loops.

## Typical use case

- **Reproducible ML**: version data, code, and models across the lifecycle.
- **Automated retraining**: retrain and revalidate as data changes.
- **Reliable serving**: deploy models with rollback and monitoring.

## Architecture diagram

```d2
vars: {
  d2-config: {
    pad: 32
  }
}

style.font-size: 22
direction: right
grid-columns: 1

Dev: "Experimentation" {
  Notebooks: "Notebooks" {
    icon: ../../../../../../public/stackit-icons/artificial-intelligence/notebooks.svg
    link: https://docs.stackit.cloud/products/data-and-ai/notebooks/
  }
}

Pipeline: "MLOps Pipeline" {
  direction: down
  grid-columns: 1

  Train: "Training (Kubernetes)" {
    icon: ../../../../../../public/stackit-icons/runtime/kubernetes.svg
    link: https://docs.stackit.cloud/products/runtime/kubernetes-engine/
  }
  Experiments: "Experiment Tracking" {
    icon: ../../../../../../public/stackit-icons/artificial-intelligence/ai-model-experiments.svg
    link: https://docs.stackit.cloud/products/data-and-ai/ai-model-experiments/
  }
  Registry: "Model Registry (Object Storage)" {
    icon: ../../../../../../public/stackit-icons/computing/object-storage.svg
    link: https://docs.stackit.cloud/products/storage/object-storage/
  }
}

Serve: "Serving" {
  direction: down
  grid-columns: 1

  LB: "API / LB" {
    icon: ../../../../../../public/stackit-icons/networking/application-load-balancer.svg
    link: https://docs.stackit.cloud/products/network/load-balancing-and-content-delivery/application-load-balancer/
  }
  Model: "Model Serving" {
    icon: ../../../../../../public/stackit-icons/artificial-intelligence/model-serving.svg
    link: https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/
  }
  Obs: "Monitoring & Drift" {
    icon: ../../../../../../public/stackit-icons/logging-monitoring/observability.svg
    link: https://docs.stackit.cloud/products/logging-and-monitoring/observability/
  }
}

Dev.Notebooks -> Pipeline.Train
Pipeline.Train -> Pipeline.Experiments
Pipeline.Train -> Pipeline.Registry
Pipeline.Registry -> Serve.Model
Serve.LB -> Serve.Model
Serve.Model -> Serve.Obs
Serve.Obs -> Pipeline.Train: "retrain"
```

## Design best practices

- **Automate the lifecycle**: use CI/CD for models, not manual promotion.
- **Version everything**: data, features, code, and models for reproducibility.
- **Monitor drift**: feed monitoring signals back into retraining.
- **Roll out safely**: support canary or shadow deployment and fast rollback.
