49 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from diagrams import Cluster, Diagram, Edge
 | |
| from diagrams.custom import Custom
 | |
| from diagrams.onprem.certificates import LetsEncrypt
 | |
| from diagrams.onprem.database import PostgreSQL
 | |
| from diagrams.onprem.logging import Loki
 | |
| from diagrams.onprem.monitoring import Grafana
 | |
| from diagrams.onprem.network import Nginx
 | |
| from diagrams.programming.flowchart import InputOutput
 | |
| from diagrams.programming.framework import Vue
 | |
| from diagrams.programming.language import Nodejs
 | |
| 
 | |
| with Diagram("Dwengo-1 architectuur", filename="docs/architecture/schema", show=False):
 | |
|     ingress = Nginx("Reverse Proxy")
 | |
|     certificates = LetsEncrypt("SSL")
 | |
| 
 | |
|     with Cluster("Dwengo VZW"):
 | |
|         dwengo = Custom("Dwengo", "../../assets/img/dwengo-groen-zwart.png")
 | |
| 
 | |
|     with Cluster("Dwengo-1"):
 | |
|         frontend = Vue("/")
 | |
|         backend = Nodejs("/api")
 | |
|         identity_provider = Custom("IDP", "../../assets/img/keycloak.png")
 | |
| 
 | |
|         database = PostgreSQL("Database")
 | |
|         orm = InputOutput("MikroORM")
 | |
|         orm >> Edge(label="map") << database
 | |
| 
 | |
|         with Cluster("Observability"):
 | |
|             logging = Loki("Logging")
 | |
|             logging << Edge(color="firebrick", style="dashed") << Grafana("Monitoring")
 | |
| 
 | |
|         dependencies = [
 | |
|             dwengo,
 | |
|             logging,
 | |
|             orm
 | |
|         ]
 | |
| 
 | |
|         backend >> dependencies
 | |
| 
 | |
|     service = [
 | |
|         frontend,
 | |
|         backend,
 | |
|         identity_provider,
 | |
|         certificates
 | |
|     ]
 | |
| 
 | |
|     ingress \
 | |
|     >> Edge(color="darkgreen") \
 | |
|     << service
 |