Skip to content

docs: describe multi-cloud architecture #12857

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 28 commits into from
Apr 4, 2024
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Refactor the page
  • Loading branch information
mtojek committed Mar 27, 2024
commit 37cfcf601c97c3aab26d1d1d91691e506c03904f
37 changes: 25 additions & 12 deletions docs/about/architecture.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
# Architecture

This document provides a high level overview of Coder's architecture.
The Coder deployment model is flexible and offers various components that
platform administrators can deploy and scale depending on the use cases. This
page describes possible deployments, challenges, and risks associated with them.

## Single region architecture
Learn more about our [Reference Architectures](../admin/architectures/index.md)
and platform scaling capabilities.

![Architecture Diagram](../images/architecture-single-region.png)

## Multi-region architecture

![Architecture Diagram](../images/architecture-multi-region.png)
## Components

## coderd
### coderd

coderd is the service created by running `coder server`. It is a thin API that
connects workspaces, provisioners and users. coderd stores its state in Postgres
Expand All @@ -24,7 +23,7 @@ It offers:
- Workspace Web Applications (e.g easily access code-server)
- Agent registration

## provisionerd
### provisionerd

provisionerd is the execution context for infrastructure modifying providers. At
the moment, the only provider is Terraform (running `terraform`).
Expand All @@ -33,7 +32,7 @@ By default, the Coder server runs multiple provisioner daemons.
[External provisioners](../admin/provisioners.md) can be added for security or
scalability purposes.

## Agents
### Agents

An agent is the Coder service that runs within a user's remote workspace. It
provides a consistent interface for coderd and clients to communicate with
Expand All @@ -50,7 +49,7 @@ Templates are responsible for
[creating and running agents](../templates/index.md#coder-agent) within
workspaces.

## Service Bundling
### Service Bundling

While coderd and Postgres can be orchestrated independently, our default
installation paths bundle them all together into one system service. It's
Expand All @@ -61,7 +60,7 @@ situations that necessitate decomposition:
- Achieving greater availability and efficiency (horizontally scale individual
services)

## Workspaces
### Workspaces

At the highest level, a workspace is a set of cloud resources. These resources
can be VMs, Kubernetes clusters, storage buckets, or whatever else Terraform
Expand All @@ -72,3 +71,17 @@ while those that don't are called _peripheral resources_.

Each resource may also be _persistent_ or _ephemeral_ depending on whether
they're destroyed on workspace stop.

## Deployment models

### Single region architecture

![Architecture Diagram](../images/architecture-single-region.png)

<!-- Single VM, up to 100 users, Docker+sysbox container runtime -->

### Multi-region architecture

![Architecture Diagram](../images/architecture-multi-region.png)

<!-- Run multiple provisioners in each cloud, allowing Coder to deploy against it (zero trust) -->