<mxfile host="app.diagrams.net" agent="rndc-diagramas.py" version="24.0.0"><diagram id="c5-despliegue" name="Deployment"><mxGraphModel dx="1400" dy="900" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1654" pageHeight="1169" math="0" shadow="0"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="navegador" value="&lt;b&gt;Analyst&amp;#x27;s browser&lt;/b&gt;&lt;div&gt;[Node]&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#8C8496;strokeColor=#736782;fontColor=#ffffff;align=center;arcSize=10;strokeWidth=1;metaEdit=1;resizable=0;" vertex="1" parent="1"><mxGeometry x="40" y="40" width="220" height="80" as="geometry"/></mxCell><mxCell id="k8s" value="&lt;b&gt;Kubernetes (carrier&amp;#x27;s cluster)&lt;/b&gt;&lt;div&gt;[Deployment node]&lt;/div&gt;" style="rounded=1;fontSize=11;whiteSpace=wrap;html=1;dashed=1;arcSize=20;fillColor=none;strokeColor=#666666;fontColor=#333333;labelBackgroundColor=none;align=left;verticalAlign=bottom;labelBorderColor=none;spacingTop=0;spacing=10;dashPattern=8 4;metaEdit=1;rotatable=0;perimeter=rectanglePerimeter;noLabel=0;labelPadding=0;allowArrows=0;connectable=0;expand=0;recursiveResize=0;editable=1;pointerEvents=0;absoluteArcSize=1;" vertex="1" parent="1"><mxGeometry x="40" y="170" width="760" height="500" as="geometry"/></mxCell><mxCell id="ingress" value="&lt;b&gt;Ingress + web&lt;/b&gt;&lt;div&gt;[nginx]&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font style=&quot;font-size: 11px&quot;&gt;TLS, Angular static files&lt;/font&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#23A2D9;fontColor=#ffffff;align=center;arcSize=10;strokeColor=#0E7DAD;metaEdit=1;resizable=0;" vertex="1" parent="k8s"><mxGeometry x="20" y="40" width="220" height="100" as="geometry"/></mxCell><mxCell id="api" value="&lt;b&gt;Dispatch API&lt;/b&gt;&lt;div&gt;[Quarkus · 2 replicas]&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#23A2D9;fontColor=#ffffff;align=center;arcSize=10;strokeColor=#0E7DAD;metaEdit=1;resizable=0;" vertex="1" parent="k8s"><mxGeometry x="270" y="40" width="220" height="100" as="geometry"/></mxCell><mxCell id="keycloak" value="&lt;b&gt;Keycloak&lt;/b&gt;&lt;div&gt;[IAM]&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#23A2D9;fontColor=#ffffff;align=center;arcSize=10;strokeColor=#0E7DAD;metaEdit=1;resizable=0;" vertex="1" parent="k8s"><mxGeometry x="520" y="40" width="220" height="100" as="geometry"/></mxCell><mxCell id="pg" value="&lt;b&gt;PostgreSQL&lt;/b&gt;&lt;div&gt;[Operator · primary + replica]&lt;/div&gt;" style="shape=cylinder3;size=15;whiteSpace=wrap;html=1;boundedLbl=1;rounded=0;labelBackgroundColor=none;fillColor=#23A2D9;fontSize=12;fontColor=#ffffff;align=center;strokeColor=#0E7DAD;metaEdit=1;" vertex="1" parent="k8s"><mxGeometry x="20" y="180" width="220" height="100" as="geometry"/></mxCell><mxCell id="integrador" value="&lt;b&gt;RNDC integrator&lt;/b&gt;&lt;div&gt;[Camel + CXF · 2 replicas]&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font style=&quot;font-size: 11px&quot;&gt;Internet egress through a fixed IP (Ministry allowlist)&lt;/font&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#23A2D9;fontColor=#ffffff;align=center;arcSize=10;strokeColor=#0E7DAD;metaEdit=1;resizable=0;" vertex="1" parent="k8s"><mxGeometry x="270" y="180" width="220" height="100" as="geometry"/></mxCell><mxCell id="sim" value="&lt;b&gt;RNDC simulator&lt;/b&gt;&lt;div&gt;[WireMock · tests only]&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#23A2D9;fontColor=#ffffff;align=center;arcSize=10;strokeColor=#0E7DAD;metaEdit=1;resizable=0;" vertex="1" parent="k8s"><mxGeometry x="520" y="180" width="220" height="100" as="geometry"/></mxCell><mxCell id="motor" value="&lt;b&gt;Validation engine&lt;/b&gt;&lt;div&gt;[Camel · 2 replicas]&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#23A2D9;fontColor=#ffffff;align=center;arcSize=10;strokeColor=#0E7DAD;metaEdit=1;resizable=0;" vertex="1" parent="k8s"><mxGeometry x="20" y="320" width="220" height="100" as="geometry"/></mxCell><mxCell id="obs" value="&lt;b&gt;Observability&lt;/b&gt;&lt;div&gt;[Prometheus · Grafana · Tempo · Loki]&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#23A2D9;fontColor=#ffffff;align=center;arcSize=10;strokeColor=#0E7DAD;metaEdit=1;resizable=0;" vertex="1" parent="k8s"><mxGeometry x="270" y="320" width="220" height="100" as="geometry"/></mxCell><mxCell id="conciliador" value="&lt;b&gt;Reconciler&lt;/b&gt;&lt;div&gt;[Kafka Streams]&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#23A2D9;fontColor=#ffffff;align=center;arcSize=10;strokeColor=#0E7DAD;metaEdit=1;resizable=0;" vertex="1" parent="k8s"><mxGeometry x="520" y="320" width="220" height="100" as="geometry"/></mxCell><mxCell id="confluent" value="&lt;b&gt;Kafka cluster (Confluent)&lt;/b&gt;&lt;div&gt;[Deployment node]&lt;/div&gt;" style="rounded=1;fontSize=11;whiteSpace=wrap;html=1;dashed=1;arcSize=20;fillColor=none;strokeColor=#666666;fontColor=#333333;labelBackgroundColor=none;align=left;verticalAlign=bottom;labelBorderColor=none;spacingTop=0;spacing=10;dashPattern=8 4;metaEdit=1;rotatable=0;perimeter=rectanglePerimeter;noLabel=0;labelPadding=0;allowArrows=0;connectable=0;expand=0;recursiveResize=0;editable=1;pointerEvents=0;absoluteArcSize=1;" vertex="1" parent="1"><mxGeometry x="840" y="170" width="360" height="300" as="geometry"/></mxCell><mxCell id="brokers" value="&lt;b&gt;3 brokers&lt;/b&gt;&lt;div&gt;[Partitions and replicas per topic]&lt;/div&gt;" style="shape=mxgraph.c4.container;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#23A2D9;fontColor=#ffffff;align=center;strokeColor=#0E7DAD;metaEdit=1;" vertex="1" parent="confluent"><mxGeometry x="20" y="40" width="320" height="90" as="geometry"/></mxCell><mxCell id="connect" value="&lt;b&gt;Kafka Connect&lt;/b&gt;&lt;div&gt;[Debezium Oracle · outbox]&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#23A2D9;fontColor=#ffffff;align=center;arcSize=10;strokeColor=#0E7DAD;metaEdit=1;resizable=0;" vertex="1" parent="confluent"><mxGeometry x="20" y="160" width="150" height="110" as="geometry"/></mxCell><mxCell id="mm2" value="&lt;b&gt;MirrorMaker 2&lt;/b&gt;&lt;div&gt;[Replication to the DR cluster]&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#23A2D9;fontColor=#ffffff;align=center;arcSize=10;strokeColor=#0E7DAD;metaEdit=1;resizable=0;" vertex="1" parent="confluent"><mxGeometry x="190" y="160" width="150" height="110" as="geometry"/></mxCell><mxCell id="onprem" value="&lt;b&gt;Carrier&amp;#x27;s data centre&lt;/b&gt;&lt;div&gt;[Deployment node · on-prem]&lt;/div&gt;" style="rounded=1;fontSize=11;whiteSpace=wrap;html=1;dashed=1;arcSize=20;fillColor=none;strokeColor=#666666;fontColor=#333333;labelBackgroundColor=none;align=left;verticalAlign=bottom;labelBorderColor=none;spacingTop=0;spacing=10;dashPattern=8 4;metaEdit=1;rotatable=0;perimeter=rectanglePerimeter;noLabel=0;labelPadding=0;allowArrows=0;connectable=0;expand=0;recursiveResize=0;editable=1;pointerEvents=0;absoluteArcSize=1;" vertex="1" parent="1"><mxGeometry x="840" y="510" width="360" height="160" as="geometry"/></mxCell><mxCell id="oracle" value="&lt;b&gt;Legacy Oracle&lt;/b&gt;&lt;div&gt;[ERP / TMS]&lt;/div&gt;" style="shape=cylinder3;size=15;whiteSpace=wrap;html=1;boundedLbl=1;rounded=0;labelBackgroundColor=none;fillColor=#23A2D9;fontSize=12;fontColor=#ffffff;align=center;strokeColor=#0E7DAD;metaEdit=1;" vertex="1" parent="onprem"><mxGeometry x="20" y="40" width="320" height="100" as="geometry"/></mxCell><mxCell id="rndc" value="&lt;b&gt;RNDC · Ministry of Transport&lt;/b&gt;&lt;div&gt;[Internet · SOAP/XML]&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#8C8496;strokeColor=#736782;fontColor=#ffffff;align=center;arcSize=10;strokeWidth=1;metaEdit=1;resizable=0;" vertex="1" parent="1"><mxGeometry x="40" y="730" width="300" height="80" as="geometry"/></mxCell><mxCell id="sicetac" value="&lt;b&gt;SICE-TAC&lt;/b&gt;&lt;div&gt;[Internet · HTTP]&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#8C8496;strokeColor=#736782;fontColor=#ffffff;align=center;arcSize=10;strokeWidth=1;metaEdit=1;resizable=0;" vertex="1" parent="1"><mxGeometry x="380" y="730" width="300" height="80" as="geometry"/></mxCell><mxCell id="e0" value="&lt;div style=&quot;text-align: center&quot;&gt;&lt;b&gt;HTTPS&lt;/b&gt;&lt;/div&gt;" style="endArrow=blockThin;html=1;fontSize=10;fontColor=#404040;strokeWidth=1;endFill=1;strokeColor=#828282;elbow=vertical;metaEdit=1;endSize=14;startSize=14;jumpStyle=arc;jumpSize=16;rounded=0;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1" source="navegador" target="ingress"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell><mxCell id="e1" value="&lt;div style=&quot;text-align: center&quot;&gt;&lt;b&gt;REST&lt;/b&gt;&lt;/div&gt;" style="endArrow=blockThin;html=1;fontSize=10;fontColor=#404040;strokeWidth=1;endFill=1;strokeColor=#828282;elbow=vertical;metaEdit=1;endSize=14;startSize=14;jumpStyle=arc;jumpSize=16;rounded=0;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1" source="ingress" target="api"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell><mxCell id="e2" value="&lt;div style=&quot;text-align: center&quot;&gt;&lt;b&gt;OIDC&lt;/b&gt;&lt;/div&gt;" style="endArrow=blockThin;html=1;fontSize=10;fontColor=#404040;strokeWidth=1;endFill=1;strokeColor=#828282;elbow=vertical;metaEdit=1;endSize=14;startSize=14;jumpStyle=arc;jumpSize=16;rounded=0;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1" source="api" target="keycloak"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell><mxCell id="e3" value="&lt;div style=&quot;text-align: center&quot;&gt;&lt;b&gt;JDBC&lt;/b&gt;&lt;/div&gt;" style="endArrow=blockThin;html=1;fontSize=10;fontColor=#404040;strokeWidth=1;endFill=1;strokeColor=#828282;elbow=vertical;metaEdit=1;endSize=14;startSize=14;jumpStyle=arc;jumpSize=16;rounded=0;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1" source="api" target="pg"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="420" y="310"/><mxPoint x="420" y="330"/><mxPoint x="295" y="330"/><mxPoint x="295" y="400"/><mxPoint x="280" y="400"/></Array></mxGeometry></mxCell><mxCell id="e4" value="&lt;div style=&quot;text-align: center&quot;&gt;&lt;b&gt;SOAP/XML through fixed IP&lt;/b&gt;&lt;/div&gt;" style="endArrow=blockThin;html=1;fontSize=10;fontColor=#404040;strokeWidth=1;endFill=1;strokeColor=#828282;elbow=vertical;metaEdit=1;endSize=14;startSize=14;jumpStyle=arc;jumpSize=16;rounded=0;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1" source="integrador" target="rndc"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="295" y="420"/><mxPoint x="295" y="710"/><mxPoint x="190" y="710"/><mxPoint x="190" y="730"/></Array></mxGeometry></mxCell><mxCell id="e5" value="&lt;div style=&quot;text-align: center&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/div&gt;" style="endArrow=blockThin;html=1;fontSize=10;fontColor=#404040;strokeWidth=1;endFill=1;strokeColor=#828282;elbow=vertical;metaEdit=1;endSize=14;startSize=14;jumpStyle=arc;jumpSize=16;rounded=0;edgeStyle=orthogonalEdgeStyle;dashed=1;" edge="1" parent="1" source="integrador" target="sim"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell><mxCell id="e6" value="&lt;div style=&quot;text-align: center&quot;&gt;&lt;b&gt;HTTP&lt;/b&gt;&lt;/div&gt;" style="endArrow=blockThin;html=1;fontSize=10;fontColor=#404040;strokeWidth=1;endFill=1;strokeColor=#828282;elbow=vertical;metaEdit=1;endSize=14;startSize=14;jumpStyle=arc;jumpSize=16;rounded=0;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1" source="conciliador" target="sicetac"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="670" y="590"/><mxPoint x="670" y="710"/><mxPoint x="530" y="710"/><mxPoint x="530" y="730"/></Array></mxGeometry></mxCell><mxCell id="e7" value="&lt;div style=&quot;text-align: center&quot;&gt;&lt;b&gt;LogMiner&lt;/b&gt;&lt;/div&gt;" style="endArrow=blockThin;html=1;fontSize=10;fontColor=#404040;strokeWidth=1;endFill=1;strokeColor=#828282;elbow=vertical;metaEdit=1;endSize=14;startSize=14;jumpStyle=arc;jumpSize=16;rounded=0;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1" source="connect" target="oracle"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell><mxCell id="e8" value="&lt;div style=&quot;text-align: center&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/div&gt;" style="endArrow=blockThin;html=1;fontSize=10;fontColor=#404040;strokeWidth=1;endFill=1;strokeColor=#828282;elbow=vertical;metaEdit=1;endSize=14;startSize=14;jumpStyle=arc;jumpSize=16;rounded=0;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1" source="brokers" target="connect"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell><mxCell id="e9" value="&lt;div style=&quot;text-align: center&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/div&gt;" style="endArrow=blockThin;html=1;fontSize=10;fontColor=#404040;strokeWidth=1;endFill=1;strokeColor=#828282;elbow=vertical;metaEdit=1;endSize=14;startSize=14;jumpStyle=arc;jumpSize=16;rounded=0;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1" source="brokers" target="mm2"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell><mxCell id="e10" value="&lt;div style=&quot;text-align: center&quot;&gt;&lt;b&gt;Events&lt;/b&gt;&lt;/div&gt;" style="endArrow=blockThin;html=1;fontSize=10;fontColor=#404040;strokeWidth=1;endFill=1;strokeColor=#828282;elbow=vertical;metaEdit=1;endSize=14;startSize=14;jumpStyle=arc;jumpSize=16;rounded=0;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1" source="api" target="brokers"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="420" y="210"/><mxPoint x="420" y="190"/><mxPoint x="820" y="190"/><mxPoint x="820" y="255"/><mxPoint x="860" y="255"/></Array></mxGeometry></mxCell><mxCell id="e11" value="&lt;div style=&quot;text-align: center&quot;&gt;&lt;b&gt;Consumes and publishes&lt;/b&gt;&lt;/div&gt;" style="endArrow=blockThin;html=1;fontSize=10;fontColor=#404040;strokeWidth=1;endFill=1;strokeColor=#828282;elbow=vertical;metaEdit=1;endSize=14;startSize=14;jumpStyle=arc;jumpSize=16;rounded=0;edgeStyle=orthogonalEdgeStyle;" edge="1" parent="1" source="integrador" target="brokers"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="530" y="380"/><mxPoint x="545" y="380"/><mxPoint x="545" y="330"/><mxPoint x="820" y="330"/><mxPoint x="820" y="270"/><mxPoint x="860" y="270"/></Array></mxGeometry></mxCell></root></mxGraphModel></diagram></mxfile>
