Architecture
This page outlines the general shape of the Control Plane. For more details, dig into the Components page.
High-Level Design
The Control Plane architecture is simple. There are two main entry points: the Console web app, and the public API for third-party integrations. Control Plane hosts an API Gateway for each, and a collection of microservices to serve each of Marqo Cloud's user-facing capabilities.
Frontend/User Interface
architecture-beta
group ctrl(logos:aws)[Controller]
group cell(logos:aws)[Cell]
service user(logos:chrome)[User]
service python(logos:python)[Library]
service web_api(logos:aws-api-gateway)[Web API Gateway] in ctrl
service public_api(logos:aws-api-gateway)[Public API Gateway] in ctrl
service auth_svc(logos:aws-lambda)[Auth Service] in ctrl
service cf(logos:aws-cloudfront)[CloudFront] in ctrl
service web_bucket(logos:aws-s3)[Web Static Bucket] in ctrl
service web_bff(logos:aws-lambda)[Web BFF] in ctrl
service other(logos:aws-lambda)[Other Microservices] in ctrl
service dp(logos:kubernetes)[Data Plane] in cell
other:R -- L:dp
junction user_j
web_api:R -- L:web_bff
web_bff:B -- T:other
web_api:T -- B:cf
cf:R -- L:web_bucket
web_api:B -- T:auth_svc
auth_svc:R -- L:other
public_api:T -- B:auth_svc
public_api:R -- B:other
user:R -- L:web_api
python:R -- L:public_api
user:B -- T:user_j
user_j:B -- T:python
Backend/Services
architecture-beta
group 3p(cloud)[Third Party]
group ctrl(logos:aws)[Controller]
service user(logos:chrome)[User]
service python(logos:python)[Library]
service stripe(logos:stripe)[Stripe] in 3p
service web_api(logos:aws-api-gateway)[Web API Gateway] in ctrl
service public_api(logos:aws-api-gateway)[Public API Gateway] in ctrl
service cf(logos:aws-cloudfront)[CloudFront] in ctrl
service web_bucket(logos:aws-s3)[Web Static Bucket] in ctrl
service web_bff(logos:aws-lambda)[Web BFF] in ctrl
service ua_svc(logos:aws-lambda)[UsersAccounts Service] in ctrl
service ua_db(logos:aws-dynamodb)[UsersAccounts Table] in ctrl
service key_svc(logos:aws-lambda)[API Key Service] in ctrl
service key_db(logos:aws-dynamodb)[API Key Table] in ctrl
service int_svc(logos:aws-lambda)[Integrations Service] in ctrl
service int_db(logos:aws-dynamodb)[Integrations Table] in ctrl
service index_svc(logos:aws-lambda)[Index Service] in ctrl
service index_db(logos:aws-dynamodb)[IndexConfig Table] in ctrl
service auth_svc(logos:aws-lambda)[Auth Service] in ctrl
service auth_cognito(logos:aws-cognito)[Cognito] in ctrl
service billing_svc(logos:aws-lambda)[Billing Service] in ctrl
junction web_j
junction bff_j
junction bff_jt
junction bff_jb
web_api:R -- L:web_j
web_j:T -- B:auth_svc
web_j:R -- L:web_bff
web_bff:R -- L:bff_j
web_api:T -- B:cf
cf:T -- B:web_bucket
bff_j:T -- B:bff_jt
bff_jt:R -- L:billing_svc
bff_j:R -- L:key_svc
bff_j:B -- T:bff_jb
bff_jb:R -- L:index_svc
bff_jb:B -- T:int_svc
ua_svc:T -- B:ua_db
auth_svc:T -- B:auth_cognito
auth_svc:R -- L:ua_svc
auth_svc:B -- B:key_svc
key_svc:R -- L:key_db
index_svc:R -- L:index_db
int_svc:R -- L:int_db
web_bff:T -- B:ua_svc
billing_svc:R -- L:stripe
user:R -- L:web_api
python:R -- L:public_api
user:B -- T:python