Backend Lifecycle

Backend lifecycle

The backend lifecycle refers to the sequence of statuses that a backend managed by Plane passes through, and defines Plane’s responsibilities at each stage.

The statuses are:

  • scheduled: The Plane controller has chosen a drone to run the backend.
  • loading: The drone has acknowledged the backend and is loading the appropriate image from the registry.
  • starting: The drone has loaded the image and is starting the container.
  • waiting: The container has started. The drone is waiting for it to listen on an HTTP port.
  • ready: The container is listening on an HTTP port. The drone is ready to route traffic to it.
  • terminating: The drone has sent a request to terminate the backend. If the request was a “soft” request, the backend may remain in this state for a grace period (by default 10 seoconds) before being hard-terminated.
  • terminated: The drone has terminated the backend. This is considered the only terminal state.

A backend may skip over some of these statuses, but will only transition to statuses lower in the list, never higher. Every backend will eventually reach the terminated state unless the drone responsible for it is permanently lost.

Aside from assigning the initial scheduled status, the drone to which a backend is assigned is responsible for reporting all status changes.

Statuses returned from the status API are returned as strings matching the monospace string above; that is, they begin with a capital letter followed by lowercase letters.

Backend termination:

There are four ways a backend can be terminated:

  • It can exit on its own.
  • A call to the terminate API (this is also how the CLI terminate command works).
  • It can become idle for more than max_idle_seconds seconds, if one was provided when the backend was created.
  • It can reach a deadline of lifetime_limit_seconds seconds after it was created, if one was provided when the backend was created.