@startuml !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml !define DEVICONS https://raw.githubusercontent.com/tupadr3/plantuml-icon-font-sprites/master/devicons !define FONTAWESOME https://raw.githubusercontent.com/tupadr3/plantuml-icon-font-sprites/master/font-awesome-5 !include FONTAWESOME/cloud.puml !include DEVICONS/java.puml !include DEVICONS/postgresql.puml !include DEVICONS/redis.puml !include FONTAWESOME/mobile.puml Person(user, "System customer", "uses a smart system") System_Boundary(smartSystem, "Smart House System") { ' frontend super app Container(mobileApp, "Mobile", "Flutter", $descr = "Super app with aggregate another services", $sprite="mobile") ' microservices Container(auth, "Authorization Service", "Java", "The service performs authorization and verifies the user grants", $sprite="java") Container(heating, "Heating Service", "Java", "The service handles requests for smart home heating", $sprite="java") Container(light, "Light Service", "Java", "The service handles requests for smart home lights", $sprite="java") Container(gates, "Gates Service", "Java", "The service handles requests for smart home gates", $sprite="java") Container(video, "Video Service", "Java", "The service handles requests for smart home cameras", $sprite="java") Container(locations, "Location Service", "Java", "The service stores and processes houses and rooms created by the user", $sprite="java") ' databases ContainerDb(authDb, "Authorization Database", "PostgreSQL", $sprite="postgresql", $descr="Stores the user's personal data") ContainerDb(authCache, "Authorization Cache Database", "Redis", $sprite="redis", $descr="Stores session tokens") ContainerDb(heatingDb, "Heating Database", "PostgreSQL", $sprite="postgresql", $descr="Stores data about heating sensors") ContainerDb(lightDb, "Light Database", "PostgreSQL", $sprite="postgresql", $descr="Stores data about light sensors") ContainerDb(gatesDb, "Gates Database", "PostgreSQL", $sprite="postgresql", $descr="Stores data about gates sensors") ContainerDb(videoDb, "Video Database", "PostgreSQL", $sprite="postgresql", $descr="Stores data about video sensors") ContainerDb(locationDb, "Location Database", "PostgreSQL", $sprite="postgresql", $descr="Stores data about the user's houses and rooms") ' sensors cloud Container_Ext(heatingSensor, "Heating Cloud", $descr="Heating Sensor manufacturer's cloud for transmitting commands", $sprite="cloud") Container_Ext(lightSensor, "Light Cloud", $descr="Light Sensor manufacturer's cloud for transmitting commands", $sprite="cloud") Container_Ext(gatesSensor, "Gates Cloud", $descr="Gates Sensor manufacturer's cloud for transmitting commands", $sprite="cloud") Container_Ext(videoSensor, "Video Cloud", $descr="Video Sensor manufacturer's cloud for transmitting commands", $sprite="cloud") } ' microservice relations Rel(user, mobileApp, "Use") Rel(mobileApp, auth, "Makes API calls to", "json|https") Rel(mobileApp, heating, "Makes API calls to", "json|https") Rel(mobileApp, light, "Makes API calls to", "json|https") Rel(mobileApp, gates, "Makes API calls to", "json|https") Rel(mobileApp, video, "Makes API calls to", "json|https") Rel(mobileApp, locations, "Makes API calls to", "json|https") ' database relations Rel(auth, authDb, "Read/Writes|SQL") Rel(auth, authCache, "Read/Writes|TCP") Rel(heating, heatingDb, "Read/Writes|SQL") Rel(light, lightDb, "Read/Writes|SQL") Rel(gates, gatesDb, "Read/Writes|SQL") Rel(video, videoDb, "Read/Writes|SQL") Rel(locations, locationDb, "Read/Writes|SQL") ' cloud relations Rel(heating, heatingSensor, "Send command|https") Rel(light, lightSensor, "Send command|https") Rel(gates, gatesSensor, "Send command|https") Rel(video, videoSensor, "Send command|https") @enduml
Decode URL
Submit
amiga
aws-orange
black-knight
bluegray
blueprint
cerulean-outline
cerulean
crt-amber
crt-green
cyborg-outline
cyborg
hacker
lightgray
mars
materia-outline
materia
metal
mimeograph
minty
plain
reddress-darkblue
reddress-darkgreen
reddress-darkorange
reddress-darkred
reddress-lightblue
reddress-lightgreen
reddress-lightorange
reddress-lightred
sandstone
silver
sketchy-outline
sketchy
spacelab
spacelab-white
superhero-outline
superhero
toy
united
vibrant
🎉 Discover the future PlantUML Web Editor! 🚀
PNG
SVG
ASCII Art