bazzar/docs/infrastructure.puml

353 lines
7.5 KiB
Plaintext
Raw Normal View History

2022-11-07 10:25:57 +01:00
@startuml
'https://plantuml.com/deployment-diagram
scale 1000
rectangle "API" {
2022-11-07 16:28:51 +01:00
' left to right direction
2023-06-20 07:03:15 +02:00
node "myco"
2022-11-07 10:25:57 +01:00
queue rumqttd
2022-11-07 16:28:51 +01:00
component "Accounts" {
2022-11-07 10:25:57 +01:00
node "account-manager"
2023-06-20 07:03:15 +02:00
database myco_accounts [
2022-11-07 16:28:51 +01:00
PostgreSQL
---
2023-06-20 07:03:15 +02:00
myco_accounts
2022-11-07 16:28:51 +01:00
]
2022-11-07 10:25:57 +01:00
2023-06-20 07:03:15 +02:00
"account-manager" <-up-> myco_accounts
2022-11-07 10:25:57 +01:00
"account-manager" --> rumqttd : emit event
2022-11-07 16:28:51 +01:00
usecase create_account [
Create
account
]
usecase me [
Me
]
usecase load_public_info [
Load
public
info
]
usecase delete_account [
Delete
account
]
usecase update_account [
Update
account
]
2022-11-07 10:25:57 +01:00
2022-11-07 16:28:51 +01:00
"account-manager" -- create_account
"account-manager" -- me
"account-manager" -- load_public_info
"account-manager" -- delete_account
"account-manager" -- update_account
2022-11-07 10:25:57 +01:00
}
2022-11-07 16:28:51 +01:00
component "Carts" {
2022-11-07 10:25:57 +01:00
node "cart-manager"
2023-06-20 07:03:15 +02:00
database myco_carts [
2022-11-07 16:28:51 +01:00
PostgreSQL
---
2023-06-20 07:03:15 +02:00
myco_carts
2022-11-07 16:28:51 +01:00
]
2023-06-20 07:03:15 +02:00
"cart-manager" <-up-> myco_carts
2022-11-07 16:28:51 +01:00
usecase modify_item [
Modify
item
]
usecase remove_product [
Remove
product
]
usecase modify_cart [
Modify
cart
]
usecase active_shopping_cart [
Active
shopping
cart
]
active_shopping_cart <-- rumqttd : account created
remove_product <-- rumqttd : product deleted
2022-11-07 10:25:57 +01:00
2022-11-07 16:28:51 +01:00
"cart-manager" -- modify_item
"cart-manager" -- remove_product
"cart-manager" -- modify_cart
"cart-manager" -- active_shopping_cart
2022-11-07 10:25:57 +01:00
}
2022-11-07 16:28:51 +01:00
component "Search" {
2022-11-07 10:25:57 +01:00
node "search-manager"
database "sonic"
2022-11-07 16:28:51 +01:00
"search-manager" <-up-> "sonic"
usecase suggest [
Suggest
]
usecase search [
Search
]
usecase create_index [
Create
index
]
usecase delete_index [
Delete
index
]
create_index <-- rumqttd : product created
delete_index <-- rumqttd : product deleted
"search-manager" -- suggest
"search-manager" -- search
"search-manager" -- create_index
"search-manager" -- delete_index
2022-11-07 10:25:57 +01:00
}
2022-11-07 16:28:51 +01:00
component "Stocks" {
2022-11-07 10:25:57 +01:00
node "stock-manager"
2023-06-20 07:03:15 +02:00
database myco_stocks [
2022-11-07 16:28:51 +01:00
PostgreSQL
---
2023-06-20 07:03:15 +02:00
myco_stocks
2022-11-07 16:28:51 +01:00
]
2022-11-07 10:25:57 +01:00
2023-06-20 07:03:15 +02:00
"stock-manager" <-up-> myco_stocks
2022-11-07 10:25:57 +01:00
"stock-manager" --> rumqttd : emit event
2022-11-07 16:28:51 +01:00
circle product [
Product
]
usecase create_product [
Create
product
]
usecase update_product [
Update
product
]
usecase delete_product [
Delete
product
]
circle product_variant [
Product
variant
]
usecase add_product_variant [
Add
product
variant
]
usecase update_product_variant [
Update
product
variant
]
usecase delete_product_variant [
Delete
product
variant
]
circle product_photo [
Product
photo
]
usecase add_product_photo [
Add
product
photo
]
usecase remove_product_photo [
Remove
product
photo
]
circle product_stock [
Product
stock
]
usecase update_product_stock [
Update
product
stock
]
usecase load_detailed_products [
Load
detailed
products
]
usecase load_single_product [
Load
single
product
]
"stock-manager" -- product
product -- create_product
product -- update_product
product -- delete_product
"stock-manager" -- product_variant
product_variant -- add_product_variant
product_variant -- update_product_variant
product_variant -- delete_product_variant
"stock-manager" -- product_photo
product_photo -- add_product_photo
product_photo -- remove_product_photo
"stock-manager" -- product_stock
product_stock -- update_product_stock
"stock-manager" -- load_detailed_products
"stock-manager" -- load_single_product
2022-11-07 10:25:57 +01:00
}
component "E-Mail Sender" {
node "email-sender"
cloud "sendgrid"
2022-11-07 16:28:51 +01:00
"email-sender" -up-> "sendgrid"
usecase welcome [
Welcome
]
usecase reset_password [
Reset
password
]
usecase goodbye [
Reset
password
]
welcome <-- rumqttd : account created
goodbye <-- rumqttd : account deleted
"email-sender" -- welcome
"email-sender" -- reset_password
"email-sender" -- goodbye
2022-11-07 10:25:57 +01:00
}
2022-11-07 16:28:51 +01:00
component "Payments" {
node "payment-manager"
cloud payment_service [
Payment
cloud
service
]
2023-06-20 07:03:15 +02:00
database myco_payments [
2022-11-07 16:28:51 +01:00
PostgreSQL
---
2023-06-20 07:03:15 +02:00
myco_payments
2022-11-07 16:28:51 +01:00
]
2022-11-07 10:25:57 +01:00
2022-11-07 16:28:51 +01:00
"payment-manager" <-up(0)-> payment_service : http
2023-06-20 07:03:15 +02:00
"payment-manager" <-up-> myco_payments
2022-11-07 16:28:51 +01:00
"payment-manager" --> rumqttd : emit event
2022-11-07 10:25:57 +01:00
2022-11-07 16:28:51 +01:00
usecase request [
Request
payment
]
usecase update_state [
Update
payment
state
]
"payment-manager" -- request
"payment-manager" -- update_state
}
component "Orders" {
node "order-manager"
2023-06-20 07:03:15 +02:00
database myco_orders [
2022-11-07 16:28:51 +01:00
PostgreSQL
---
2023-06-20 07:03:15 +02:00
myco_orders
2022-11-07 16:28:51 +01:00
]
2023-06-20 07:03:15 +02:00
"order-manager" <-up-> myco_orders
2022-11-07 16:28:51 +01:00
"order-manager" --> rumqttd : emit event
usecase create_order [
Create
order
]
usecase update_order_state [
Update
order
state
]
update_order_state <-- rumqttd : payment_status_changed
usecase cancel_order [
Cancel
order
]
"order-manager" -- create_order
"order-manager" -- update_order_state
"order-manager" -- cancel_order
2022-11-07 10:25:57 +01:00
}
2022-11-07 16:28:51 +01:00
component "Tokens" {
node "token-manager"
2023-06-20 07:03:15 +02:00
database myco_tokens [
2022-11-07 16:28:51 +01:00
PostgreSQL
---
2023-06-20 07:03:15 +02:00
myco_tokens
2022-11-07 16:28:51 +01:00
]
2023-06-20 07:03:15 +02:00
"token-manager" <-up-> myco_tokens
2022-11-07 16:28:51 +01:00
"token-manager" --> rumqttd : emit event
usecase create_jwt [
Create
JWT
]
usecase validate_jwt [
Validate
JWT
]
usecase refresh_jwt [
Refresh
JWT
]
"token-manager" -- create_jwt
"token-manager" -- validate_jwt
"token-manager" -- refresh_jwt
}
rectangle {
actor " rumqttd"
2023-06-20 07:03:15 +02:00
"myco" -- "Accounts" : rpc
"myco" -- "Carts" : rpc
"myco" -- "Stocks" : rpc
"myco" -- "Search" : rpc
"myco" -- "E-Mail" : rpc
"myco" -- "Tokens" : rpc
"myco" -- "Payments" : rpc
"myco" --> " rumqttd" : emit event
2022-11-07 16:28:51 +01:00
}
}
2022-11-07 10:25:57 +01:00
@enduml