Catalogue / Compute

Application server

computeapp-server

A request-serving process owned by the team.

Category
Compute
Properties
10
Components
99
Rules
4
Properties · 10 defined by this kind

A node of this kind resolves each property from its own props, then the component's defaults, then the default below.

propertytypevaluesrequireddefault
autoscalingboolean—nofalse
criticality · advancedenumlow | medium | highnomedium
instancePerEntity · advancedboolean—nofalse
instancesinteger—no—
managedboolean—nofalse
ownsData · advancedboolean—notrue
runtimestring—no—
shardingStrategy · advancedenumnone | consistent-hash | range | lookupnonone
singleWriter · advancedboolean—nofalse
statelessboolean—notrue
Rules for this kind · 4
external-call-inline-without-durable-path

A service that calls a third party synchronously, with no queue or workflow engine attached, has nowhere to park the request when the third party is slow or down. The failure becomes the user's problem instead of a retried job.

  • — all of these hold:
  • — the node has at least one synchronous outgoing edge to a third-party-api
  • — this does not hold:
  • — the node has at least one connected edge joining a workflow-engine or queue
fanout-inline-in-request-path

Calling a worker synchronously puts the background job on the request path. The caller waits for the slowest part of the fan-out.

  • — the node has at least one synchronous outgoing edge to a worker
stateful-hash-ring-without-ring-manager

A stateful service on a consistent hash ring needs something that owns the ring: detect a dead host, pick a replacement, tell everyone. Without a coordination service the ring is edited by hand during the outage.

  • — all of these hold:
  • — the node's `shardingStrategy` is "consistent-hash"
  • — this does not hold:
  • — the node has at least one connected edge joining a coordination-service
stateful-node-without-zone-redundancy

A stateful compute node pinned to exactly one availability zone disappears with that zone, and its state goes with it. Nodes inside a cell are exempt, because there the cell is deliberately single-zone and redundancy comes from the other cells.

  • — all of these hold:
  • — the node's `stateless` is false
  • — the node sits inside exactly 1 availability-zone group
  • — this does not hold:
  • — the node sits inside at least one cell group
Components · 99
Source
# yaml-language-server: $schema=../schema/kind.schema.json
# A request-serving process you own (API, service, backend-for-frontend, chat server).
# stateless defaults true because most scaling rules assume it; set false for per-entity or hash-ring services.
schemaVersion: "1"
type: "kind"
id: "app-server"
category: "compute"
properties:
  stateless:
    type: "boolean"
    default: true
  instances:
    type: "integer"
  runtime:
    type: "string"
  autoscaling:
    type: "boolean"
    default: false
  criticality:
    type: "enum"
    values: ["low", "medium", "high"]
    default: "medium"
    advanced: true
  shardingStrategy:
    type: "enum"
    values: ["none", "consistent-hash", "range", "lookup"]
    default: "none"
    advanced: true
  instancePerEntity:
    type: "boolean"
    default: false
    advanced: true
  singleWriter:
    type: "boolean"
    default: false
    advanced: true
  ownsData:
    type: "boolean"
    default: true
    advanced: true
  managed:
    type: "boolean"
    default: false

The same page as markdown, for an agent: /catalogue/kinds/app-server.md