Skip to content

App vs App Environment vs App Service

These three terms describe different layers of the same application model.

Quick model

Object What it represents Example Where you work with it most
App The top-level application record built on one stack shop Apps
App environment One deployed copy of that app with an environment type prod-eu, staging, dev Apps > [App] > Environments
App service One service inside one app environment php, nginx, redis, postgres Apps > [App] > [Environment] > Stack > App services

Relationship

flowchart TD
    App["App: shop"]
    Prod["App environment: production"]
    Staging["App environment: staging"]
    Php["App service: php"]
    Nginx["App service: nginx"]
    Redis["App service: redis"]

    App --> Prod
    App --> Staging
    Prod --> Php
    Prod --> Nginx
    Prod --> Redis

App

An app is the top-level product object.

It groups:

  • all environments of the same application
  • one stack and its revisions
  • app-wide identity such as name and machine name

The app itself is the organizing record. The actual running copies of the application are its app environments.

The app machine name is permanent. It must follow the general Kubernetes name rules: lowercase letters, numbers, and dashes only; start and end with a letter or number; 63 characters or shorter.

All app environments of the same app share that stack, but each environment can run a different stack revision and can be deployed to a different cluster.

Typical app-level actions:

  • create the app
  • rename the app
  • view all environments

App environment

An app environment is one actual deployed copy of the app running on a Kubernetes cluster. It has a fixed environment type: prod, staging, test, dev, or feature.

The environment machine name follows the same general naming rule as app names. Together, the app and environment names form a Kubernetes namespace as <app-name>-<environment-name>, which must also be 63 characters or shorter.

An environment has its own:

  • cluster destination
  • environment type
  • routes and ports
  • builds and deploys
  • backups and imports
  • cron schedules
  • app services

Sibling environments of the same app can run on different clusters and different stack revisions.

App service

An app service is one service inside one app environment.

It represents one actual part of the deployed application. For most services that means a workload Wodby deploys to Kubernetes. For external services it means a configured connection to software running outside Wodby.

This is where you override per-environment service behavior such as:

  • enabled state
  • version
  • replicas
  • database attachment
  • integrations
  • environment variables
  • Helm values
  • resources
  • links
  • configs
  • tokens
  • annotations

If the same app has both production and staging, each environment gets its own app services.

Rule of thumb

  • If you are deciding which deployed copy of an app to work with, you are working with an app environment.
  • If you are changing how one part of the deployed app behaves, you are working with an app service.
  • If you are looking at the whole product across environments, you are working with an app.