workspace { model { properties { "structurizr.groupSeparator" "/" } customerCompany = group "Customer Company" { group "Private Network" { user = person "User" sut = softwareSystem "System under test" "User software to load test. May be publicly exposed." gatlingServices = softwareSystem "Gatling services" "Manages user side simulations and associated resources." { lg = container "Load Generators" "Instances running Gatling simulations. Generate users activity." "Docker Containers" cp = container "Control Plane" "Agent responsible for managing Load Generator instances lifecycle." "JVM in VM or Docker container" cp -> lg "Creates / Destroy" "Cloud provider API" } } } gatlingNetwork = group "Gatling Network" { enterprise = softwareSystem "Gatling Enterprise Cloud" "Gatling application, manages Gatling simulations and subscriptions." storage = softwareSystem "Artifacts Storage" "Stores and exposes artifacts needed by Gatling services." } lg -> sut "Simulate user load" "Gatling managed protocol" lg -> storage "Get binaries" "HTTPS" lg -> enterprise "Get jobs, send events and stats" "HTTPS" cp -> enterprise "Get jobs" "HTTPS" user -> enterprise "Setup and starts simulations" "HTTPS" enterprise -> storage "Stores simulations packages" "HTTPS" } views { systemLandscape "SystemLandscapeView" { include * } container gatlingServices { include * include customerCompany include gatlingNetwork } theme default } }