Skip to content

Compute Management

Omnistrate provides comprehensive compute management capabilities that abstract away cloud complexities while maintaining full control over your infrastructure. The platform manages compute resources intelligently based on your tenancy model, deployment requirements, and multi-cloud strategy.

How Omnistrate Manages Compute

Omnistrate's compute management is built around several key principles:

  • Tenant-Aware: Compute resources are allocated and managed per-tenant based on your chosen tenancy model
  • ACID-Compliant: All compute operations are fully ACID-compliant, ensuring no leaked resources
  • Versioned: All compute configurations and changes are versioned for rollback and audit capabilities
  • Multi-Cloud: Abstracts cloud provider differences while preserving cloud-specific optimizations
  • Day-2 Operations: Automates ongoing compute operations, not just initial provisioning

Compute Management by Tenancy Type

Dedicated Tenancy Compute Management

In Dedicated Tenancy (OMNISTRATE_DEDICATED_TENANCY), each tenant receives completely isolated compute infrastructure with dedicated virtual machines, storage, and network resources.

How Dedicated Compute Works

Infrastructure Isolation: Each tenant deployment gets its own dedicated virtual machines with no sharing at the infrastructure level. Omnistrate provisions, manages, and scales these resources independently per tenant.

Resource Allocation: Compute resources are allocated based on:

  • Service requirements defined in your compose specification
  • Customer-specific resource parameters
  • Performance and compliance requirements
  • Geographic placement preferences

Scaling Behavior: When a dedicated tenant needs more compute capacity, Omnistrate:

  1. Provisions additional virtual machines in the same deployment cell
  2. Configures networking and storage connectivity
  3. Deploys and configures your service components
  4. Updates load balancing and service discovery

Configuration Example:

x-omnistrate-service-plan:
  tenancyType: 'OMNISTRATE_DEDICATED_TENANCY'

services:
  app:
    x-omnistrate-compute:
      instanceTypes:
        - cloudProvider: aws
          name: m5.large
        - cloudProvider: gcp  
          name: n1-standard-2
        - cloudProvider: azure
          name: Standard_D2s_v3

Compute Features for Dedicated Tenancy:

  • Custom instance types per cloud provider
  • Dedicated CPU and memory allocation
  • Isolated storage volumes
  • GPU support for AI/ML workloads

Multi-Tenancy Compute Management

In Multi-Tenancy (OMNISTRATE_MULTI_TENANCY), multiple tenant instances share underlying compute infrastructure through intelligent bin-packing and resource optimization.

How Multi-Tenant Compute Works

Intelligent Bin-Packing: Omnistrate automatically places multiple tenant workloads on shared virtual machines based on:

  • CPU and memory requirements
  • Resource utilization patterns
  • Performance isolation requirements

Resource Isolation: While infrastructure is shared, each tenant gets:

  • Dedicated CPU and memory limits/requests
  • Isolated container runtime environments
  • Network-level isolation through Kubernetes namespaces
  • Storage isolation through persistent volume claims

Dynamic Scaling: Omnistrate continuously monitors resource utilization and:

  • Adds new virtual machines when capacity is exceeded
  • Scales down unused capacity to optimize costs
  • Maintains performance isolation during scaling events

Configuration Example:

x-omnistrate-service-plan:
  tenancyType: 'OMNISTRATE_MULTI_TENANCY'

services:
  app:
    platform: "linux/arm64"  # Use ARM64 for cost optimization
    deploy:
      resources:
        limits:
          cpus: '2.0'
          memory: 4G
        requests:
          cpus: '0.5'
          memory: 1G

Compute Features for Multi-Tenancy:

  • Automatic resource optimization and bin-packing
  • Configurable CPU and memory limits per tenant
  • Shared infrastructure with logical isolation
  • Cost-effective resource utilization
  • Automatic scaling based on aggregate demand
  • Platform architecture support (x86_64, ARM64)

Multi-Cloud Compute Options

Omnistrate provides comprehensive multi-cloud compute capabilities, allowing you to deploy and manage compute resources across multiple cloud providers seamlessly.

Supported Cloud Providers

Amazon Web Services (AWS)

  • Full range of EC2 instance types
  • Graviton (ARM64) and Intel/AMD (x86_64) processors
  • GPU instances for AI/ML workloads (P3, P4, G4, etc.)
  • Spot instances for cost optimization
  • Regional deployment across all AWS regions

Google Cloud Platform (GCP)

  • Compute Engine instance families
  • Custom machine types for precise resource allocation
  • GPU accelerators (NVIDIA T4, V100, A100)
  • Preemptible instances for cost savings
  • Regional deployment across GCP regions

