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 Get Restate page for various ways of obtaining it.

There are a few options for hosting the Restate Server:

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 four services by default, available on different ports:

NamePortDescriptionProtocol
Node-ctrl5122Control port for Restate Server nodesgRPC + HTTP for Prometheus metrics /metrics
Metadata store5123Service used for storing metadata used by the Restate ServergRPC
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 Lambda function, a Kubernetes pod, 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.