Skip to main content

Overview

Restate applications exist of two parts: the Restate server and the services it hosts:

Restate overview

This page describes how to deploy Restate and Restate services.

Restate Server

The Restate Server is a single binary that contains everything you need to host an environment. See the Installation page for various ways of obtaining it.

There are a few options for deploying the Restate Server:

Architectural overview

To understand the design and architecture of Restate, it might be helpful to read through the architecture reference.

The server will store metadata and RocksDB data under ./restate-data/<NODE-NAME>. <NODE-NAME> is the name of the Restate server, which is set by the --node-name flag (defaults to hostname). The server requires outbound connectivity to the services you deploy in order to discover and send requests to them.

Exposed Ports

The server process exposes a set of services by default, available on different ports:

NamePortDescriptionProtocol
NodeCtl5122Control port for Restate Server nodesgRPC + HTTP for Prometheus metrics /metrics
Ingress8080Acts as an API gateway for all services registered with Restate
Admin9070Allows for CRUD operations on service/service deployment metadata, eg for service registrationREST
Postgres9071Exposes Restate RocksDB read-only storage operations using the Postgres protocol. See Introspection.Postgres

Restate services

Restate services are deployed as Service deployments. A service deployment can be a Kubernetes pod, a Lambda function, a Knative Service, or any other process reachable at a specific URL. The URL (including path prefix) MUST be unique, meaning that no two deployments with the same URL can be registered with Restate.

Service deployments are considered immutable and to be reachable throughout the entire lifecycle of an invocation. To deploy any change to a service, you should create a new deployment with a new URL. See the versioning documentation for more details on how to update services.

Running services locally

Have a look at the Quickstart to set up your local development environment.

Restate's service protocol

The Restate runtime interacts with service deployments via HTTP using Restate's service protocol.