---
id: "app-server"
type: "kind"
category: "compute"
url: "https://localhost:3000/catalogue/kinds/app-server"
---

# Application server

A request-serving process owned by the team.

| | |
|---|---|
| Category | Compute |
| Properties | 10 |
| Components | 99 |
| Rules | 4 |

## Properties

| property | type | values | required | default |
|---|---|---|---|---|
| `autoscaling` | boolean | — | no | false |
| `criticality` (advanced) | enum | `low`, `medium`, `high` | no | "medium" |
| `instancePerEntity` (advanced) | boolean | — | no | false |
| `instances` | integer | — | no | — |
| `managed` | boolean | — | no | false |
| `ownsData` (advanced) | boolean | — | no | true |
| `runtime` | string | — | no | — |
| `shardingStrategy` (advanced) | enum | `none`, `consistent-hash`, `range`, `lookup` | no | "none" |
| `singleWriter` (advanced) | boolean | — | no | false |
| `stateless` | boolean | — | no | true |

## Rules for this kind · 4

### Inline external call without durable fallback `external-call-inline-without-durable-path` (warning)

- Page: https://localhost:3000/catalogue/rules/external-call-inline-without-durable-path.md
- Why: 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.
- Applies to: every node of kind app-server
- Message: Service '{{node.id}}' calls a third party inline with no queue or workflow engine to fall back to when that call fails.

It fires when:

- 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

### Fan-out inline in the request path `fanout-inline-in-request-path` (warning)

- Page: https://localhost:3000/catalogue/rules/fanout-inline-in-request-path.md
- Why: Calling a worker synchronously puts the background job on the request path. The caller waits for the slowest part of the fan-out.
- Applies to: every node of kind app-server
- Message: Service '{{node.id}}' calls a worker synchronously. Hand the job to a queue or stream so the request path does not wait for fan-out.

It fires when:

- the node has at least one synchronous outgoing edge to a worker

### Stateful hash ring without ring manager `stateful-hash-ring-without-ring-manager` (warning)

- Page: https://localhost:3000/catalogue/rules/stateful-hash-ring-without-ring-manager.md
- Why: 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.
- Applies to: every node of kind app-server
- Message: Service '{{node.id}}' is on a consistent hash ring but is not connected to a coordination service that manages the ring.

It fires when:

- 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 `stateful-node-without-zone-redundancy` (error)

- Page: https://localhost:3000/catalogue/rules/stateful-node-without-zone-redundancy.md
- Why: 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.
- Applies to: every node in category compute
- Message: Stateful node '{{node.id}}' lives in exactly one availability zone. A zone outage takes its state with it.

It fires when:

- 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

### vendor-neutral

