Skip to content

Commit f922be8

Browse files
authored
Merge pull request #4 from metno/1-make-container-diagram-show-on-github
1 make container diagram show on GitHub
2 parents 88b8638 + dc1e193 commit f922be8

1 file changed

Lines changed: 24 additions & 48 deletions

File tree

README.md

Lines changed: 24 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -55,55 +55,31 @@ The application is made up of several binaries working together.
5555

5656
### C4 container diagram
5757

58-
```plantuml
59-
@startuml
60-
!include <C4/C4_Context.puml>
61-
!include <C4/C4_Container.puml>
62-
!include <office/Users/user.puml>
63-
64-
Person_Ext(yr, "yr.no (EKP)", "yr.no including apps and web page")
65-
System_Ext(pingdom, "Pingdom (EXT)", "Health checks")
66-
67-
System_Boundary(metno, "Met") {
68-
System_Ext(api_met_no, "api.met.no (EKS)")
69-
System_Ext(ecflow, "ecflow ppi jobs (INT)")
70-
System_Ext(grafana, "Grafana (INT)", "Team Punkt's grafana server")
71-
}
72-
73-
System_Boundary(forti, "Forti") {
74-
Container(fortiup, "fortiup (INT)", "Go command-line program", "Upload Forti netcdf dataset from filesystem.")
75-
System_Boundary(azure, "Azure") {
76-
System(azureblob, "Azure Blob Storage (SAS)")
77-
System_Boundary(k8s, "Kubernetes") {
78-
System(ingress, "Ingress controller (EKS)")
79-
Container(healthz, "Healthz (INT)", "Go web server", "Periodically run integration tests and deliver status over REST.")
80-
System(prometheus, "Prometheus (INT)", "Provides insights into performance and other statistics about each forti component. Prometheus web server is password-protected.")
81-
System_Boundary(core, "Core") {
82-
Container(frontends, "Frontends (INT)", "Go web servers", "Several systems. Serve point forecast timeseries over REST in geojson, xml or other formats.<br>Each instance differs in output format only.")
83-
Container(correctedforecaster, "Correctedforecaster (INT)", "Go GRPC server", "Request forecast data, adjust and serve.")
84-
Container(rawdataforecaster, "Rawdataforecaster (INT)", "Go GRPC server", "Serve forecast timeseries from memory cache or blob storage.")
85-
Rel(frontends, correctedforecaster, "grpc req/reply (lvl 2)")
86-
Rel(correctedforecaster, rawdataforecaster, "grpc req/reply (lvl 2)")
87-
}
88-
Rel(ingress, frontends, "http (lvl 2)")
89-
Rel(ingress, healthz, "http (lvl 2)")
90-
Rel(ingress, prometheus, "http (lvl 2)")
91-
Rel(healthz, ingress, "rest (lvl 2)")
92-
Rel(correctedforecaster, azureblob, "Download topography (lvl 2)")
93-
Rel_R(prometheus, frontends, "http (lvl 2)")
94-
Rel_R(prometheus, correctedforecaster, "http (lvl 2)")
95-
Rel_R(prometheus, rawdataforecaster, "http (lvl 2)")
58+
```mermaid
59+
C4Container
60+
title C4 Container Diagram - Forti
61+
62+
Person_Ext(client, "API Client", "Consumes forecast data over REST")
63+
Person_Ext(dataloader, "Dataset Loader", "Loads forecast datasets into the forti object store")
64+
65+
Boundary(forti, "Forti") {
66+
Boundary(core, "Core") {
67+
Container(frontends, "Frontends", "Go", "Serve point forecast timeseries over REST")
68+
Container(correctedforecaster, "Correctedforecaster", "Go GRPC", "Post-process and serve forecast data")
69+
Container(rawdataforecaster, "Rawdataforecaster", "Go GRPC", "Serve forecast from cache or object store")
70+
}
71+
Boundary(support, "Support") {
72+
System(objectstore, "Object Store", "Stores forecast datasets")
73+
Container(healthz, "Healthz", "Go", "Runs integration tests and reports health")
74+
System(prometheus, "Prometheus", "Collects metrics from Forti components")
9675
}
97-
Rel_R(rawdataforecaster, azureblob, "Read forecast data (lvl 2)")
9876
}
99-
Rel(fortiup, azureblob, "Upload forecast data(lvl 2)")
100-
}
101-
102-
Rel_D(grafana, ingress, "https (lvl 0)")
103-
Rel_D(ecflow, fortiup, "calls program")
10477
105-
Rel_D(yr, ingress, "rest (lvl 0)")
106-
Rel_D(api_met_no, ingress, "rest (lvl 0)")
107-
Rel_D(pingdom, ingress, "https (lvl 0)")
78+
Rel(client, frontends, "http")
79+
Rel(frontends, correctedforecaster, "grpc")
80+
Rel(correctedforecaster, rawdataforecaster, "grpc")
10881
109-
@enduml```
82+
Rel(dataloader, objectstore, "Upload forecast data")
83+
Rel(correctedforecaster, objectstore, "Download topography")
84+
Rel(rawdataforecaster, objectstore, "Read forecast data")
85+
```

0 commit comments

Comments
 (0)