# Outpost Deployment

## Outpost Distribution

Outpost is distributed as a binary and as a Docker image.

The binaries are available via [GitHub releases](https://github.com/hookdeck/outpost/releases).

The Docker image can be found on [Docker Hub](https://hub.docker.com/r/hookdeck/outpost/tags).

The Outpost repository provides an [example helm chart](https://github.com/hookdeck/outpost/tree/main/examples/kubernetes) for deployment via Kubernetes.

## Outpost Services

The `outpost` executable has three entry points:

* `delivery`
* `api`
* `log`

Services and other configuration options are set via a YAML file. See the [example Outpost configuration file](https://github.com/hookdeck/outpost/tree/main/.outpost.yaml.example).

You can omit the `service` entry point to start all 3 services within the same process. However, this is not recommended.

## Service Resource Allocation

Since each service has different usage and performance profiles, it's recommended that each service be operated and scaled independently.

![Outpost Architecture](/outpost-images/architecture.png)

:::info

Once we have completed [initial benchmarking](https://github.com/hookdeck/outpost/issues/207), we'll provide guidance on resource allocation based on expected usage and load.

:::

## Dependencies

Outpost requires the following dependencies:

* Redis
* PostgreSQL or ClickHouse
* One of the following message queue systems (for the queues listed below): RabbitMQ, AWS SQS, Azure Service Bus, or GCP Pub/Sub
  
  * Log queue
  * Delivery queue
  * Publish queue (optional)

Each of these will need to be provisioned and allocated sufficient resources based on expected usage and load.