Environments and Deployment
Environments and Deployment

Model deployment topology and environments using deployment-oriented schemas.

Beyond logical structure, you can model how a system is deployed. A separate model with a deployment-oriented schema (such as kubernetes) describes runtime topology without cluttering the logical architecture.

Separate models for separate concerns

A project can hold multiple models — for example a logical model and a deployment model:

# models.yaml
models:
  logic:
  deployment:

Why separate models

Keeping logical architecture and deployment topology in separate models keeps each view focused. They can evolve independently and still live in one project.

Deployment schema

Set objects_schema: kubernetes on a deployment model to use deployment object types:

title: Deployment
type: model
objects_schema: kubernetes
objects:
  cluster: null

Common object types in the Kubernetes schema include:

TypeRepresents
clusterCluster or control-plane scope
namespaceLogical isolation boundary
deploymentDeclarative Pod/ReplicaSet management
statefulsetStateful workload with stable identity
serviceStable virtual IP / DNS for Pods
ingress_controllerData-plane Ingress implementation
persistent_volume_claimPod storage request

Example deployment object

title: Orders Deployment
type: deployment
description: Deploys orders API pods.
team_owner: platform
owner_email:
  - team-platform@example.com
status: active

Environments

Use tags to distinguish environments and filter views accordingly:

tags:
  - env:prod
  - env:staging

Model deployment at the level your team actually operates. If you do not manage Kubernetes directly, a lighter topology may communicate more clearly than a full cluster model.

Last updated on