Microsoft Azure

  • Virtual Machine families
  • ARM64 and Intel/AMD processors
  • Azure Spot Virtual Machines
  • GPU-enabled instances for compute-intensive workloads
  • Regional deployment across Azure regions

Instance Type Selection

Specify compute requirements per cloud provider:

services:
  database:
    x-omnistrate-compute:
      instanceTypes:
        - cloudProvider: aws
          name: r5.xlarge      # Memory-optimized for database
        - cloudProvider: gcp
          name: n1-highmem-4   # High memory equivalent
        - cloudProvider: azure
          name: Standard_E4s_v3 # Memory-optimized equivalent

Per-cloud instance type overrides

When no explicit instance type is configured, Omnistrate uses your Resource's platform value and resource requests to select suitable compute for each cloud provider. For example, platform: linux/arm64 directs Omnistrate to select ARM64-compatible defaults for supported clouds.

You can override the selected instance type for each cloud provider with x-omnistrate-compute.instanceTypes:

services:
  app:
    image: ghcr.io/example/app:latest
    platform: linux/arm64
    x-omnistrate-compute:
      instanceTypes:
        - cloudProvider: aws
          name: r7g.large
        - cloudProvider: gcp
          name: t2a-standard-4
        - cloudProvider: azure
          name: Standard_E2ps_v6
    deploy:
      resources:
        requests:
          cpus: '0.5'
          memory: 1G

Explicit instance type overrides take precedence over platform-based defaults for the cloud provider where they are defined. This also allows mixed per-cloud choices, such as AWS on ARM and GCP on x86:

services:
  app:
    image: ghcr.io/example/app:latest
    platform: linux/arm64
    x-omnistrate-compute:
      instanceTypes:
        - cloudProvider: aws
          name: r7g.large      # ARM64
        - cloudProvider: gcp
          name: n2-highmem-2   # x86_64

If you select an instance type that has node-local NVMe, see Local NVMe Storage — on AWS and Azure those disks are prepared and mounted automatically, and on GCP local SSD is configured through configurationOverrides.

Instance type overrides are resource-local. Omnistrate does not inherit instanceTypes from a parent resource. In a large resource tree, add instanceTypes only to compute-backed resources that need a specific override.

If several compute-backed resources need the same selected values, define API parameters once on the parent resource and pass them to child resources with parameterDependencyMap. Each child resource still needs its own x-omnistrate-compute.instanceTypes entries that reference those API parameters.

services:
  app:
    image: omnistrate/noop
    x-omnistrate-api-params:
      - key: awsInstanceType
        description: AWS instance type
        name: AWS Instance Type
        type: String
        modifiable: false
        required: false
        export: true
        defaultValue: r7g.large
        parameterDependencyMap:
          api: awsInstanceType
          worker: awsInstanceType
      - key: gcpInstanceType
        description: GCP instance type
        name: GCP Instance Type
        type: String
        modifiable: false
        required: false
        export: true
        defaultValue: n2-highmem-2
        parameterDependencyMap:
          api: gcpInstanceType
          worker: gcpInstanceType
    depends_on:
      - api
      - worker

  api:
    image: ghcr.io/example/api:latest
    x-omnistrate-api-params:
      - key: awsInstanceType
        description: AWS instance type
        name: AWS Instance Type
        type: String
        modifiable: false
        required: true
        export: false
      - key: gcpInstanceType
        description: GCP instance type
        name: GCP Instance Type
        type: String
        modifiable: false
        required: true
        export: false
    x-omnistrate-compute:
      instanceTypes:
        - cloudProvider: aws
          apiParam: awsInstanceType
        - cloudProvider: gcp
          apiParam: gcpInstanceType

  worker:
    image: ghcr.io/example/worker:latest
    x-omnistrate-api-params:
      - key: awsInstanceType
        description: AWS instance type
        name: AWS Instance Type
        type: String
        modifiable: false
        required: true
        export: false
      - key: gcpInstanceType
        description: GCP instance type
        name: GCP Instance Type
        type: String
        modifiable: false
        required: true
        export: false
    x-omnistrate-compute:
      instanceTypes:
        - cloudProvider: aws
          apiParam: awsInstanceType
        - cloudProvider: gcp
          apiParam: gcpInstanceType

parameterDependencyMap applies only to the direct child resources listed in the map. If your dependency graph has multiple levels, map the parameter to each resource that needs the value.

When mixing architectures across clouds, publish a multi-architecture container image or ensure each selected instance type can run the container image you provide. An ARM64-only container image will not run on an x86_64 node pool, even if platform: linux/arm64 is set on the Resource.

Availability Zones and Instance Types

Resource capabilities determine whether the Resource uses a single availability zone (AZ), multiple AZs, or a customer-specified AZ:

