ext/diagrams/system.py (35 lines of code) (raw):
from diagrams import Cluster, Diagram, Edge
from diagrams.onprem.analytics import Spark
from diagrams.onprem.compute import Server
from diagrams.onprem.network import Gunicorn
from diagrams.programming.framework import Flask
from diagrams.onprem.aggregator import Fluentd
from diagrams.onprem.monitoring import Grafana, Prometheus
from diagrams.onprem.network import Nginx
from diagrams.onprem.database import Mysql
from diagrams.onprem.analytics import Hive
from diagrams.onprem.inmemory import Redis
from diagrams.onprem.container import Docker
from diagrams.programming.language import Python
with Diagram("AB Framework", show=False):
ingress = Nginx("nginx")
metrics = Prometheus("metric")
metrics << Grafana("monitoring")
with Cluster("WSGI server"):
gunicorn = Gunicorn("gunicorn")
flask = [
Flask(""),
Flask(""),
Flask("")
]
with Cluster("data source"):
datasource = Mysql("mysql")
datasource - Redis("redis") - Hive("hive")
with Cluster("engine"):
engine = Python("python")
engine - Spark("spark")
aggregator = Fluentd("logging")
engine >> aggregator
flask - Edge(color="brown") >> datasource >> engine << metrics
flask - Edge(color="gray") >> engine
ingress >> gunicorn >> flask