Skip to content

Commit bed0d85

Browse files
authored
docs: provide hardware recommendations for reference architectures (#12534)
1 parent 259d7fc commit bed0d85

File tree

7 files changed

+544
-180
lines changed

7 files changed

+544
-180
lines changed

docs/admin/architectures/1k-users.md

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# Reference Architecture: up to 1,000 users
2+
3+
The 1,000 users architecture is designed to cover a wide range of workflows.
4+
Examples of subjects that might utilize this architecture include medium-sized
5+
tech startups, educational units, or small to mid-sized enterprises.
6+
7+
**Target load**: API: up to 180 RPS
8+
9+
**High Availability**: non-essential for small deployments
10+
11+
## Hardware recommendations
12+
13+
### Coderd nodes
14+
15+
| Users | Node capacity | Replicas | GCP | AWS | Azure |
16+
| ----------- | ------------------- | ------------------- | --------------- | ---------- | ----------------- |
17+
| Up to 1,000 | 2 vCPU, 8 GB memory | 1-2 / 1 coderd each | `n1-standard-2` | `t3.large` | `Standard_D2s_v3` |
18+
19+
**Footnotes**:
20+
21+
- For small deployments (ca. 100 users, 10 concurrent workspace builds), it is
22+
acceptable to deploy provisioners on `coderd` nodes.
23+
24+
### Provisioner nodes
25+
26+
| Users | Node capacity | Replicas | GCP | AWS | Azure |
27+
| ----------- | -------------------- | ------------------------------ | ---------------- | ------------ | ----------------- |
28+
| Up to 1,000 | 8 vCPU, 32 GB memory | 2 nodes / 30 provisioners each | `t2d-standard-8` | `t3.2xlarge` | `Standard_D8s_v3` |
29+
30+
**Footnotes**:
31+
32+
- An external provisioner is deployed as Kubernetes pod.
33+
34+
### Workspace nodes
35+
36+
| Users | Node capacity | Replicas | GCP | AWS | Azure |
37+
| ----------- | -------------------- | ----------------------- | ---------------- | ------------ | ----------------- |
38+
| Up to 1,000 | 8 vCPU, 32 GB memory | 64 / 16 workspaces each | `t2d-standard-8` | `t3.2xlarge` | `Standard_D8s_v3` |
39+
40+
**Footnotes**:
41+
42+
- Assumed that a workspace user needs at minimum 2 GB memory to perform. We
43+
recommend against over-provisioning memory for developer workloads, as this my
44+
lead to OOMKiller invocations.
45+
- Maximum number of Kubernetes workspace pods per node: 256
46+
47+
### Database nodes
48+
49+
| Users | Node capacity | Replicas | Storage | GCP | AWS | Azure |
50+
| ----------- | ------------------- | -------- | ------- | ------------------ | ------------- | ----------------- |
51+
| Up to 1,000 | 2 vCPU, 8 GB memory | 1 | 512 GB | `db-custom-2-7680` | `db.t3.large` | `Standard_D2s_v3` |

docs/admin/architectures/2k-users.md

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Reference Architecture: up to 2,000 users
2+
3+
In the 2,000 users architecture, there is a moderate increase in traffic,
4+
suggesting a growing user base or expanding operations. This setup is
5+
well-suited for mid-sized companies experiencing growth or for universities
6+
seeking to accommodate their expanding user populations.
7+
8+
Users can be evenly distributed between 2 regions or be attached to different
9+
clusters.
10+
11+
**Target load**: API: up to 300 RPS
12+
13+
**High Availability**: The mode is _enabled_; multiple replicas provide higher
14+
deployment reliability under load.
15+
16+
## Hardware recommendations
17+
18+
### Coderd nodes
19+
20+
| Users | Node capacity | Replicas | GCP | AWS | Azure |
21+
| ----------- | -------------------- | ----------------------- | --------------- | ----------- | ----------------- |
22+
| Up to 2,000 | 4 vCPU, 16 GB memory | 2 nodes / 1 coderd each | `n1-standard-4` | `t3.xlarge` | `Standard_D4s_v3` |
23+
24+
### Provisioner nodes
25+
26+
| Users | Node capacity | Replicas | GCP | AWS | Azure |
27+
| ----------- | -------------------- | ------------------------------ | ---------------- | ------------ | ----------------- |
28+
| Up to 2,000 | 8 vCPU, 32 GB memory | 4 nodes / 30 provisioners each | `t2d-standard-8` | `t3.2xlarge` | `Standard_D8s_v3` |
29+
30+
**Footnotes**:
31+
32+
- An external provisioner is deployed as Kubernetes pod.
33+
- It is not recommended to run provisioner daemons on `coderd` nodes.
34+
- Consider separating provisioners into different namespaces in favor of
35+
zero-trust or multi-cloud deployments.
36+
37+
### Workspace nodes
38+
39+
| Users | Node capacity | Replicas | GCP | AWS | Azure |
40+
| ----------- | -------------------- | ------------------------ | ---------------- | ------------ | ----------------- |
41+
| Up to 2,000 | 8 vCPU, 32 GB memory | 128 / 16 workspaces each | `t2d-standard-8` | `t3.2xlarge` | `Standard_D8s_v3` |
42+
43+
**Footnotes**:
44+
45+
- Assumed that a workspace user needs 2 GB memory to perform
46+
- Maximum number of Kubernetes workspace pods per node: 256
47+
- Nodes can be distributed in 2 regions, not necessarily evenly split, depending
48+
on developer team sizes
49+
50+
### Database nodes
51+
52+
| Users | Node capacity | Replicas | Storage | GCP | AWS | Azure |
53+
| ----------- | -------------------- | -------- | ------- | ------------------- | -------------- | ----------------- |
54+
| Up to 2,000 | 4 vCPU, 16 GB memory | 1 | 1 TB | `db-custom-4-15360` | `db.t3.xlarge` | `Standard_D4s_v3` |
55+
56+
**Footnotes**:
57+
58+
- Consider adding more replicas if the workspace activity is higher than 500
59+
workspace builds per day or to achieve higher RPS.

docs/admin/architectures/3k-users.md

+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# Reference Architecture: up to 3,000 users
2+
3+
The 3,000 users architecture targets large-scale enterprises, possibly with
4+
on-premises network and cloud deployments.
5+
6+
**Target load**: API: up to 550 RPS
7+
8+
**High Availability**: Typically, such scale requires a fully-managed HA
9+
PostgreSQL service, and all Coder observability features enabled for operational
10+
purposes.
11+
12+
**Observability**: Deploy monitoring solutions to gather Prometheus metrics and
13+
visualize them with Grafana to gain detailed insights into infrastructure and
14+
application behavior. This allows operators to respond quickly to incidents and
15+
continuously improve the reliability and performance of the platform.
16+
17+
## Hardware recommendations
18+
19+
### Coderd nodes
20+
21+
| Users | Node capacity | Replicas | GCP | AWS | Azure |
22+
| ----------- | -------------------- | ----------------- | --------------- | ----------- | ----------------- |
23+
| Up to 3,000 | 8 vCPU, 32 GB memory | 4 / 1 coderd each | `n1-standard-4` | `t3.xlarge` | `Standard_D4s_v3` |
24+
25+
### Provisioner nodes
26+
27+
| Users | Node capacity | Replicas | GCP | AWS | Azure |
28+
| ----------- | -------------------- | ------------------------ | ---------------- | ------------ | ----------------- |
29+
| Up to 3,000 | 8 vCPU, 32 GB memory | 8 / 30 provisioners each | `t2d-standard-8` | `t3.2xlarge` | `Standard_D8s_v3` |
30+
31+
**Footnotes**:
32+
33+
- An external provisioner is deployed as Kubernetes pod.
34+
- It is strongly discouraged to run provisioner daemons on `coderd` nodes at
35+
this level of scale.
36+
- Separate provisioners into different namespaces in favor of zero-trust or
37+
multi-cloud deployments.
38+
39+
### Workspace nodes
40+
41+
| Users | Node capacity | Replicas | GCP | AWS | Azure |
42+
| ----------- | -------------------- | ------------------------------ | ---------------- | ------------ | ----------------- |
43+
| Up to 3,000 | 8 vCPU, 32 GB memory | 256 nodes / 12 workspaces each | `t2d-standard-8` | `t3.2xlarge` | `Standard_D8s_v3` |
44+
45+
**Footnotes**:
46+
47+
- Assumed that a workspace user needs 2 GB memory to perform
48+
- Maximum number of Kubernetes workspace pods per node: 256
49+
- As workspace nodes can be distributed between regions, on-premises networks
50+
and cloud areas, consider different namespaces in favor of zero-trust or
51+
multi-cloud deployments.
52+
53+
### Database nodes
54+
55+
| Users | Node capacity | Replicas | Storage | GCP | AWS | Azure |
56+
| ----------- | -------------------- | -------- | ------- | ------------------- | --------------- | ----------------- |
57+
| Up to 3,000 | 8 vCPU, 32 GB memory | 2 | 1.5 TB | `db-custom-8-30720` | `db.t3.2xlarge` | `Standard_D8s_v3` |
58+
59+
**Footnotes**:
60+
61+
- Consider adding more replicas if the workspace activity is higher than 1500
62+
workspace builds per day or to achieve higher RPS.

0 commit comments

Comments
 (0)