Concepts
Deployment Target
VM or Kubernetes cluster set up to host an Application/Project instance
Project
- A Project is a “developer mode” concept that models a codebase (usually a git repository) which may have multiple distinct environments deployed (eg. feature branch, staging/qa)
- This is the mode we plan to focus on for now, as it’s a dependency of the Application mode
- By default branch environments get rolling updates that don’t require blue/green, backup/restore, monitoring/rollback functionality
Application
- An Application is an “operator mode” concept that models some form of versioned release process. Applications:
- Could be an “upstream” codebase like a Drupal install profile (eg. OpenSocial), where I don’t control releases directly
- Could also be based on a custom-built codebase (eg. a Drupal 10 singleton site), usually associated with a Project
- Orient toward “herds” of sites running on them, and a singleton instance is just a degenerate case
- Have different versions (and the concept of a “latest” version), and facilitate moving herds of sites between them
- As a policy, you could have a
production
environment doing CD eg. no staged release model
- Alternately, you could clone and set up a test environment on the new version, wait for approval to cut over the live environment
- In Aegir3, the concept of Distributions modeled this:
- Check upstream application for a new version, and if so:
- Create a new Platform
- Notify the admin for any sites on the original version
- Run a series of migrations to move sites to latest version
- Distributions gave us the concept of “the latest version”
Release
A specific version/tag of a Project/Application, along with dependencies (docker image)
Branch Environment
A space to hold a Deployment (in k8s context, these are 1:1, ie. , so maybe Aegir treats them as one thing?)
- Deployment? An instance of a site deployed to a Deployment Target
- Could be a “branch” or “live/release” (or other?) type of Environment
Release Environment
A Branch Environment based on an Application Release?