- [Generic application server](https://localhost:3000/catalogue/components/app-server.md) `app-server` — the kind itself

### alibabacloud

- [Elastic Container Instance](https://localhost:3000/catalogue/components/alibaba-eci.md) `alibaba-eci` — 1 defaults
- [Enterprise Distributed Application Service](https://localhost:3000/catalogue/components/alibaba-edas.md) `alibaba-edas` — 1 defaults
- [Function Compute](https://localhost:3000/catalogue/components/alibaba-function-compute.md) `alibaba-function-compute` — 2 defaults
- [Serverless App Engine](https://localhost:3000/catalogue/components/alibaba-sae.md) `alibaba-sae` — 1 defaults
- [YIDA](https://localhost:3000/catalogue/components/alibaba-yida.md) `alibaba-yida` — 1 defaults

### aws

- [AWS App Runner](https://localhost:3000/catalogue/components/aws-app-runner.md) `aws-app-runner` — 3 defaults
- [AWS App Studio](https://localhost:3000/catalogue/components/aws-app-studio.md) `aws-app-studio` — 3 defaults
- [CloudFront Functions](https://localhost:3000/catalogue/components/aws-cloudfront-functions.md) `aws-cloudfront-functions` — 4 defaults
- [AWS Elastic Beanstalk](https://localhost:3000/catalogue/components/aws-elastic-beanstalk.md) `aws-elastic-beanstalk` — 3 defaults
- [AWS Fargate](https://localhost:3000/catalogue/components/aws-fargate.md) `aws-fargate` — 2 defaults
- [Amazon GameLift Servers](https://localhost:3000/catalogue/components/aws-gamelift.md) `aws-gamelift` — 2 defaults
- [Lambda@Edge](https://localhost:3000/catalogue/components/aws-lambda-edge.md) `aws-lambda-edge` — 3 defaults
- [Amazon S3 Object Lambda](https://localhost:3000/catalogue/components/aws-s3-object-lambda.md) `aws-s3-object-lambda` — 4 defaults
- [AWS Transfer Family](https://localhost:3000/catalogue/components/aws-transfer-family.md) `aws-transfer-family` — 4 defaults
- [AWS Lambda](https://localhost:3000/catalogue/components/lambda.md) `lambda` — 3 defaults

### azure

- [Azure App Service](https://localhost:3000/catalogue/components/azure-app-service.md) `azure-app-service` — 3 defaults
- [Azure AI Bot Service](https://localhost:3000/catalogue/components/azure-bot-service.md) `azure-bot-service` — 3 defaults
- [Azure Container Apps](https://localhost:3000/catalogue/components/azure-container-apps.md) `azure-container-apps` — 3 defaults
- [Azure Container Instances](https://localhost:3000/catalogue/components/azure-container-instances.md) `azure-container-instances` — 3 defaults
- [Microsoft Copilot Studio](https://localhost:3000/catalogue/components/azure-copilot-studio.md) `azure-copilot-studio` — 3 defaults
- [Azure Functions](https://localhost:3000/catalogue/components/azure-functions.md) `azure-functions` — 3 defaults
- [Healthcare agent service](https://localhost:3000/catalogue/components/azure-health-bot.md) `azure-health-bot` — 3 defaults
- [Microsoft Power Apps](https://localhost:3000/catalogue/components/azure-power-apps.md) `azure-power-apps` — 2 defaults
- [Azure Spring Apps](https://localhost:3000/catalogue/components/azure-spring-apps.md) `azure-spring-apps` — 3 defaults

### cloudflare

- [Dynamic Workers](https://localhost:3000/catalogue/components/cloudflare-dynamic-workers.md) `cloudflare-dynamic-workers` — 5 defaults
- [Email Workers](https://localhost:3000/catalogue/components/cloudflare-email-workers.md) `cloudflare-email-workers` — 5 defaults
- [Cloudflare Pages](https://localhost:3000/catalogue/components/cloudflare-pages.md) `cloudflare-pages` — 4 defaults
- [Cloudflare Sandbox SDK](https://localhost:3000/catalogue/components/cloudflare-sandbox.md) `cloudflare-sandbox` — 5 defaults
- [Cloudflare Workers](https://localhost:3000/catalogue/components/cloudflare-workers.md) `cloudflare-workers` — 5 defaults
- [Workers for Platforms](https://localhost:3000/catalogue/components/cloudflare-workers-for-platforms.md) `cloudflare-workers-for-platforms` — 5 defaults

### default

- [AutoGen Studio](https://localhost:3000/catalogue/components/autogen-studio.md) `autogen-studio` — 4 defaults
- [Botpress](https://localhost:3000/catalogue/components/botpress.md) `botpress` — 2 defaults
- [Cloud Foundry](https://localhost:3000/catalogue/components/cloud-foundry.md) `cloud-foundry` — 5 defaults
- [Container service](https://localhost:3000/catalogue/components/container-service.md) `container-service` — 1 defaults
- [Coolify](https://localhost:3000/catalogue/components/coolify.md) `coolify` — 5 defaults
- [CrewAI AMP](https://localhost:3000/catalogue/components/crewai-enterprise.md) `crewai-enterprise` — 3 defaults
- [Dify](https://localhost:3000/catalogue/components/dify.md) `dify` — 2 defaults
- [Docker container](https://localhost:3000/catalogue/components/docker-container.md) `docker-container` — 1 defaults
- [Dokku](https://localhost:3000/catalogue/components/dokku.md) `dokku` — 5 defaults
- [Erlang/BEAM node](https://localhost:3000/catalogue/components/erlang-node.md) `erlang-node` — 3 defaults
- [Flowise](https://localhost:3000/catalogue/components/flowise.md) `flowise` — 3 defaults
- [Fly.io](https://localhost:3000/catalogue/components/fly-io.md) `fly-io` — 5 defaults
- [Eclipse GlassFish](https://localhost:3000/catalogue/components/glassfish.md) `glassfish` — 2 defaults
- [Heroku](https://localhost:3000/catalogue/components/heroku.md) `heroku` — 5 defaults
- [Microsoft IIS](https://localhost:3000/catalogue/components/iis.md) `iis` — 2 defaults
- [Red Hat JBoss Enterprise Application Platform](https://localhost:3000/catalogue/components/jboss-eap.md) `jboss-eap` — 2 defaults
- [Eclipse Jetty](https://localhost:3000/catalogue/components/jetty.md) `jetty` — 2 defaults
- [Knative](https://localhost:3000/catalogue/components/knative.md) `knative` — 5 defaults
- [Langflow](https://localhost:3000/catalogue/components/langflow.md) `langflow` — 3 defaults
- [LangSmith Deployment](https://localhost:3000/catalogue/components/langgraph-platform.md) `langgraph-platform` — 4 defaults
- [Lindy](https://localhost:3000/catalogue/components/lindy.md) `lindy` — 3 defaults
- [LiveKit Agents](https://localhost:3000/catalogue/components/livekit-agents.md) `livekit-agents` — 3 defaults
- [LlamaCloud](https://localhost:3000/catalogue/components/llamaindex-cloud.md) `llamaindex-cloud` — 2 defaults
- [Mattermost](https://localhost:3000/catalogue/components/mattermost.md) `mattermost` — 2 defaults
- [MCP server](https://localhost:3000/catalogue/components/mcp-server.md) `mcp-server` — 2 defaults
- [Open WebUI](https://localhost:3000/catalogue/components/open-webui.md) `open-webui` — 3 defaults
- [OpenFunction](https://localhost:3000/catalogue/components/openfunction.md) `openfunction` — 4 defaults
- [Apache OpenWhisk](https://localhost:3000/catalogue/components/openwhisk.md) `openwhisk` — 3 defaults
- [PHP-FPM](https://localhost:3000/catalogue/components/php-fpm.md) `php-fpm` — 2 defaults
- [Pipecat](https://localhost:3000/catalogue/components/pipecat.md) `pipecat` — 3 defaults
- [Railway](https://localhost:3000/catalogue/components/railway.md) `railway` — 5 defaults
- [Rasa](https://localhost:3000/catalogue/components/rasa.md) `rasa` — 3 defaults
- [Relevance AI](https://localhost:3000/catalogue/components/relevance-ai.md) `relevance-ai` — 2 defaults
- [Render](https://localhost:3000/catalogue/components/render.md) `render` — 4 defaults
- [Retool](https://localhost:3000/catalogue/components/retool.md) `retool` — 4 defaults
- [Rocket.Chat](https://localhost:3000/catalogue/components/rocket-chat.md) `rocket-chat` — 3 defaults
- [Agentforce](https://localhost:3000/catalogue/components/salesforce-agentforce.md) `salesforce-agentforce` — 3 defaults
- [Apache Tomcat](https://localhost:3000/catalogue/components/tomcat.md) `tomcat` — 2 defaults
- [VM-hosted service](https://localhost:3000/catalogue/components/vm-service.md) `vm-service` — 2 defaults
- [Voiceflow](https://localhost:3000/catalogue/components/voiceflow.md) `voiceflow` — 2 defaults
- [wasmCloud](https://localhost:3000/catalogue/components/wasmcloud.md) `wasmcloud` — 5 defaults
- [IBM WebSphere Liberty](https://localhost:3000/catalogue/components/websphere-liberty.md) `websphere-liberty` — 2 defaults
- [WildFly](https://localhost:3000/catalogue/components/wildfly.md) `wildfly` — 2 defaults
- [Zapier Agents](https://localhost:3000/catalogue/components/zapier-agents.md) `zapier-agents` — 3 defaults

### digitalocean

- [DigitalOcean App Platform](https://localhost:3000/catalogue/components/digitalocean-app-platform.md) `digitalocean-app-platform` — 4 defaults

### gcp

- [App Engine flexible environment](https://localhost:3000/catalogue/components/google-app-engine-flexible.md) `google-app-engine-flexible` — 4 defaults
- [App Engine standard environment](https://localhost:3000/catalogue/components/google-app-engine-standard.md) `google-app-engine-standard` — 3 defaults
- [AppSheet](https://localhost:3000/catalogue/components/google-appsheet.md) `google-appsheet` — 2 defaults
- [Cloud FTP](https://localhost:3000/catalogue/components/google-cloud-ftp.md) `google-cloud-ftp` — 3 defaults
- [Cloud Run functions](https://localhost:3000/catalogue/components/google-cloud-functions.md) `google-cloud-functions` — 3 defaults
- [Google Cloud Run](https://localhost:3000/catalogue/components/google-cloud-run.md) `google-cloud-run` — 3 defaults
- [Firebase App Hosting](https://localhost:3000/catalogue/components/google-firebase-app-hosting.md) `google-firebase-app-hosting` — 3 defaults
- [Service Extensions](https://localhost:3000/catalogue/components/google-service-extensions.md) `google-service-extensions` — 4 defaults
- [Vertex AI Agent Engine](https://localhost:3000/catalogue/components/google-vertex-ai-agent-engine.md) `google-vertex-ai-agent-engine` — 5 defaults

### ibm

- [IBM Cloud Code Engine](https://localhost:3000/catalogue/components/ibm-code-engine.md) `ibm-code-engine` — 3 defaults

### k8s

- [DaemonSet](https://localhost:3000/catalogue/components/k8s-daemonset.md) `k8s-daemonset` — 3 defaults
- [Deployment](https://localhost:3000/catalogue/components/k8s-deployment.md) `k8s-deployment` — 4 defaults
- [Pod](https://localhost:3000/catalogue/components/k8s-pod.md) `k8s-pod` — 3 defaults
- [ReplicaSet](https://localhost:3000/catalogue/components/k8s-replicaset.md) `k8s-replicaset` — 4 defaults
- [StatefulSet](https://localhost:3000/catalogue/components/k8s-statefulset.md) `k8s-statefulset` — 5 defaults

### oci

- [Oracle APEX Application Development](https://localhost:3000/catalogue/components/oci-apex-service.md) `oci-apex-service` — 3 defaults
- [OCI Container Instances](https://localhost:3000/catalogue/components/oci-container-instances.md) `oci-container-instances` — 3 defaults
- [OCI Functions](https://localhost:3000/catalogue/components/oci-functions.md) `oci-functions` — 3 defaults
- [Fusion Applications Environment](https://localhost:3000/catalogue/components/oci-fusion-applications-environment.md) `oci-fusion-applications-environment` — 3 defaults
- [Oracle Visual Builder](https://localhost:3000/catalogue/components/oci-visual-builder.md) `oci-visual-builder` — 4 defaults
- [Oracle WebCenter Portal on Marketplace](https://localhost:3000/catalogue/components/oci-webcenter.md) `oci-webcenter` — 3 defaults
- [Oracle WebLogic Server for OCI](https://localhost:3000/catalogue/components/oci-weblogic-server.md) `oci-weblogic-server` — 4 defaults
- [Oracle WebLogic Server for OKE](https://localhost:3000/catalogue/components/oci-weblogic-server-oke.md) `oci-weblogic-server-oke` — 2 defaults

## Source (`kind` YAML, verbatim)

```yaml
# 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
```

Human page: https://localhost:3000/catalogue/kinds/app-server
