Skip to content

Commit 6e990b3

Browse files
Split Install/Arch docs, add Terraform (#4415)
Co-authored-by: Dr. Ernie Prabhakar <19791+drernie@users.noreply.github.com> Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
1 parent c060bfc commit 6e990b3

5 files changed

Lines changed: 400 additions & 351 deletions

File tree

docs/Architecture.md

Lines changed: 103 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
<!-- markdownlint-disable -->
2-
# Quilt packages unify data and metadata
2+
# Quilt Architecture
33

4-
Quilt data packages are reproducible, discoverable, and trusted data sets that
5-
live in blob storage.
4+
## Overview
5+
6+
Quilt packages unify data and metadata. Quilt data packages are reproducible, discoverable, and trusted data sets that live in blob storage.
67

78
A package manifest includes both *metadata* and physical keys to primary data.
89

@@ -12,3 +13,102 @@ cluster managed by Quilt. All Quilt package manifests are accessible via SQL
1213
using AWS Athena.
1314

1415
![](imgs/unified-data-metadata.png)
16+
17+
## Enterprise Architecture
18+
19+
Each Quilt instance consists of a CloudFormation stack that is privately hosted in your
20+
AWS account. The stack includes backend services for the web catalog, single sign-on,
21+
user identification and access, an ElasticSearch cluster, and more.
22+
23+
Quilt uses subnets and security groups to isolate network services and runs key
24+
services within the VPC.
25+
26+
A private stack with an inward load balancer is shown below.
27+
28+
![Architecture (private ELBv2)](imgs/network_private.png)
29+
30+
For an internet-facing load balancer the data plane remains the same, as shown below.
31+
32+
![Architecture (public ELBv2)](imgs/network_public.png)
33+
34+
### Network Architecture
35+
36+
You may provide your own VPC and subnets to a Quilt stack or have the Quilt stack
37+
create its own network.
38+
39+
> If you provide the subnets you may choose to reuse subnets across parameters.
40+
> For example you can use the same subnets for the Private and User subnet parameters.
41+
42+
You may optionally provide your own VPC CIDR block
43+
if the default block of 10.0.0.0/16 conflicts with shared or
44+
peered VPC services. We recommend a CIDR block no smaller than /24 (256 addresses)
45+
for production, multi-AZ deployments. Larger CIDR blocks are easier to upgrade to
46+
new Quilt versions with expanded services.
47+
48+
> For cost-sensitive deployments, Quilt ECS services can be configured to use
49+
> a single AZ.
50+
51+
> You may use a combination of interface endpoints and gateway endpoints to
52+
> restrict the data plane traffic shown above to your VPC.
53+
> See [Private endpoint access](advanced-features/private-endpoint-access.md) for more.
54+
55+
#### Production, multi-AZ subnet division for private ELBv2 (you provide the network)
56+
57+
| Type | AZ | Description | Services | IPs needed† |
58+
|------------|----|------------------------|----------|--------------|
59+
| Private | a | Routes to Internet | ECS, Lambda | 32 |
60+
| Private | b | " | " | 32 |
61+
| Intra | a | Does not route to Internet | RDS, OpenSearch* | 32 |
62+
| Intra | b | " | " | 32 |
63+
| User | a | Reachable by GUI catalog users | App load balancer, API Gateway Endpoint | 16 |
64+
| User | b | " | " | 16 |
65+
66+
> \* One IP per master node, one IP per data node
67+
68+
> † Includes 5 IPs for AWS (network, routing, DNS, reserved, broadcast) plus room
69+
> for new services in future updates.
70+
71+
Below are the subnet configurations and sizes for Quilt version 2.0 networks,
72+
new as of June 2023. The configuration is similar to the
73+
[AWS Quick Start VPC](https://aws-quickstart.github.io/quickstart-aws-vpc/).
74+
75+
#### Subnet division when Quilt creates the VPC
76+
77+
- 2 public subnets for NAT gateways and an internet-facing application load balancer
78+
(1/4 the VPC CIDR)
79+
- 2 private subnets for Quilt services in ECS or Lambda, and an inward facing
80+
application load balancer
81+
(1/2 of the VPC CIDR)
82+
- 2 private subnets for intra-VPC traffic to and from the Quilt RDS database and
83+
OpenSearch domain
84+
(1/8 of the VPC CIDR)
85+
- Unused (1/8 of the VPC CIDR)
86+
87+
### Sizing
88+
The Quilt CloudFormation template will automatically configure appropriate instance sizes for RDS, ECS (Fargate), Lambda and Elasticsearch Service. Some users may choose to adjust the size and configuration of their Elasticsearch cluster. All other services should use the default settings.
89+
90+
### Elasticsearch Service Configuration
91+
By default, Quilt configures an Elasticsearch cluster with 3 master nodes and 2 data nodes. Please contact the Quilt support team before adjusting the size and configuration of your cluster to avoid disruption.
92+
93+
### Cost
94+
The infrastructure costs of running a Quilt stack vary with usage. Baseline infrastructure costs start at $620 and go up from there. See below for a breakdown of baseline costs for `us-east-1` at 744 hours per month.
95+
96+
| Service | Cost |
97+
| ------------- | ------------- |
98+
| Elasticsearch Service | $258.42 |
99+
| RDS | $75.56 |
100+
| ECS (Fargate) | $26.64 |
101+
| Lambda | Variable |
102+
| CloudTrail | Variable |
103+
| Athena | Variable |
104+
| **Total** | **$619.03 + Variable Costs** |
105+
106+
## Security Architecture
107+
108+
All customer data and metadata in Quilt is stored in S3. It may also be cached in Elasticsearch Service (shown in red in the diagram below). No other services in the Quilt stack store customer data.
109+
110+
![](imgs/aws-diagram-customer-data.png)
111+
112+
We recommend using [S3 encryption](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html) and [Elasticsearch Service encryption at rest](https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/encryption-at-rest.html) to provide maximum protection.
113+
114+
User email addresses are stored by the Identity Service in RDS Postgres (part of the Quilt stack). User email addresses are also sent through an encrypted channel to the customer support messaging system ([Intercom](https://www.intercom.com/)).

0 commit comments

Comments
 (0)