KNOWLEDGE BASE

GraphViz

digraph G { /* Author: Martin van Pelt Date: 2017-08-11 Version: 0.6 Graphviz version: 2.38 */ label="Architecture"; rankdir=LR; /* graph from left to right */ fontname=Verdana; /* Verdana is the standard font */ labeljust=l; /* cluster labels aligned left */ splines=ortho; /* arrows are straight and w 90 deg angles */ penwidth=0.5; /* for cluster borders */ color=black; /* for cluster borders */ compound=true; /* for splines */ edge [arrowsize=0.5 penwidth=0.5 arrowhead=onormal] /*for arrows */ node [shape=rectangle fontsize=10 fontname="Open Sans" width=1 height=0.5]; /* for all nodes in graph */ nodesep=0.5; /*for vertical distance between nodes */ ranksep=0.6; /*for horizontal distance between nodes */ subgraph cluster_cloud { label="Cloud"; fontsize=8; fixedsize=true; fillcolor=lightgray; margin=15; subgraph cluster_obo { label="Platform"; width=10; margin=15; provisioning [label="Provisioning" fontsize=8]; testing_A [label="Testing" fontsize=8]; testing_C [label="Testing" fontsize=8]; subgraph cluster_orchestration { label="Orchestration"; fontsize=8; margin=25; orchestration [label="Orchestration" fontsize=8]; orchestration_B [label="Documenting" fontsize=8]; orchestration_A [label="Provisioning" fontsize=8]; orchestration_C [label="Deployment" fontsize=8]; orchestration_input [label="Input" fontsize=8] } } subgraph cluster_staging { label="Staging"; fontsize=8; margin=25; components [label="Components" fontsize=8]; } automated_deployment [label="Deployment" fontsize=8]; } subgraph cluster_external_company { label="External Company"; fontsize=8; vendors [label="External Company" shape=dashed fontsize=8 style=dashed]; resources [label="Repository" shape=database fontsize=8 fillcolor=lightgray style=filled]; } subgraph cluster_dep1 { label="Department 1" margin=15; fontsize=8; code [label="Deliver" fontsize=8 fillcolor=lightgray style=filled]; repository [label="Code\nRepository" fontsize=8 shape=cylinder]; development [label="Department 1" fontsize=8 style=dashed]; } subgraph cluster_dep2 { label="Department 2"; fontsize=8; width=10; margin=15; code_repository [label="Code\nRepository" fontsize=8 shape=cylinder]; artifacts [label="Deliver" fontsize=8 fontname="Verdana" style=filled]; start [label="Trigger\nDeployment" fontsize=8 style=filled]; devops [label="Department 2" fontsize=8 style=dashed]; } subgraph cluster_dep3 { label="Department 3"; fontsize=8; width=10; margin=15; dep2 [label="Department 3" fontsize=8 style=dashed] document [label="Deliver" fontsize=8 fontname="Verdana" style=filled]; } subgraph cluster_dep4 { margin=15; label="Department 4"; } # start orchestration deployment (flow I0) devops -> start [taillabel="\nJ0" fontsize=7 fontname="Verdana"]; start -> orchestration [headlabel="\n[J0]" fontsize=7 fontname="Verdana"]; # deliver code(flow I1) code -> repository; artifacts -> code_repository; # development (flow I2) development -> code [taillabel="\I2" fontsize=7 fontname="Verdana"]; # document delivery (flow I3) dep2 -> document [taillabel="\nI3" fontsize=7 fontname="Verdana"]; document -> repository; # deliver (flow I4) devops -> artifacts [taillabel="\nI4" fontsize=7 fontname="Verdana"]; # ingest (flow J1) (flow I1) repository -> orchestration [dir=both] [headlabel="\nJ1a" fontsize=7 fontname="Verdana"]; code_repository -> orchestration [dir=both] [headlabel="\nJ1b" fontsize=7 fontname="Verdana"]; vendors -> resources [taillabel="\nI1" fontsize=7 fontname="Verdana"]; resources -> orchestration_input ; orchestration_input -> orchestration [headlabel="\nJ1c" fontsize=7 fontname="Verdana"]; # orchestration B (flow J2) orchestration -> orchestration_B [taillabel="\nJ2" fontsize=7 fontname="Verdana"]; # orchestration provisioning (flow J3) orchestration -> orchestration_A [taillabel="\nJ3" fontsize=7 fontname="Verdana"]; orchestration_A -> automated_deployment [taillabel="\nJ3.1" fontsize=7 fontname="Verdana"]; automated_deployment -> components [taillabel="\nJ3.2" fontsize=7 fontname="Verdana"]; orchestration_A -> testing_A [taillabel="\nJ3.3" fontsize=7 fontname="Verdana"]; testing_A -> components [taillabel="\nJ3.4" fontsize=7 fontname="Verdana"]; # orchestration deployment (flow J4) orchestration -> orchestration_C [taillabel="\nJ4" fontsize=7 fontname="Verdana"]; orchestration_C -> provisioning [taillabel="\nJ4.1" fontsize=7 fontname="Verdana"]; provisioning -> components [taillabel="\nJ4.2" fontsize=7 fontname="Verdana"]; orchestration_C -> testing_C [taillabel="\nJ4.3" fontsize=7 fontname="Verdana"]; testing_C -> components [taillabel="\nJ4.4" fontsize=7 fontname="Verdana"]; }
GraphViz (Graph Visualization Software) is een open-source tool voor het visualiseren van gestructureerde informatie, waarbij gebruik wordt gemaakt van een eenvoudige tekstgeorienteerde taal. GraphViz ondersteunt een aantal verschillende tools om diagrammen vorm te geven. De DOT taal - de meest bekende hiervan en de default tool van GraphViz - kent een gelaagde opbouw, waarbij de pijlen altijd een richting aangeven (directed). De onderstaande figuur is in GraphViz gemaakt. De bijbehorende code is in de grijze tekstbalk te vinden.