<mxfile host="app.diagrams.net" agent="rndc-diagramas.py" version="24.0.0"><diagram id="c5-despliegue" name="Despliegue"><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;Navegador del analista&lt;/b&gt;&lt;div&gt;[Nodo]&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 (clúster de la transportadora)&lt;/b&gt;&lt;div&gt;[Nodo de despliegue]&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, archivos estáticos de Angular&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;API de despachos&lt;/b&gt;&lt;div&gt;[Quarkus · 2 réplicas]&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;[Operador · primario + réplica]&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;Integrador RNDC&lt;/b&gt;&lt;div&gt;[Camel + CXF · 2 réplicas]&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font style=&quot;font-size: 11px&quot;&gt;Salida a internet por IP fija (allowlist del Ministerio)&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;Simulador RNDC&lt;/b&gt;&lt;div&gt;[WireMock · sólo pruebas]&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;Motor de validación&lt;/b&gt;&lt;div&gt;[Camel · 2 réplicas]&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;Observabilidad&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;Conciliador&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;Clúster Kafka (Confluent)&lt;/b&gt;&lt;div&gt;[Nodo de despliegue]&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;[Particiones y réplicas por tema]&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;[Réplica al clúster de DR]&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;Centro de datos de la transportadora&lt;/b&gt;&lt;div&gt;[Nodo de despliegue · 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;Oracle legado&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 · Ministerio de Transporte&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 por IP fija&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;Eventos&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;Consume y publica&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>