Resource placement Plan specification Compose specification
Single AZ selected by Omnistrate Omit enableMultiZone and enableCustomZone, or set both to false. Omit both flags under x-omnistrate-capabilities, or set both to false.
Multiple AZs capabilities.enableMultiZone: true x-omnistrate-capabilities.enableMultiZone: true
Customer-specified AZ capabilities.enableCustomZone: true x-omnistrate-capabilities.enableCustomZone: true

Choose one placement mode. For custom placement, the customer supplies the AZ when creating the deployment.

Per-instance-type zone placement policy

For Azure AKS, set zonePlacementPolicy inside each instance type's configurationOverrides to control node-pool creation within the Resource's selected AZs. Use compute.instanceTypes in a Plan specification, including Helm Resources, or x-omnistrate-compute.instanceTypes in Compose. Direct API calls use the same zonePlacementPolicy property in the instance type configuration override.

Value Behavior
strict Default when omitted. The instance type must be available in every selected Resource AZ, and a pool is created in each AZ.
bestEffort Create pools only in selected Resource AZs where this instance type is available. The type can have one pool or no pools, provided another instance type covers each remaining selected AZ.

This Plan specification fragment configures a multi-zone Resource with a strict CPU type and a best-effort GPU type:

services:
  - name: inference
    capabilities:
      enableMultiZone: true
    compute:
      instanceTypes:
        - name: Standard_D4s_v3
          cloudProvider: azure
          configurationOverrides:
            zonePlacementPolicy: strict
        - name: Standard_NC6s_v3
          cloudProvider: azure
          configurationOverrides:
            zonePlacementPolicy: bestEffort

The equivalent Compose fragment is:

services:
  inference:
    image: ghcr.io/example/inference:latest
    x-omnistrate-capabilities:
      enableMultiZone: true
    x-omnistrate-compute:
      instanceTypes:
        - name: Standard_D4s_v3
          cloudProvider: azure
          configurationOverrides:
            zonePlacementPolicy: strict
        - name: Standard_NC6s_v3
          cloudProvider: azure
          configurationOverrides:
            zonePlacementPolicy: bestEffort

You can use apiParam instead of name; the policy applies to the resolved instance type for that entry.

How Resource AZs are selected

During initial placement, Omnistrate considers instance type availability in the selected Azure region and the deployment cell's eligible AZs:

Configured policies Eligible Resource AZs
All instance types are strict The intersection of their available AZs: each type must be available in the same AZ.
Strict and best-effort types are mixed The intersection of the strict types' available AZs. Best-effort types do not restrict this set.
All instance types are best effort The union of their available AZs: at least one type must be available in each AZ.

Omnistrate then restricts this set to the deployment cell's eligible AZs and applies the Resource placement mode. Single-zone placement selects one eligible AZ. Multi-zone placement selects all eligible AZs and requires at least two. Custom placement validates the exact customer-specified AZ against the eligible set.

For example, suppose the CPU type is available in AZs 1, 2, and 3, and the GPU type is available only in AZ 3:

CPU policy GPU policy Eligible Resource AZs Multi-zone result
strict strict 3 Fails because only one AZ is eligible.
strict bestEffort 1, 2, 3 CPU pools in all three AZs; a GPU pool only in AZ 3.
bestEffort bestEffort 1, 2, 3 CPU pools in all three AZs; a GPU pool only in AZ 3.

These examples assume all three AZs are eligible for the deployment cell. Availability varies by region and Azure account; the example instance types do not imply availability in a particular region.

If a best-effort type is unavailable in every AZ, Omnistrate skips its pools. Another configured type must cover the selected Resource AZs. If that unavailable type is the only type, placement fails. A single best-effort type available in only one AZ can support a single-zone Resource, but cannot satisfy multi-zone placement.

Customer-specified AZs and subsequent operations

With enableCustomZone: true, placement stays in the customer's requested AZ. If two types use bestEffort and only one is available there, Omnistrate creates a pool for the available type and skips the other. If neither is available, provisioning fails. A strict type unavailable in the requested AZ also causes provisioning to fail. Omnistrate does not fall back to another AZ.

Existing Resource AZs are retained for subsequent operations. On managed Azure hosts that have not been adopted, Omnistrate checks instance availability during create, update, start, restart, and add-capacity operations. Before creating AKS pools, it validates all selected Resource AZs: every strict type must be available in each AZ, and every selected AZ must have at least one eligible pool. If validation fails, no pool creation is dispatched.

When availability metadata is missing for an instance type, that type does not restrict AZ selection and its pools retain the existing unfiltered behavior. A type with metadata reporting no available AZs is treated as unavailable. Pool cleanup continues to consider all configured types so that changes in availability do not prevent deletion of existing pools.