-
Notifications
You must be signed in to change notification settings - Fork 901
docs: provide hardware recommendations for reference architectures #12534
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
Changes from 30 commits
2dc5f2f
d2e1f42
842ed58
46f3dc2
59654fd
894cddb
fa1215f
43812e6
f68ed34
2987193
1a4dfb9
4721204
233866f
17e5431
ab95ddd
0937f36
67c4604
11dbdd7
776d4c6
6a87a93
813688e
cf29c26
18bd4d2
d36e893
066d6ff
d774ed5
395d300
9ae4b61
701a205
088395a
34c4903
13dee4c
bb26800
40def43
19ea381
627e26f
8d87b34
d0c9fd6
a34ae19
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
# Reference Architecture: up to 1,000 users | ||
|
||
The 1,000 users architecture is designed to cover a wide range of workflows. | ||
Examples of subjects that might utilize this architecture include medium-sized | ||
tech startups, educational units, or small to mid-sized enterprises. | ||
|
||
**Target load**: API: up to 180 RPS | ||
|
||
**High Availability**: non-essential for small deployments | ||
|
||
## Hardware recommendations | ||
|
||
### Coderd nodes | ||
|
||
| Users | Node capacity | Replicas | GCP | AWS | Azure | | ||
| ----------- | ------------------- | -------- | --------------- | ---------- | ----------------- | | ||
| Up to 1,000 | 2 vCPU, 8 GB memory | 1-2 | `n1-standard-2` | `t3.large` | `Standard_D2s_v3` | | ||
|
||
**Footnotes**: | ||
|
||
- For small deployments (ca. 100 users, 10 concurrent workspace builds), it is | ||
acceptable to deploy provisioners on `coderd` nodes. | ||
|
||
### Provisioner nodes | ||
|
||
| Users | Node capacity | Replicas | GCP | AWS | Azure | | ||
| ----------- | -------------------- | ------------------------------ | ---------------- | ------------ | ----------------- | | ||
| Up to 1,000 | 8 vCPU, 32 GB memory | 2 nodes / 30 provisioners each | `t2d-standard-8` | `t3.2xlarge` | `Standard_D8s_v3` | | ||
|
||
**Footnotes**: | ||
|
||
- An external provisioner is deployed as Kubernetes pod. | ||
|
||
### Workspace nodes | ||
|
||
| Users | Node capacity | Replicas | GCP | AWS | Azure | | ||
| ----------- | -------------------- | ----------------------- | ---------------- | ------------ | ----------------- | | ||
| Up to 1,000 | 8 vCPU, 32 GB memory | 64 / 16 workspaces each | `t2d-standard-8` | `t3.2xlarge` | `Standard_D8s_v3` | | ||
|
||
**Footnotes**: | ||
|
||
- Assumed that a workspace user needs at minimum 2 GB memory to perform. We | ||
recommend against over-provisioning memory for developer workloads, as this my | ||
lead to OOMKiller invocations. | ||
- Maximum number of Kubernetes workspace pods per node: 256 | ||
|
||
### Database nodes | ||
|
||
| Users | Node capacity | Replicas | Storage | GCP | AWS | Azure | | ||
| ----------- | ------------------- | -------- | ------- | ------------------ | ------------- | ----------------- | | ||
| Up to 1,000 | 2 vCPU, 8 GB memory | 1 | 512 GB | `db-custom-2-7680` | `db.t3.large` | `Standard_D2s_v3` | |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
# Reference Architecture: up to 2,000 users | ||
|
||
In the 2,000 users architecture, there is a moderate increase in traffic, | ||
suggesting a growing user base or expanding operations. This setup is | ||
well-suited for mid-sized companies experiencing growth or for universities | ||
seeking to accommodate their expanding user populations. | ||
|
||
Users can be evenly distributed between 2 regions or be attached to different | ||
clusters. | ||
|
||
**Target load**: API: up to 300 RPS | ||
|
||
**High Availability**: The mode is _disabled_, but administrators may consider | ||
enabling it for deployment reliability. | ||
mtojek marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
## Hardware recommendations | ||
|
||
### Coderd nodes | ||
|
||
| Users | Node capacity | Replicas | GCP | AWS | Azure | | ||
| ----------- | -------------------- | -------- | --------------- | ----------- | ----------------- | | ||
| Up to 2,000 | 4 vCPU, 16 GB memory | 2 | `n1-standard-4` | `t3.xlarge` | `Standard_D4s_v3` | | ||
mtojek marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
### Provisioner nodes | ||
|
||
| Users | Node capacity | Replicas | GCP | AWS | Azure | | ||
| ----------- | -------------------- | ------------------------------ | ---------------- | ------------ | ----------------- | | ||
| Up to 2,000 | 8 vCPU, 32 GB memory | 4 nodes / 30 provisioners each | `t2d-standard-8` | `t3.2xlarge` | `Standard_D8s_v3` | | ||
|
||
**Footnotes**: | ||
|
||
- An external provisioner is deployed as Kubernetes pod. | ||
- It is not recommended to run provisioner daemons on `coderd` nodes. | ||
- Consider separating provisioners into different namespaces in favor of | ||
zero-trust or multi-cloud deployments. | ||
|
||
### Workspace nodes | ||
|
||
| Users | Node capacity | Replicas | GCP | AWS | Azure | | ||
| ----------- | -------------------- | ------------------------ | ---------------- | ------------ | ----------------- | | ||
| Up to 2,000 | 8 vCPU, 32 GB memory | 128 / 16 workspaces each | `t2d-standard-8` | `t3.2xlarge` | `Standard_D8s_v3` | | ||
|
||
**Footnotes**: | ||
|
||
- Assumed that a workspace user needs 2 GB memory to perform | ||
- Maximum number of Kubernetes workspace pods per node: 256 | ||
- Nodes can be distributed in 2 regions, not necessarily evenly split, depending | ||
on developer team sizes | ||
|
||
### Database nodes | ||
|
||
| Users | Node capacity | Replicas | Storage | GCP | AWS | Azure | | ||
| ----------- | -------------------- | -------- | ------- | ------------------- | -------------- | ----------------- | | ||
| Up to 2,000 | 4 vCPU, 16 GB memory | 1 | 1 TB | `db-custom-4-15360` | `db.t3.xlarge` | `Standard_D4s_v3` | | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We've been using a There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. On the other hand, our scaletesting methology was really aggressive, so I would expect a similar pattern on the user side 🤔 |
||
|
||
**Footnotes**: | ||
|
||
- Consider adding more replicas if the workspace activity is higher than 500 | ||
workspace builds per day. | ||
mtojek marked this conversation as resolved.
Show resolved
Hide resolved
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
# Reference Architecture: up to 3,000 users | ||
|
||
The 3,000 users architecture targets large-scale enterprises, possibly with | ||
on-premises network and cloud deployments. | ||
|
||
**Target load**: API: up to 550 RPS | ||
|
||
**High Availability**: Typically, such scale requires a fully-managed HA | ||
PostgreSQL service, and all Coder observability features enabled for operational | ||
purposes. | ||
mtojek marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
## Hardware recommendations | ||
|
||
### Coderd nodes | ||
|
||
| Users | Node capacity | Replicas | GCP | AWS | Azure | | ||
| ----------- | -------------------- | -------- | --------------- | ----------- | ----------------- | | ||
| Up to 3,000 | 8 vCPU, 32 GB memory | 4 | `n1-standard-4` | `t3.xlarge` | `Standard_D4s_v3` | | ||
|
||
### Provisioner nodes | ||
|
||
| Users | Node capacity | Replicas | GCP | AWS | Azure | | ||
| ----------- | -------------------- | ------------------------ | ---------------- | ------------ | ----------------- | | ||
| Up to 3,000 | 8 vCPU, 32 GB memory | 8 / 30 provisioners each | `t2d-standard-8` | `t3.2xlarge` | `Standard_D8s_v3` | | ||
|
||
**Footnotes**: | ||
|
||
- An external provisioner is deployed as Kubernetes pod. | ||
- It is strongly discouraged to run provisioner daemons on `coderd` nodes. | ||
mtojek marked this conversation as resolved.
Show resolved
Hide resolved
|
||
- Separate provisioners into different namespaces in favor of zero-trust or | ||
multi-cloud deployments. | ||
|
||
### Workspace nodes | ||
|
||
| Users | Node capacity | Replicas | GCP | AWS | Azure | | ||
| ----------- | -------------------- | ------------------------------ | ---------------- | ------------ | ----------------- | | ||
| Up to 3,000 | 8 vCPU, 32 GB memory | 256 nodes / 12 workspaces each | `t2d-standard-8` | `t3.2xlarge` | `Standard_D8s_v3` | | ||
|
||
**Footnotes**: | ||
|
||
- Assumed that a workspace user needs 2 GB memory to perform | ||
- Maximum number of Kubernetes workspace pods per node: 256 | ||
- As workspace nodes can be distributed between regions, on-premises networks | ||
and cloud areas, consider different namespaces in favor of zero-trust or | ||
multi-cloud deployments. | ||
|
||
### Database nodes | ||
|
||
| Users | Node capacity | Replicas | Storage | GCP | AWS | Azure | | ||
| ----------- | -------------------- | -------- | ------- | ------------------- | --------------- | ----------------- | | ||
| Up to 3,000 | 8 vCPU, 32 GB memory | 2 | 1.5 TB | `db-custom-8-30720` | `db.t3.2xlarge` | `Standard_D8s_v3` | | ||
|
||
**Footnotes**: | ||
|
||
- Consider adding more replicas if the workspace activity is higher than 1500 | ||
workspace builds per day. |
Uh oh!
There was an error while loading. Please reload this page.