Skip to content

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