C4 Container Diagram
Major components forming GIAS service, and how they interact with each other and external actors.
This is the container-level view of the system. It shows the major deployable/application building blocks and the main relationships between them, but it does not break the Java back end down into its internal Spring, persistence, extract, and integration components.
How To Read This Diagram
Read the diagram from the outside in:
GIAS User,GIAS AdminandExternal Consumerare actors or systems outside the GIAS application boundary.- The
Get Information about Schools (GIAS)boundary contains the main deployable containers and data stores currently in scope for this view. - The C# web front end calls the Java API application for application behaviour and uses the file store for generated extracts.
- The Java admin and SOAP application is the back-end deployment with the JSP administration interface and SOAP capabilities.
S158refers to a separate production Azure subscription/environment within the CIP tenancy used by DfE Platform Identity for GIAS-related integration workloads.
Diagram key
C4Container
UpdateLayoutConfig($c4ShapeInRow="5", $c4BoundaryInRow="1")
System_Boundary(key, "Diagram key") {
Container(appServiceKey, "Azure App Service", "Application hosting", "")
ContainerDb(storageKey, "Azure Storage", "")
ContainerDb(databaseKey, "Database", "")
Container(functionAppKey, "Azure Function App", "Serverless application hosting", "")
Container(dataFactoryKey, "Azure Data Factory", "Data integration", "")
}
UpdateElementStyle(appServiceKey, $bgColor="#dbeafe", $fontColor="#000000", $borderColor="#1d4ed8")
UpdateElementStyle(storageKey, $bgColor="#fef3c7", $fontColor="#000000", $borderColor="#b45309")
UpdateElementStyle(databaseKey, $bgColor="#bfdbfe", $fontColor="#000000", $borderColor="#1e3a8a")
UpdateElementStyle(functionAppKey, $bgColor="#ccfbf1", $fontColor="#000000", $borderColor="#0f766e")
UpdateElementStyle(dataFactoryKey, $bgColor="#f3e8ff", $fontColor="#000000", $borderColor="#9333ea")
Container diagram
C4Container
UpdateLayoutConfig($c4ShapeInRow="2", $c4BoundaryInRow="2")
Person(user, "GIAS User", "Accesses GIAS through the web interface")
Person(admin, "GIAS Admin", "Uses the JSP administration interface")
System_Ext(externalSystems, "External Consumer", "Systems that download GIAS datasets")
System_Boundary(gias, "Get Information about Schools (GIAS)") {
Container(web, "GIAS Web Front End", "C# ASP.NET Web Application", "Provides the user interface for searching, viewing and<br> managing GIAS data")
Container(adminSoapBackend, "GIAS Admin and SOAP Application", "Java Application with JSP and SOAP", "Back-end deployment with admin JSP and SOAP capabilities.")
Container(apiBackend, "GIAS API Application", "Java REST API Application", "Back-end deployment without the JSP layer.<br>Used by the C# front end.")
ContainerDb(fileStorage, "Extract blob storage", "Azure Blob Storage", "Stores generated ZIP<br>extracts available for download")
Container(providerProfileApi, "Provider Profile API", "Azure Function App", "Provider API in the S158 production environment.<br>Exposes provider lookup functions.")
ContainerDb(db, "GIAS Database", "MS SQL Server", "Stores establishment, governance, user<br> and reference data")
Container(redundantGiasApi, "GIAS API", "Azure Function App", "GIAS API Function App in the S158 production environment.<br>Not currently used.")
Container(dataFactory, "GIAS Data Factory", "Azure Data Factory", "Data integration workload in the S158 production environment for<br> GIAS SQL processing and archive activity.")
}
Rel(user,web, "Browse GIAS data", "HTTPS/HTML")
Rel(admin, adminSoapBackend, "Administers GIAS data<br>using JSP interface", "HTTPS/HTML")
Rel(web, apiBackend, "Calls", "HTTPS")
Rel(web, fileStorage, "Reads generated extracts from", "HTTPS/CSV/ZIP")
Rel(apiBackend, db, "Reads from and writes to", "TCP/SQL")
Rel(apiBackend, fileStorage, "Uses extract blob storage", "HTTPS/CSV/ZIP")
Rel(adminSoapBackend, db, "Reads from and writes to", "TCP/SQL")
Rel(adminSoapBackend, fileStorage, "Uses extract storage", "HTTPS/CSV/ZIP")
Rel(providerProfileApi, db, "Reads provider data from", "SQL over private endpoint")
Rel(redundantGiasApi, db, "Reads", "SQL over private endpoint")
Rel(dataFactory, db, "Reads from and writes to", "SQL over private endpoint")
Rel(externalSystems, web,"Downloads GIAS data","HTTPS/CSV/ZIP")
Rel(externalSystems, adminSoapBackend,"Retrieves GIAS data","HTTPS/SOAP")
UpdateRelStyle(user,web, $offsetX="-30", $offsetY="-170")
UpdateRelStyle(admin, adminSoapBackend, $offsetX="-70", $offsetY="-160")
UpdateRelStyle(externalSystems, web, $offsetX="-170", $offsetY="-80")
UpdateRelStyle(externalSystems, adminSoapBackend, $offsetX="-140", $offsetY="-80")
UpdateRelStyle(apiBackend, db, $offsetX="-210", $offsetY="-30")
UpdateRelStyle(adminSoapBackend, db, $offsetX="40", $offsetY="-130")
UpdateRelStyle(apiBackend, fileStorage, $offsetX="-45", $offsetY="-50")
UpdateRelStyle(adminSoapBackend, fileStorage, $offsetX="-100", $offsetY="-20")
UpdateRelStyle(web, apiBackend, $offsetX="-50", $offsetY="-20")
UpdateRelStyle(providerProfileApi, db, $offsetX="-70", $offsetY="45")
UpdateRelStyle(dataFactory, db, $offsetX="70", $offsetY="10")
UpdateElementStyle(web, $bgColor="#dbeafe", $fontColor="#000000", $borderColor="#1d4ed8")
UpdateElementStyle(apiBackend, $bgColor="#dbeafe", $fontColor="#000000", $borderColor="#1d4ed8")
UpdateElementStyle(adminSoapBackend, $bgColor="#dbeafe", $fontColor="#000000", $borderColor="#1d4ed8")
UpdateElementStyle(providerProfileApi, $bgColor="#ccfbf1", $fontColor="#000000", $borderColor="#0f766e")
UpdateElementStyle(dataFactory, $bgColor="#f3e8ff", $fontColor="#000000", $borderColor="#9333ea")
UpdateElementStyle(db, $bgColor="#bfdbfe", $fontColor="#000000", $borderColor="#1e3a8a")
UpdateElementStyle(fileStorage, $bgColor="#fef3c7", $fontColor="#000000", $borderColor="#b45309")
UpdateElementStyle(redundantGiasApi, $bgColor="#ccfbf1", $fontColor="#000000", $borderColor="#0f766e")
Notes
- For lower-level C# front-end detail, see the front-end component diagram.
- For lower-level Java back-end detail, see the back-end component diagrams.
- The
GIAS APIAzure Function App is shown because it is deployed infrastructure, but it is not currently being used.