|
@@ -211,42 +211,36 @@ from diagrams.onprem.database import PostgreSQL |
|
|
from diagrams.onprem.inmemory import Redis |
|
|
from diagrams.onprem.inmemory import Redis |
|
|
from diagrams.onprem.logging import Fluentd |
|
|
from diagrams.onprem.logging import Fluentd |
|
|
from diagrams.onprem.monitoring import Grafana, Prometheus |
|
|
from diagrams.onprem.monitoring import Grafana, Prometheus |
|
|
from diagrams.onprem.network import Linkerd, Nginx |
|
|
|
|
|
|
|
|
from diagrams.onprem.network import Nginx |
|
|
from diagrams.onprem.queue import Kafka |
|
|
from diagrams.onprem.queue import Kafka |
|
|
from diagrams.onprem.workflow import Airflow |
|
|
|
|
|
|
|
|
|
|
|
with Diagram("On-Premise System Architecture", show=False): |
|
|
with Diagram("On-Premise System Architecture", show=False): |
|
|
ingress = Nginx("ingress") |
|
|
ingress = Nginx("ingress") |
|
|
|
|
|
|
|
|
with Cluster("Service Cluster"): |
|
|
|
|
|
svcmesh = Linkerd("svcmesh") |
|
|
|
|
|
grpcsvc = [Server("grpc1"), Server("grpc2"), Server("grpc3")] |
|
|
|
|
|
svcmesh >> grpcsvc |
|
|
|
|
|
|
|
|
|
|
|
with Cluster("Database HA"): |
|
|
|
|
|
maindb_master = PostgreSQL("maindb") |
|
|
|
|
|
maindb_replica = PostgreSQL("replica") |
|
|
|
|
|
maindb_master - maindb_replica |
|
|
|
|
|
grpcsvc >> maindb_master |
|
|
|
|
|
|
|
|
metrics = Prometheus("metric") |
|
|
|
|
|
metrics << Grafana("monitoring") |
|
|
|
|
|
|
|
|
maindb_replica >> Airflow("scheduler") |
|
|
|
|
|
|
|
|
with Cluster("Service Cluster"): |
|
|
|
|
|
grpcsvc = [ |
|
|
|
|
|
Server("grpc1"), |
|
|
|
|
|
Server("grpc2"), |
|
|
|
|
|
Server("grpc3")] |
|
|
|
|
|
|
|
|
with Cluster("Sessions HA"): |
|
|
with Cluster("Sessions HA"): |
|
|
session_master = Redis("session") |
|
|
|
|
|
session_master - Redis("replica") |
|
|
|
|
|
grpcsvc >> session_master |
|
|
|
|
|
|
|
|
|
|
|
logaggr = Fluentd("aggregator") |
|
|
|
|
|
logaggr >> Kafka("stream") >> Spark("log analytics") |
|
|
|
|
|
grpcsvc >> logaggr |
|
|
|
|
|
|
|
|
master = Redis("session") |
|
|
|
|
|
master - Redis("replica") << metrics |
|
|
|
|
|
grpcsvc >> master |
|
|
|
|
|
|
|
|
metricq = Kafka("buffer") |
|
|
|
|
|
metricq >> Prometheus("metric") >> Grafana("monitoring") |
|
|
|
|
|
|
|
|
with Cluster("Database HA"): |
|
|
|
|
|
master = PostgreSQL("users") |
|
|
|
|
|
master - PostgreSQL("slave") << metrics |
|
|
|
|
|
grpcsvc >> master |
|
|
|
|
|
|
|
|
logaggr >> metricq |
|
|
|
|
|
svcmesh >> metricq |
|
|
|
|
|
|
|
|
with Cluster("Log Streaming"): |
|
|
|
|
|
aggregator = Fluentd("logging") |
|
|
|
|
|
aggregator >> Kafka("stream") >> Spark("analytics") |
|
|
|
|
|
|
|
|
ingress >> svcmesh |
|
|
|
|
|
|
|
|
ingress >> grpcsvc >> aggregator |
|
|
``` |
|
|
``` |
|
|
|
|
|
|
|
|
![on-premise system architecture diagram](/img/on-premise_system_architecture.png) |
|
|
![on-premise system architecture diagram](/img/on-premise_system_architecture.png) |