MNTOR-924/architecture docs for monitor (#3140)

* docs: C4-style diagram for Monitor
This commit is contained in:
Robert Helmer 2023-07-15 19:15:58 -07:00 коммит произвёл GitHub
Родитель c91b40ae8b
Коммит 867d2aa5d8
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
1 изменённых файлов: 107 добавлений и 0 удалений

107
docs/diagrams/workspace.dsl Normal file
Просмотреть файл

@ -0,0 +1,107 @@
workspace {
model {
customer = person "Monitor Customer" "A customer of the service." "Customer"
group "Mozilla" {
supportStaff = person "Customer Service Staff" "Customer service staff." "Mozilla Staff"
accountsAndSubscriptions = softwaresystem "Accounts and Subscriptions" "Authenticates customer and allows subscriptions payments" "Existing system"
monitorSystem = softwaresystem "Monitor" "Allows customers to view information about their breaches and broker cleanup activity, and manage their settings." {
monitorFrontend = container "Monitor Frontend" "Provides access to Monitor to customers via their web browser." "Node/NextJS/React" {
dashboardPanel = component "User dashboard panel" "Shows user current status of breaches and broker cleanup." "JSX"
breachesPanel = component "User breach/broker resolution panel" "Shows current state and allows modifying breach and broker cleanup activities." "JSX"
adminPanel = component "Administrator UI" "Allows Customer Service access to account details" "JSX"
}
monitorBackend = container "Monitor Backend" "Notifies users about and cleans up leaked data on behalf of users." "Node/ExpressJS" {
webHookAPIs = component "Webhook APIs" "Receives breach/broker notifications from partners" "REST/JSON"
scheduledTask = component "Scheduled Task" "Refreshes breaches, data broker cleanup status, and icon data." "Cron"
}
database = container "PostgreSQL" "Stores user settings and breach data."
}
}
group "Providers" {
breachesProvider = softwaresystem "Breaches Provider" "Have I Been Pwned (HIBP)." "Data Provider"
brokersProvider = softwaresystem "Brokers Provider" "OneRep." "Data Provider"
emailProvider = softwaresystem "Email Provider" "Amazon Web Services (AWS) Simple Email Service (SES)." "Cloud Service"
iconsProvider = softwaresystem "Icons Provider" "DuckDuckGo" "Data Provider"
}
# relationships between people and software systems
customer -> monitorFrontend "Views breaches, and initates cleanup using"
customer -> accountsAndSubscriptions "Authenticates and subscribes using"
customer -> emailProvider "receives email from"
// customer -> supportStaff "Asks questions to" "Email"
// supportStaff -> monitorFrontend "Accesses customer details using"
// supportStaff -> accountsAndSubscriptions "Accesses customer details using"
monitorSystem -> emailProvider "emails users breach and broker status updates using"
monitorFrontend -> brokersProvider "initiates cleanup of data brokers using"
monitorFrontend -> emailProvider "Sends email using"
monitorFrontend -> database "Accesses breach/broker data and user settings using"
monitorBackend -> breachesProvider "Gets breach data from"
monitorBackend -> brokersProvider "Gets data broker data from"
monitorBackend -> iconsProvider "Gets icons from"
monitorBackend -> database "Stores breach/broker data using"
monitorBackend -> emailProvider "Sends email using"
webHookAPIs -> emailProvider "Sends email using"
webHookAPIs -> breachesProvider "Receives breach alerts from"
webHookAPIs -> brokersProvider "Receives broker cleanup status from"
webHookAPIs -> database "Stores broker cleanup status data using"
scheduledTask -> database "Stores breach data using"
scheduledTask -> breachesProvider "Fetches breach data using"
scheduledTask -> brokersProvider "Fetches broker data using"
scheduledTask -> iconsProvider "Fetches icons using"
scheduledTask -> emailProvider "Sends email using"
}
views {
systemContext monitorSystem "SystemContext" {
include *
autoLayout
}
container monitorSystem "Containers_Frontend" {
include ->monitorFrontend->
autoLayout
description "The container diagram for the Monitor Frontend."
}
container monitorSystem "Containers_Backend" {
include ->monitorBackend->
autoLayout
description "The container diagram for the Monitor Backend."
}
component monitorFrontend "Components_Frontend" {
include *
autoLayout
description "The component diagram for Monitor Frontend."
}
component monitorBackend "Components_Backend" {
include *
autoLayout
description "The component diagram for the Monitor Backend."
}
styles {
element "Software System:Providers" {
background black
color white
}
element "Software System" {
background #1168bd
color #ffffff
}
element "Person" {
shape person
background #08427b
color #ffffff
}
}
}
}