Skip to content

Instantly share code, notes, and snippets.

@justiandre
Created June 29, 2020 01:02
Show Gist options
  • Save justiandre/c7d0ea6ef42f9d7c18f7e0e920863f2a to your computer and use it in GitHub Desktop.
Save justiandre/c7d0ea6ef42f9d7c18f7e0e920863f2a to your computer and use it in GitHub Desktop.
Model C4 - UCS systems
@startuml
!include <C4/C4_Context.puml>
!include <C4/C4_Container.puml>
!include <office/Users/user.puml>
LAYOUT_WITH_LEGEND()
title UCS - High Level
Person(OperatorMeli, Operator Meli, "<$user>")
System_Boundary(Fury, "Fury") {
System_Boundary(Backoffice, "Backoffice") {
System_Boundary(UCSFrontend, "UCS Frontend Module") {
Container(UCSFrontendRegistry, "Registry","JS + Nordic")
Container(UCSFrontendSorter, "Sorter","JS + Nordic")
Container(UCSFrontendSorterEvents, "Sorter Events","JS + Nordic")
}
}
System_Boundary(UCSRegistry, "UCS Registry") {
Container(Registry, "Registry", "Golang")
ContainerDb(RegistryDB, "Database", "MySQL")
}
System_Boundary(UCSSorter, "UCS Sorter") {
Container(Sorter, "Sorter", "Golang")
ContainerDb(SorterDB, "Database", "MySQL")
}
System_Boundary(UCSSorterEvents, "UCS Sorter Events") {
Container(SorterEvents, "Sorter Events", "Golang")
ContainerDb(SorterEventsDB, "Database", "MySQL")
}
System_Boundary(UCSMeasures, "UCS Measures") {
Container(Measures, "Measures", "Golang")
}
System_Boundary(UCSPrinter, "UCS Printer") {
Container(Printer, "Printer", "Golang")
}
System_Boundary(UCSDeviceState, "UCS Device State") {
Container(DeviceState, "DeviceState", "Golang")
}
System_Boundary(BigQ, "BigQ") {
System_Ext(BigQTopic, "Topic")
System_Ext(BigQConsumer, "Consumer")
}
System_Ext(OtherMeliApps, "Other Meli Apps")
}
System_Boundary(LogisticCenter, "Logistic Centers") {
Container(LogisticCenterPrinters, "Printers", "Device")
Container(LogisticCenterSorters, "Sorters", "Backend")
}
' Users > Frontend
Rel(OperatorMeli, UCSFrontendRegistry, "Manages Devices")
Rel(OperatorMeli, UCSFrontendSorter, "Manages Sorter")
Rel(OperatorMeli, UCSFrontendSorterEvents, "Analyzes metrics of Sorter")
' Frontend > API
Rel(UCSFrontendRegistry, Registry, "Manages Devices")
Rel(UCSFrontendRegistry, DeviceState, "Updates Device status")
Rel(UCSFrontendSorter, Sorter, "Manages Sorter settings")
Rel(UCSFrontendSorterEvents, SorterEvents, "Recovers metrics from Sorter")
' API > API
Rel(Printer, Registry, "Recovers Printer settings")
Rel(Sorter, Registry, "Recovers Sorter settings")
Rel(Sorter, Measures, "Send Measures")
' API > DB
Rel_Back_Neighbor(RegistryDB, Registry, "Reads from and writes to")
Rel_Back_Neighbor(SorterDB, Sorter, "Reads from and writes to")
Rel_Back_Neighbor(SorterEventsDB, SorterEvents, "Reads from and writes to")
' API > LogisticCenter
Rel(Printer, LogisticCenterPrinters, "Send Print")
Rel(Sorter, LogisticCenterSorters, "Send ramp configuration per package")
Rel(LogisticCenterSorters, Sorter, "Sends events that occurred in the sorter")
' API > BigQ
Rel_Back_Neighbor(BigQTopic, BigQConsumer, "Send messages")
Rel(Sorter, BigQTopic, "Send messages")
Rel(BigQConsumer, SorterEvents, "Read messages")
Rel(Measures, BigQTopic, "Send messages")
Rel(BigQConsumer, Measures, "Read messages")
' OtherMeliApps > API
Rel(OtherMeliApps, Registry, "Recovers device informations")
Rel(OtherMeliApps, Printer, "Send Print request")
Rel(OtherMeliApps, Sorter, "Send package configurations")
@enduml
@justiandre
Copy link
Author

ucs-model

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment