1 line
32 KiB
XML
1 line
32 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" data-diagram-type="DESCRIPTION" height="1508px" preserveAspectRatio="none" style="width:1348px;height:1508px;background:#FFFFFF;" version="1.1" viewBox="0 0 1348 1508" width="1348px" zoomAndPan="magnify"><title>Sistema de Registro de Estudiantes - Diagrama de Despliegue</title><defs/><g><g class="title" data-source-line="6"><text fill="#000000" font-family="Verdana" font-size="22" font-weight="bold" lengthAdjust="spacing" textLength="771.6758" x="283.7492" y="35.4209">Sistema de Registro de Estudiantes - Diagrama de Despliegue</text></g><!--cluster client--><g class="cluster" data-entity="client" data-source-line="8" data-uid="ent0002" id="cluster_client"><polygon fill="#F8F9FA" points="629,67.6094,639,57.6094,886,57.6094,886,248.9094,876,258.9094,629,258.9094,629,67.6094" style="stroke:#495057;stroke-width:1;"/><line style="stroke:#495057;stroke-width:1;" x1="876" x2="886" y1="67.6094" y2="57.6094"/><line style="stroke:#495057;stroke-width:1;" x1="629" x2="876" y1="67.6094" y2="67.6094"/><line style="stroke:#495057;stroke-width:1;" x1="876" x2="876" y1="67.6094" y2="258.9094"/><text fill="#000000" font-family="Verdana" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="55.5215" x="725.7393" y="83.6045">Cliente</text></g><!--cluster browser--><g class="cluster" data-entity="browser" data-source-line="9" data-uid="ent0003" id="cluster_browser"><rect fill="#E9ECEF" height="113.3" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="193" x="661" y="113.6094"/><rect fill="#E9ECEF" height="10" style="stroke:#000000;stroke-width:1;" width="15" x="834" y="118.6094"/><rect fill="#E9ECEF" height="2" style="stroke:#000000;stroke-width:1;" width="4" x="832" y="120.6094"/><rect fill="#E9ECEF" height="2" style="stroke:#000000;stroke-width:1;" width="4" x="832" y="124.6094"/><text fill="#000000" font-family="Verdana" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="125.6309" x="694.6846" y="139.6045">Navegador Web</text></g><!--cluster k3s--><g class="cluster" data-entity="k3s" data-source-line="14" data-uid="ent0005" id="cluster_k3s"><polygon fill="#F8F9FA" points="21,449.1994,31,439.1994,920,439.1994,920,1481.6394,910,1491.6394,21,1491.6394,21,449.1994" style="stroke:#495057;stroke-width:1;"/><line style="stroke:#495057;stroke-width:1;" x1="910" x2="920" y1="449.1994" y2="439.1994"/><line style="stroke:#495057;stroke-width:1;" x1="21" x2="910" y1="449.1994" y2="449.1994"/><line style="stroke:#495057;stroke-width:1;" x1="910" x2="910" y1="449.1994" y2="1491.6394"/><text fill="#000000" font-family="Verdana" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="284.792" x="324.104" y="465.1945">K3s Cluster (Namespace: academia)</text></g><!--cluster frontendPod--><g class="cluster" data-entity="frontendPod" data-source-line="16" data-uid="ent0006" id="cluster_frontendPod"><polygon fill="#F8F9FA" points="445,704.4994,455,694.4994,868,694.4994,868,901.7994,858,911.7994,445,911.7994,445,704.4994" style="stroke:#495057;stroke-width:1;"/><line style="stroke:#495057;stroke-width:1;" x1="858" x2="868" y1="704.4994" y2="694.4994"/><line style="stroke:#495057;stroke-width:1;" x1="445" x2="858" y1="704.4994" y2="704.4994"/><line style="stroke:#495057;stroke-width:1;" x1="858" x2="858" y1="704.4994" y2="911.7994"/><text fill="#000000" font-family="Verdana" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="43.1758" x="630.9121" y="720.4945">«Pod»</text><text fill="#000000" font-family="Verdana" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="168.3896" x="568.3052" y="736.7914">frontend-deployment</text></g><!--cluster nginx--><g class="cluster" data-entity="nginx" data-source-line="17" data-uid="ent0007" id="cluster_nginx"><rect fill="#E9ECEF" height="113.3" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="359" x="477" y="766.4994"/><rect fill="#E9ECEF" height="10" style="stroke:#000000;stroke-width:1;" width="15" x="816" y="771.4994"/><rect fill="#E9ECEF" height="2" style="stroke:#000000;stroke-width:1;" width="4" x="814" y="773.4994"/><rect fill="#E9ECEF" height="2" style="stroke:#000000;stroke-width:1;" width="4" x="814" y="777.4994"/><text fill="#000000" font-family="Verdana" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="45.5342" x="633.7329" y="792.4945">Nginx</text></g><!--cluster apiPod--><g class="cluster" data-entity="apiPod" data-source-line="23" data-uid="ent0010" id="cluster_apiPod"><polygon fill="#F8F9FA" points="53,985.7994,63,975.7994,528,975.7994,528,1449.6394,518,1459.6394,53,1459.6394,53,985.7994" style="stroke:#495057;stroke-width:1;"/><line style="stroke:#495057;stroke-width:1;" x1="518" x2="528" y1="985.7994" y2="975.7994"/><line style="stroke:#495057;stroke-width:1;" x1="53" x2="518" y1="985.7994" y2="985.7994"/><line style="stroke:#495057;stroke-width:1;" x1="518" x2="518" y1="985.7994" y2="1459.6394"/><text fill="#000000" font-family="Verdana" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="43.1758" x="264.9121" y="1001.7945">«Pod»</text><text fill="#000000" font-family="Verdana" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="123.9014" x="224.5493" y="1018.0914">api-deployment</text></g><!--cluster aspnet--><g class="cluster" data-entity="aspnet" data-source-line="24" data-uid="ent0011" id="cluster_aspnet"><rect fill="#E9ECEF" height="379.84" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="411" x="85" y="1047.7994"/><rect fill="#E9ECEF" height="10" style="stroke:#000000;stroke-width:1;" width="15" x="476" y="1052.7994"/><rect fill="#E9ECEF" height="2" style="stroke:#000000;stroke-width:1;" width="4" x="474" y="1054.7994"/><rect fill="#E9ECEF" height="2" style="stroke:#000000;stroke-width:1;" width="4" x="474" y="1058.7994"/><text fill="#000000" font-family="Verdana" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="108.4932" x="236.2534" y="1073.7945">ASP.NET Core</text></g><!--cluster dbPod--><g class="cluster" data-entity="dbPod" data-source-line="32" data-uid="ent0016" id="cluster_dbPod"><polygon fill="#F8F9FA" points="552,1237.3394,562,1227.3394,880,1227.3394,880,1449.6394,870,1459.6394,552,1459.6394,552,1237.3394" style="stroke:#495057;stroke-width:1;"/><line style="stroke:#495057;stroke-width:1;" x1="870" x2="880" y1="1237.3394" y2="1227.3394"/><line style="stroke:#495057;stroke-width:1;" x1="552" x2="870" y1="1237.3394" y2="1237.3394"/><line style="stroke:#495057;stroke-width:1;" x1="870" x2="870" y1="1237.3394" y2="1459.6394"/><text fill="#000000" font-family="Verdana" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="95.0195" x="664.4902" y="1253.3345">«StatefulSet»</text><text fill="#000000" font-family="Verdana" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="165.2588" x="629.3706" y="1269.6314">sqlserver-statefulset</text></g><!--cluster sqlserver--><g class="cluster" data-entity="sqlserver" data-source-line="33" data-uid="ent0017" id="cluster_sqlserver"><path d="M584,1309.3394 C584,1299.3394 716,1299.3394 716,1299.3394 C716,1299.3394 848,1299.3394 848,1309.3394 L848,1417.6394 C848,1427.6394 716,1427.6394 716,1427.6394 C716,1427.6394 584,1427.6394 584,1417.6394 L584,1309.3394" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M584,1309.3394 C584,1319.3394 716,1319.3394 716,1319.3394 C716,1319.3394 848,1319.3394 848,1309.3394" fill="none" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Verdana" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="131.626" x="650.187" y="1334.3345">SQL Server 2022</text></g><!--cluster ingress--><g class="cluster" data-entity="ingress" data-source-line="38" data-uid="ent0019" id="cluster_ingress"><polygon fill="#F8F9FA" points="460,513.1994,470,503.1994,854,503.1994,854,627.4994,844,637.4994,460,637.4994,460,513.1994" style="stroke:#495057;stroke-width:1;"/><line style="stroke:#495057;stroke-width:1;" x1="844" x2="854" y1="513.1994" y2="503.1994"/><line style="stroke:#495057;stroke-width:1;" x1="460" x2="844" y1="513.1994" y2="513.1994"/><line style="stroke:#495057;stroke-width:1;" x1="844" x2="844" y1="513.1994" y2="637.4994"/><text fill="#000000" font-family="Verdana" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="68.127" x="618.9365" y="529.1945">«Ingress»</text><text fill="#000000" font-family="Verdana" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="118.7334" x="593.6333" y="545.4914">Traefik Ingress</text></g><!--entity Angular SPA--><g class="entity" data-entity="Angular SPA" data-source-line="10" data-uid="ent0004" id="entity_Angular SPA"><rect fill="#E9ECEF" height="46.2969" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="125.791" x="685.1" y="156.6094"/><rect fill="#E9ECEF" height="10" style="stroke:#000000;stroke-width:1;" width="15" x="790.891" y="161.6094"/><rect fill="#E9ECEF" height="2" style="stroke:#000000;stroke-width:1;" width="4" x="788.891" y="163.6094"/><rect fill="#E9ECEF" height="2" style="stroke:#000000;stroke-width:1;" width="4" x="788.891" y="167.6094"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="85.791" x="700.1" y="189.6045">Angular SPA</text></g><!--entity Static Files--><g class="entity" data-entity="Static Files" data-source-line="18" data-uid="ent0008" id="entity_Static Files"><rect fill="#E9ECEF" height="46.2969" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="116.2207" x="500.89" y="809.4994"/><rect fill="#E9ECEF" height="10" style="stroke:#000000;stroke-width:1;" width="15" x="597.1107" y="814.4994"/><rect fill="#E9ECEF" height="2" style="stroke:#000000;stroke-width:1;" width="4" x="595.1107" y="816.4994"/><rect fill="#E9ECEF" height="2" style="stroke:#000000;stroke-width:1;" width="4" x="595.1107" y="820.4994"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="76.2207" x="515.89" y="842.4945">Static Files</text></g><!--entity Reverse Proxy--><g class="entity" data-entity="Reverse Proxy" data-source-line="19" data-uid="ent0009" id="entity_Reverse Proxy"><rect fill="#E9ECEF" height="46.2969" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="140.6865" x="651.66" y="809.4994"/><rect fill="#E9ECEF" height="10" style="stroke:#000000;stroke-width:1;" width="15" x="772.3465" y="814.4994"/><rect fill="#E9ECEF" height="2" style="stroke:#000000;stroke-width:1;" width="4" x="770.3465" y="816.4994"/><rect fill="#E9ECEF" height="2" style="stroke:#000000;stroke-width:1;" width="4" x="770.3465" y="820.4994"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="100.6865" x="666.66" y="842.4945">Reverse Proxy</text></g><!--entity Kestrel Server--><g class="entity" data-entity="Kestrel Server" data-source-line="25" data-uid="ent0012" id="entity_Kestrel Server"><rect fill="#E9ECEF" height="46.2969" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="139.1963" x="109.4" y="1090.7994"/><rect fill="#E9ECEF" height="10" style="stroke:#000000;stroke-width:1;" width="15" x="228.5963" y="1095.7994"/><rect fill="#E9ECEF" height="2" style="stroke:#000000;stroke-width:1;" width="4" x="226.5963" y="1097.7994"/><rect fill="#E9ECEF" height="2" style="stroke:#000000;stroke-width:1;" width="4" x="226.5963" y="1101.7994"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="99.1963" x="124.4" y="1123.7945">Kestrel Server</text></g><!--entity GraphQL Endpoint--><g class="entity" data-entity="GraphQL Endpoint" data-source-line="26" data-uid="ent0013" id="entity_GraphQL Endpoint"><rect fill="#E9ECEF" height="46.2969" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="168.5225" x="283.74" y="1090.7994"/><rect fill="#E9ECEF" height="10" style="stroke:#000000;stroke-width:1;" width="15" x="432.2625" y="1095.7994"/><rect fill="#E9ECEF" height="2" style="stroke:#000000;stroke-width:1;" width="4" x="430.2625" y="1097.7994"/><rect fill="#E9ECEF" height="2" style="stroke:#000000;stroke-width:1;" width="4" x="430.2625" y="1101.7994"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="128.5225" x="298.74" y="1123.7945">GraphQL Endpoint</text></g><!--entity JWT Auth--><g class="entity" data-entity="JWT Auth" data-source-line="27" data-uid="ent0014" id="entity_JWT Auth"><rect fill="#E9ECEF" height="46.2969" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="103.7861" x="127.11" y="1357.3394"/><rect fill="#E9ECEF" height="10" style="stroke:#000000;stroke-width:1;" width="15" x="210.8961" y="1362.3394"/><rect fill="#E9ECEF" height="2" style="stroke:#000000;stroke-width:1;" width="4" x="208.8961" y="1364.3394"/><rect fill="#E9ECEF" height="2" style="stroke:#000000;stroke-width:1;" width="4" x="208.8961" y="1368.3394"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="63.7861" x="142.11" y="1390.3345">JWT Auth</text></g><!--entity Health Check--><g class="entity" data-entity="Health Check" data-source-line="28" data-uid="ent0015" id="entity_Health Check"><rect fill="#E9ECEF" height="46.2969" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="133.4883" x="266.26" y="1357.3394"/><rect fill="#E9ECEF" height="10" style="stroke:#000000;stroke-width:1;" width="15" x="379.7483" y="1362.3394"/><rect fill="#E9ECEF" height="2" style="stroke:#000000;stroke-width:1;" width="4" x="377.7483" y="1364.3394"/><rect fill="#E9ECEF" height="2" style="stroke:#000000;stroke-width:1;" width="4" x="377.7483" y="1368.3394"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="93.4883" x="281.26" y="1390.3345">Health Check</text></g><!--entity StudentEnrollment DB--><g class="entity" data-entity="StudentEnrollment DB" data-source-line="34" data-uid="ent0018" id="entity_StudentEnrollment DB"><rect fill="#E9ECEF" height="46.2969" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="196.3789" x="607.81" y="1357.3394"/><rect fill="#E9ECEF" height="10" style="stroke:#000000;stroke-width:1;" width="15" x="784.1889" y="1362.3394"/><rect fill="#E9ECEF" height="2" style="stroke:#000000;stroke-width:1;" width="4" x="782.1889" y="1364.3394"/><rect fill="#E9ECEF" height="2" style="stroke:#000000;stroke-width:1;" width="4" x="782.1889" y="1368.3394"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="156.3789" x="622.81" y="1390.3345">StudentEnrollment DB</text></g><!--entity TLS Termination--><g class="entity" data-entity="TLS Termination" data-source-line="39" data-uid="ent0020" id="entity_TLS Termination"><rect fill="#E9ECEF" height="46.2969" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="154.4063" x="483.8" y="567.1994"/><rect fill="#E9ECEF" height="10" style="stroke:#000000;stroke-width:1;" width="15" x="618.2063" y="572.1994"/><rect fill="#E9ECEF" height="2" style="stroke:#000000;stroke-width:1;" width="4" x="616.2063" y="574.1994"/><rect fill="#E9ECEF" height="2" style="stroke:#000000;stroke-width:1;" width="4" x="616.2063" y="578.1994"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="114.4063" x="498.8" y="600.1945">TLS Termination</text></g><!--entity Routing Rules--><g class="entity" data-entity="Routing Rules" data-source-line="40" data-uid="ent0021" id="entity_Routing Rules"><rect fill="#E9ECEF" height="46.2969" rx="2.5" ry="2.5" style="stroke:#000000;stroke-width:1;" width="137.1523" x="673.42" y="567.1994"/><rect fill="#E9ECEF" height="10" style="stroke:#000000;stroke-width:1;" width="15" x="790.5723" y="572.1994"/><rect fill="#E9ECEF" height="2" style="stroke:#000000;stroke-width:1;" width="4" x="788.5723" y="574.1994"/><rect fill="#E9ECEF" height="2" style="stroke:#000000;stroke-width:1;" width="4" x="788.5723" y="578.1994"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="97.1523" x="688.42" y="600.1945">Routing Rules</text></g><!--entity internet--><g class="entity" data-entity="internet" data-source-line="44" data-uid="ent0022" id="entity_internet"><path d="M812.8518,330.79 C815.9475,325.7559 819.8761,325.4908 823.6835,329.9806 C826.7915,323.8087 831.1358,323.9094 835.3775,328.7801 C838.2935,323.4575 842.5613,322.9801 846.1413,328.0954 C849.8898,323.171 853.7467,322.0703 857.734,327.8364 C862.7772,322.573 867.0082,322.7217 869.8507,329.968 C873.9083,324.8005 878.5661,325.075 882.2525,330.4065 C889.5904,333.2459 891.3277,340.602 885.0129,345.8774 C890.8175,352.279 890.663,357.3627 882.667,361.7209 C880.7128,367.8815 875.179,368.2896 871.4302,363.5752 C868.4904,371.8485 864.0231,372.8905 857.8992,366.5168 C856.9668,372.233 852.2734,374.4159 847.3854,371.1435 C842.7873,375.3417 837.5043,374.8018 835.5421,368.2417 C829.0223,373.0772 825.7972,370.4431 823.5899,363.7649 C819.3816,368.2205 814.3143,367.7521 811.6427,361.9714 C801.9847,360.9987 798.7638,353.7752 805.3599,346.2902 C799.2429,337.3079 802.3357,331.7329 812.8518,330.79" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Verdana" font-size="14" lengthAdjust="spacing" textLength="55.8359" x="818.08" y="349.9045">Internet</text></g><g class="entity" data-entity="GMN28" data-source-line="54" data-uid="ent0029" id="entity_GMN28"><path d="M947.75,562.6494 L947.75,618.0478 L1168.2505,618.0478 L1168.2505,572.6494 L1158.2505,562.6494 L947.75,562.6494" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M1158.2505,562.6494 L1158.2505,572.6494 L1168.2505,572.6494 L1158.2505,562.6494" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Verdana" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="65.5649" x="953.75" y="579.7163">Dominio:</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="199.5005" x="953.75" y="594.8491">academia.ingeniumcodex.com</text><text fill="#000000" font-family="Verdana" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="31.7129" x="953.75" y="609.9819">TLS:</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="84.8047" x="989.5952" y="609.9819">Let's Encrypt</text></g><g class="entity" data-entity="GMN31" data-source-line="60" data-uid="ent0032" id="entity_GMN31"><path d="M1156.83,789.8194 L1156.83,875.4834 L1341.1742,875.4834 L1341.1742,799.8194 L1331.1742,789.8194 L1156.83,789.8194" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M1331.1742,789.8194 L1331.1742,799.8194 L1341.1742,799.8194 L1331.1742,789.8194" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Verdana" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="99.1504" x="1162.83" y="806.8863">Nginx Config:</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="163.3442" x="1162.83" y="822.0191">- Gzip/Brotli compression</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="124.6616" x="1162.83" y="837.1519">- Static file caching</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="107.2437" x="1162.83" y="852.2847">- GraphQL proxy</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="118.9106" x="1162.83" y="867.4175">- Security headers</text></g><g class="entity" data-entity="GMN34" data-source-line="68" data-uid="ent0035" id="entity_GMN34"><path d="M944.31,1063.5494 L944.31,1164.3463 L1099.6962,1164.3463 L1099.6962,1073.5494 L1089.6962,1063.5494 L944.31,1063.5494" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M1089.6962,1063.5494 L1089.6962,1073.5494 L1099.6962,1073.5494 L1089.6962,1063.5494" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Verdana" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="117.4697" x="950.31" y="1080.6163">Optimizaciones:</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="74.7373" x="950.31" y="1095.7491">- Server GC</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="91.1714" x="950.31" y="1110.8819">- ReadyToRun</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="134.3862" x="950.31" y="1126.0147">- Connection pooling</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="91.749" x="950.31" y="1141.1475">- Rate limiting</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="101.5879" x="950.31" y="1156.2803">- JWT validation</text></g><g class="entity" data-entity="GMN37" data-source-line="77" data-uid="ent0038" id="entity_GMN37"><path d="M943.56,1345.2294 L943.56,1415.7606 L1090.4467,1415.7606 L1090.4467,1355.2294 L1080.4467,1345.2294 L943.56,1345.2294" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M1080.4467,1345.2294 L1080.4467,1355.2294 L1090.4467,1355.2294 L1080.4467,1345.2294" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Verdana" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="71.8047" x="949.56" y="1362.2963">Recursos:</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="87.0073" x="949.56" y="1377.4291">- 2 CPU cores</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="85.8965" x="949.56" y="1392.5619">- 2.5 GB RAM</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="125.8867" x="949.56" y="1407.6947">- Persistent volume</text></g><g class="entity" data-entity="GMN40" data-source-line="84" data-uid="ent0041" id="entity_GMN40"><path d="M943.87,804.9494 L943.87,860.3478 L1122.1268,860.3478 L1122.1268,814.9494 L1112.1268,804.9494 L943.87,804.9494" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><path d="M1112.1268,804.9494 L1112.1268,814.9494 L1122.1268,814.9494 L1112.1268,804.9494" fill="#FFFFFF" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Verdana" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="44.6558" x="949.87" y="822.0163">CI/CD:</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="86.5947" x="998.6581" y="822.0163">Gitea Actions</text><text fill="#000000" font-family="Verdana" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="96.7446" x="949.87" y="837.1491">Auto-scaling:</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="26.5078" x="1050.747" y="837.1491">HPA</text><text fill="#000000" font-family="Verdana" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="89.5527" x="949.87" y="852.2819">Namespace:</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="63.5718" x="1043.5551" y="852.2819">academia</text></g><!--link browser to internet--><g class="link" data-entity-1="browser" data-entity-2="internet" data-source-line="47" data-uid="lnk23" id="link_browser_internet"><path d="M846,227.5085 C846,227.7276 846,227.9472 846,228.1671 C846,229.0469 846,229.9331 846,230.8253 C846,232.6097 846,234.4179 846,236.2456 C846,265.4894 846,293.7394 846,315.6494" fill="none" id="browser-to-internet" style="stroke:#000000;stroke-width:1;"/><polygon fill="#000000" points="846,321.6494,850,312.6494,846,316.6494,842,312.6494,846,321.6494" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="41.7485" x="847" y="287.9763">HTTPS</text></g><!--link internet to ingress--><g class="link" data-entity-1="internet" data-entity-2="ingress" data-source-line="48" data-uid="lnk24" id="link_internet_ingress"><path d="M846,368.5094 C846,398.1544 846,452.1169 846,499.2769 C846,500.0138 846,500.749 846,501.4824 C846,501.8491 846,496.2154 846,496.5812" fill="none" id="internet-to-ingress" style="stroke:#000000;stroke-width:1;"/><polygon fill="#000000" points="846,502.5812,850,493.5812,846,497.5812,842,493.5812,846,502.5812" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="75.0737" x="847" y="411.2663">HTTPS :443</text></g><!--link ingress to nginx--><g class="link" data-entity-1="ingress" data-entity-2="nginx" data-source-line="49" data-uid="lnk25" id="link_ingress_nginx"><path d="M842.5394,637.5604 C842.5114,637.9336 842.4833,638.3085 842.4551,638.6848 C842.2296,641.6957 841.9967,644.8045 841.7575,647.9972 C841.2792,654.3827 840.7757,661.1039 840.2555,668.049 C839.215,681.9391 838.1075,696.7244 837,711.5094 C835.8925,726.2944 834.785,741.0791 833.7445,754.9679 C833.4844,758.4401 833.2285,761.8563 832.9778,765.2025 C832.9465,765.6208 833.3635,760.0548 833.3323,760.4708" fill="none" id="ingress-to-nginx" style="stroke:#000000;stroke-width:1;"/><polygon fill="#000000" points="832.884,766.4541,837.5452,757.7781,833.2576,761.468,829.5676,757.1804,832.884,766.4541" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="58.5508" x="841.68" y="674.5663">HTTP :80</text></g><!--link nginx to aspnet--><g class="link" data-entity-1="nginx" data-entity-2="aspnet" data-source-line="50" data-uid="lnk26" id="link_nginx_aspnet"><path d="M824.204,879.8935 C823.2435,884.4995 822.0549,889.1847 820.5864,893.8125 C817.6494,903.0681 813.5925,912.0944 808,919.7994 C759.965,985.9644 681.695,1033.7869 614.5887,1065.2944 C581.0356,1081.0481 550.2734,1092.7231 527.477,1100.5728 C516.0788,1104.4977 506.6721,1107.4662 499.9036,1109.51 C499.0576,1109.7655 498.2527,1110.0066 497.4904,1110.2332 C497.1092,1110.3465 502.4934,1108.7585 502.1337,1108.8646" fill="none" id="nginx-to-aspnet" style="stroke:#000000;stroke-width:1;"/><polygon fill="#000000" points="496.3789,1110.5624,506.1429,1111.8523,501.1745,1109.1476,503.8792,1104.1792,496.3789,1110.5624" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="75.0928" x="796.71" y="940.8663">HTTP :5000</text><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="54.2979" x="807.1075" y="955.9991">/graphql</text></g><!--link aspnet to sqlserver--><g class="link" data-entity-1="aspnet" data-entity-2="sqlserver" data-source-line="51" data-uid="lnk27" id="link_aspnet_sqlserver"><path d="M496.3135,1114.6072 C496.4985,1114.6019 496.6865,1114.5966 496.8773,1114.5914 C497.6405,1114.5705 498.4495,1114.5503 499.3028,1114.5313 C506.1293,1114.3794 515.7949,1114.3053 527.5998,1114.5906 C551.2097,1115.1612 583.3769,1117.1694 618.5038,1122.8669 C688.7575,1134.2619 770.85,1160.4144 820,1219.3394 C831.3075,1232.8969 838.2606,1249.4806 842.3178,1266.7802 C844.3464,1275.4299 845.651,1284.2586 846.4139,1292.9775 C846.5093,1294.0673 846.5962,1295.1555 846.675,1296.2413 C846.7144,1296.7843 846.7518,1297.3266 846.7872,1297.8683 C846.8049,1298.1392 846.4522,1292.4213 846.4689,1292.6918" fill="none" id="aspnet-to-sqlserver" style="stroke:#000000;stroke-width:1;"/><polygon fill="#000000" points="846.8388,1298.6804,850.2764,1289.451,846.5305,1293.6899,842.2916,1289.9441,846.8388,1298.6804" style="stroke:#000000;stroke-width:1;"/><text fill="#000000" font-family="Verdana" font-size="13" lengthAdjust="spacing" textLength="66.4536" x="808.49" y="1207.4063">TCP :1433</text></g><!--link ingress to GMN28--><g class="link" data-entity-1="ingress" data-entity-2="GMN28" data-source-line="54" data-uid="lnk30" id="link_ingress_GMN28"><path d="M839.2676,502.65 C839.2712,502.3759 839.2751,502.1016 839.2793,501.8271 C839.2876,501.2779 839.297,500.7279 839.3075,500.1769 C839.3286,499.0749 839.3539,497.9692 839.3839,496.8603 C839.4438,494.6425 839.5221,492.4116 839.6201,490.171 C839.8161,485.6896 840.0913,481.1689 840.4577,476.6345 C841.9231,458.4969 844.8475,440.1394 850,423.1994 C854.22,409.3394 854.8,402.6694 867.5,395.6994 C951.44,349.6294 1021.78,498.2394 1047.52,562.3594" fill="none" id="ingress-GMN28" style="stroke:#000000;stroke-width:1;stroke-dasharray:7,7;"/></g><!--link nginx to GMN31--><g class="link" data-entity-1="nginx" data-entity-2="GMN31" data-source-line="60" data-uid="lnk33" id="link_nginx_GMN31"><path d="M836.2022,806.906 C836.3527,806.4891 836.5053,806.0684 836.6601,805.644 C836.9696,804.7953 837.2878,803.9319 837.6147,803.0544 C838.2686,801.2996 838.9572,799.4888 839.6812,797.6286 C841.1291,793.908 842.7182,789.9893 844.4521,785.9227 C847.9198,777.7896 851.9666,769.0653 856.6213,760.1531 C875.24,724.5044 903.585,685.8494 943.5,669.9994 C980.47,655.3194 1085.53,655.3194 1122.5,669.9994 C1175.36,690.9894 1211.36,748.6494 1231.05,789.3294" fill="none" id="nginx-GMN31" style="stroke:#000000;stroke-width:1;stroke-dasharray:7,7;"/></g><!--link aspnet to GMN34--><g class="link" data-entity-1="aspnet" data-entity-2="GMN34" data-source-line="68" data-uid="lnk36" id="link_aspnet_GMN34"><path d="M497.6692,1113.9394 C498.2619,1113.9394 498.8545,1113.9394 499.4471,1113.9394 C500.6323,1113.9394 501.8176,1113.9394 503.0028,1113.9394 C507.7437,1113.9394 512.4846,1113.9394 517.2255,1113.9394 C526.7073,1113.9394 536.1891,1113.9394 545.6708,1113.9394 C564.6343,1113.9394 583.5976,1113.9394 602.5608,1113.9394 C640.4872,1113.9394 678.4131,1113.9394 716.3388,1113.9394 C792.19,1113.9394 868.04,1113.9394 943.89,1113.9394" fill="none" id="aspnet-GMN34" style="stroke:#000000;stroke-width:1;stroke-dasharray:7,7;"/></g><!--link sqlserver to GMN37--><g class="link" data-entity-1="sqlserver" data-entity-2="GMN37" data-source-line="77" data-uid="lnk39" id="link_sqlserver_GMN37"><path d="M848.3069,1380.4894 C848.4405,1380.4894 848.5742,1380.4894 848.7078,1380.4894 C849.2423,1380.4894 849.7768,1380.4894 850.3113,1380.4894 C851.3803,1380.4894 852.4493,1380.4894 853.5183,1380.4894 C857.7943,1380.4894 862.0702,1380.4894 866.3459,1380.4894 C874.8975,1380.4894 883.4488,1380.4894 892,1380.4894 C909.1025,1380.4894 926.205,1380.4894 943.31,1380.4894" fill="none" id="sqlserver-GMN37" style="stroke:#000000;stroke-width:1;stroke-dasharray:7,7;"/></g><!--link k3s to GMN40--><g class="link" data-entity-1="k3s" data-entity-2="GMN40" data-source-line="84" data-uid="lnk42" id="link_k3s_GMN40"><path d="M920.0551,624.7156 C920.0849,624.8197 920.1149,624.9238 920.1448,625.028 C920.2048,625.2364 920.2651,625.4452 920.3257,625.6543 C920.568,626.4906 920.8152,627.3322 921.0672,628.1779 C921.5711,629.8691 922.0941,631.5763 922.6358,633.2895 C924.8025,640.1425 927.2675,647.0919 930,653.4994 C954.03,709.8594 992.09,770.6594 1014.6,804.6494" fill="none" id="k3s-GMN40" style="stroke:#000000;stroke-width:1;stroke-dasharray:7,7;"/></g><!--SRC=[XPLDSzis48Rl_1LRzP3s85lrnpJMU3GZKnzsuZegoKuERWuGkQ8m0W4605qh6V_tB01IafL9oeE6s7s1VNQnI_rYrrWXr89n6PaDbpNJh0Af2hnX-QRKgf55h8JIyElixUngDZvMALsWRXKNLvU3opyF5BcgQYLHskyEcrvDu-aiYYot0Y7bncB5e418iAI5LkvzQcnJS2Oj6kZ3XBEI3lMg2PfQS2mRZ2A70RsObYJi0JEG-tVu6W4zEmReFR0dB5b1yJ_YqYkNMlrdKBTIzpoEPTa8fY5TZ3zvwqlqqWLvVsuW5Wt1QlZjWLL4mN8S0ijPWHLdl_j3DwJw6lczOTjAAqAJHR_0MgXjHJ1UsDaNge3hQ_eTZGv83i5BBf_z5kdU3aGUERNCyXncNA3vzDgLu1DgWx3GwdcxzxsqcHr0ifeVyv7fVz76wUBaOPf1h7GeFZErH7kC-1xfKb50Yfg0ZY3dcjNhl-zXAejQSMcFtEy-PZ1kxFh8V8jCs3N4QymtFytCV1R6X-qRAXIk6bg618jbo2zjxIdQLtaMpB8be_BrKi8Bx70sE3lpktVdVdyVJK75cKgjX73LXCdDJmappN35Dt0dIut6-DDvU2UwrlgAx36xJo53NN59Tw_a_lZ7H3MMDaFIxDh1jt0kL5D0xuvQJiks0BnTHD4Rka69ptGKcgWRYtv_j9F046wpR956EqFm1ihM2SEBY_EeCpf1QDZWXk7RGHGCpjLsIkUx70m6_yhJqZN3Pn6rNYVS5te8MKpIFoxEpzrCMWJDoxK5jUf8AD_hvMYYg31S3QzFboEoTFDvGYAKlAboAllp2RLna5CnlHJkqRunr8UvtjOsej445-Gub4yXxFIJwKgtucKNhG_pBxm-lT7A2kvdnO5HPRsl7TOL3IlaB5yJKjZJ3a7j9ZKeCMyqjrjO8-5hyqEUKAe0zA6slE9VMEvlSe_KDkyyzgk4JjncAca24_5Bp5qVGQsKw90IcWeGT9pjB6uKdvZWXM-w7mBjBYmm9IuHemvepY1U_4EbeSA4zSabp6yW6V_bbmlArlqbqEGyAT5KU1nfgQnLbGj57ziG9BuxZIVX5kVS8eEnJwZrqlT3zKtEN6v1TBiOjrUu-uvxUzSh-v3V0000]--></g></svg> |