workspace extends ../model.dsl { name "Ignite : Alchemy and Backend System." description "The software architecture of the Retail Labs Ignite Backend System." !identifiers hierarchical model { !ref igniteBESystem { mySql = container "MySQL" "Stores all data for the Ignite Backend System." "MySQL" { tags "Database" } alchemyService = group "Alchemy Service" { alchemy = container "Alchemy" "Alchemy is a stateless data processing engine that processes data for the Ignite Backend System." "AWS" { tags "Data Processing" "Alchemy Service" } salesIngestS3Bucket = container "Sales Ingest S3 Bucket" "Stores all files for the Ignite Backend System." "AWS" { tags "Database" "Alchemy Service" } igniteBackendApplication = container "Ignite Backend Application" { alchemyS3Bucket = component "Alchemy S3 Bucket" "Stores all files for the Ignite Backend System." "AWS" { tags "Database" "Alchemy Service" } salesIngestion = component "Sales Ingestion" "Ingests sales data for the Ignite Backend System." alchemyImportDailyScores = component "Alchemy Import Daily Scores" "Imports daily scores for the Ignite Backend System." graphql -> salesIngestion salesIngestion -> salesIngestS3Bucket salesIngestion -> alchemyS3Bucket alchemyS3Bucket -> alchemy alchemy -> alchemyS3Bucket alchemyS3Bucket -> alchemyImportDailyScores salesIngestion -> mySql alchemyImportDailyScores -> mySql tags "Ignite Group" "Alchemy Service" "Ignite Backend Application" } } publicAPIService = group "Public API Service" { images3Bucket = container "Images S3 Bucket" "Stores all files for the Ignite Backend System." "AWS" { tags "Database" "Public API Service" } cognito = container "Cognito" "Manages user authentication for the Ignite Backend System." "AWS" { tags "Cognito" "Public API Service" } ignitePublicAPI = container "Ignite Public API" { salesPersonInitUpload = component "Sales Person Initial Upload" "Uploads sales person data to the Ignite Backend System." salesPersonUpdate = component "Sales Person Update" "Updates sales person data in the Ignite Backend System." tags "Ignite Group" "Public API Service" "Ignite Public API" graphql -> salesPersonInitUpload graphql -> salesPersonUpdate salesPersonInitUpload -> mySql salesPersonUpdate -> mySql salesPersonInitUpload -> images3Bucket salesPersonUpdate -> images3Bucket salesPersonInitUpload -> cognito salesPersonUpdate -> cognito } } } } views { systemcontext igniteBESystem "SystemContext" { include * animation { igniteBESystem graph } autoLayout lr description "The system context diagram for Alchemy and the Ignite Backend System." properties { structurizr.groups false } } container igniteBESystem "Containers" { include * animation { graph igniteBESystem.igniteBackendApplication igniteBESystem.alchemy igniteBESystem.salesIngestS3Bucket igniteBESystem.mysql igniteBESystem.ignitePublicAPI igniteBESystem.cognito igniteBESystem.images3Bucket igniteBESystem.mysql } description "The container diagram for the Ignite Backend System." properties { structurizr.groups false } } component igniteBESystem.igniteBackendApplication "Containers_Alchemy" { include * /* animation { customer mainframe email webApplication singlePageApplication mobileApp apiApplication database } */ description "The container diagram for the Ignite Backend System." } component igniteBESystem.ignitePublicAPI "Containers_PublicAPI" { include * /* animation { customer mainframe email webApplication singlePageApplication mobileApp apiApplication database } */ autolayout lr description "The container diagram for the Ignite Backend System." } styles { element "Person" { background #555555 color #ffffff shape Person } element "Web Browser" { shape WebBrowser } element "Mobile App" { shape MobileDeviceLandscape } element "Database" { shape Cylinder } element "Cognito" { shape Pipe } element "Component" { background #01CDCA color #000000 } element "Data Processing" { background #232F3E color #ffffff } element "Ignite Group" { background #01CDCA color #ffffff shape RoundedBox } } } }