dagarcos 3 weeks ago
parent
commit
206bae34e4

+ 68 - 11
Slides/SpringDataPoly2026.md

@@ -117,7 +117,7 @@ style: |
 ---
 
 ### Relacionales (SQL)
-<div class="box-compact">
+<div class="box-supercompact">
 
 | Tipo                    | Características principales                                    | Casos de uso                         | Ejemplos                 |
 |-------------------------|--------------------------------------------------------------|--------------------------------------|--------------------------|
@@ -133,7 +133,7 @@ style: |
 
 ### No Relacionales (NoSQL)
 
-<div class="box-compact">
+<div class="box-supercompact">
 
 | Tipo               | Características principales                          | Casos de uso                          | Ejemplos            |
 |--------------------|-----------------------------------------------------|---------------------------------------|---------------------|
@@ -275,10 +275,11 @@ Construir un sistema:
 
 ### Tecnologías
 
-- BD relacion -> productos, categorías, usuarios... (**integridad**)
+- BD relacional -> productos, categorías, usuarios... (**integridad**)
 - Redis -> estado activo de las subastas (**velocidad**)
 - MongoDB -> almacenamiento histórico (**flexibilidad**)
 - APIs REST -> integración entre servicios (**desacoplamiento**)
+- Spring Data REST -> exponer repositorios como API (**agilidad**)
 
 ---
 
@@ -335,14 +336,9 @@ Construir un sistema:
 - Soporte de TTL (expiración automática)
 - Estructuras avanzadas (listas, sets, etc.)
 
----
-
-## Casos de uso
+### Casos de uso
 
-- Cache
-- Estado temporal
-- Sesiones
-- Sistemas en tiempo real
+- Cache, Estado temporal, Sesiones, Sistemas en tiempo real
 
 ---
 
@@ -370,6 +366,49 @@ Construir un sistema:
 ---
 
 
+## Spring Data REST
+
+### ¿Qué es?
+
+- Componente de Spring que expone automáticamente repositorios como API REST
+- Genera endpoints CRUD sin necesidad de controladores
+- Basado en HATEOAS (Hypermedia)
+
+
+### ¿Qué hace?
+
+- Expone entidades directamente como recursos REST
+- Genera endpoints como:
+  - GET /api/items
+  - GET /api/items/{id}
+- Incluye enlaces (_links) para navegación entre recursos
+
+---
+
+<div class="box success">
+
+#### ¿Cuándo usarlo?
+
+- Prototipos rápidos
+- APIs CRUD simples
+- Sistemas con bajo control de lógica de negocio
+- Cuando se quiere reducir código boilerplate
+
+</div>
+<br>
+<div class="box danger">
+
+#### ¿Cuándo NO usarlo?
+
+- Lógica de negocio compleja
+- APIs públicas que requieren mayor personalización
+- Necesidad de control fino sobre endpoints
+- Cuando el modelo interno no debe exponerse directamente
+
+</div>
+
+---
+
 ## Resolviendo los desafíos
 
 
@@ -536,6 +575,24 @@ La reactividad es una forma distinta de modelar el flujo del sistema
 
 ---
 
-<img src="img/diagrama_componentes.png" width="90%"/>
+<img src="img/diagrama_bbdds.png" width="70%"/>
 
 ---
+
+### Todo esto está implementado en:
+
+- **Auction API**
+  - https://inmaculados.uv.es/dagarcos/bidflow-auction-api
+- **Auction Catalog**
+  - https://inmaculados.uv.es/dagarcos/bidflow-auction-catalog
+- **Auction Persistence**
+  - https://inmaculados.uv.es/dagarcos/bidflow-auction-persistence
+- **Auction Users**
+  - https://inmaculados.uv.es/dagarcos/bidflow-users
+- **Bid Client**
+  - https://inmaculados.uv.es/dagarcos/bidflow-bid-client
+
+<br>
+
+Vamos a ver algunas particularidades de la implementación
+

BIN
Slides/SpringDataPolyglot2026.pdf


File diff suppressed because it is too large
+ 12 - 12
Slides/img/diagrama_bbdds.drawio


BIN
Slides/img/diagrama_bbdds.png


+ 66 - 57
Slides/img/diagrama_componentes.drawio

@@ -1,89 +1,82 @@
 <mxfile host="app.diagrams.net">
   <diagram name="Auction System - Engineering View" id="0">
-    <mxGraphModel dx="2847" dy="2240" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
+    <mxGraphModel dx="3184" dy="2482" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
       <root>
         <mxCell id="0" />
         <mxCell id="1" parent="0" />
-        <mxCell id="auctionContainer" parent="1" style="swimlane;horizontal=0;startSize=40;fillColor=#e1d5e7;fontSize=16;strokeColor=#9673a6;" value="Auction System" vertex="1">
-          <mxGeometry height="610" width="840" x="350" y="90" as="geometry" />
-        </mxCell>
-        <mxCell id="redis" parent="auctionContainer" style="rounded=1;fillColor=#ffe6cc;fontSize=16;fontStyle=1;strokeColor=#d79b00;" value="Redis" vertex="1">
-          <mxGeometry height="40" width="230" x="74" y="90" as="geometry" />
+        <mxCell id="auctionContainer" parent="1" style="swimlane;horizontal=0;startSize=40;fillColor=#f5f5f5;fontSize=16;strokeColor=#666666;fontColor=#333333;" value="Auction System" vertex="1">
+          <mxGeometry height="620" width="840" x="350" y="90" as="geometry" />
         </mxCell>
         <mxCell id="CJt7FYll3WHYcLXgkBZM-1" parent="auctionContainer" style="swimlane;horizontal=0;startSize=40;fillColor=#e1d5e7;fontSize=16;strokeColor=#9673a6;" value="Catalog Service" vertex="1">
-          <mxGeometry height="270" width="300" x="510" y="20" as="geometry" />
-        </mxCell>
-        <mxCell id="CJt7FYll3WHYcLXgkBZM-8" edge="1" parent="CJt7FYll3WHYcLXgkBZM-1" source="CJt7FYll3WHYcLXgkBZM-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" target="CJt7FYll3WHYcLXgkBZM-6">
-          <mxGeometry relative="1" as="geometry" />
+          <mxGeometry height="280" width="300" x="510" y="20" as="geometry" />
         </mxCell>
-        <mxCell id="CJt7FYll3WHYcLXgkBZM-5" parent="CJt7FYll3WHYcLXgkBZM-1" style="rounded=1;fontSize=16;fillColor=#fad9d5;strokeColor=#ae4132;" value="Controller" vertex="1">
-          <mxGeometry height="40" width="200" x="70" y="24" as="geometry" />
-        </mxCell>
-        <mxCell id="CJt7FYll3WHYcLXgkBZM-9" edge="1" parent="CJt7FYll3WHYcLXgkBZM-1" source="CJt7FYll3WHYcLXgkBZM-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" target="CJt7FYll3WHYcLXgkBZM-7">
-          <mxGeometry relative="1" as="geometry" />
+        <mxCell id="CJt7FYll3WHYcLXgkBZM-5" parent="CJt7FYll3WHYcLXgkBZM-1" style="rounded=1;fontSize=16;fillColor=#fad9d5;strokeColor=#ae4132;" value="Data REST" vertex="1">
+          <mxGeometry height="40" width="200" x="70" y="36" as="geometry" />
         </mxCell>
-        <mxCell id="CJt7FYll3WHYcLXgkBZM-6" parent="CJt7FYll3WHYcLXgkBZM-1" style="rounded=1;fontSize=16;fillColor=#dae8fc;strokeColor=#6c8ebf;" value="Service" vertex="1">
-          <mxGeometry height="40" width="200" x="70" y="114" as="geometry" />
+        <mxCell id="CJt7FYll3WHYcLXgkBZM-9" edge="1" parent="CJt7FYll3WHYcLXgkBZM-1" source="CJt7FYll3WHYcLXgkBZM-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" target="CJt7FYll3WHYcLXgkBZM-7">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="170" y="166" as="sourcePoint" />
+          </mxGeometry>
         </mxCell>
         <mxCell id="CJt7FYll3WHYcLXgkBZM-7" parent="CJt7FYll3WHYcLXgkBZM-1" style="rounded=1;fontSize=16;fillColor=#fff2cc;strokeColor=#d6b656;" value="Repository" vertex="1">
-          <mxGeometry height="40" width="200" x="70" y="204" as="geometry" />
+          <mxGeometry height="40" width="200" x="70" y="216" as="geometry" />
+        </mxCell>
+        <mxCell id="PRI0kvEDKCRMPulbcIRE-6" parent="CJt7FYll3WHYcLXgkBZM-1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=16;fontStyle=1" value=":8082" vertex="1">
+          <mxGeometry height="30" width="60" x="40" as="geometry" />
         </mxCell>
         <mxCell id="CJt7FYll3WHYcLXgkBZM-18" parent="auctionContainer" style="swimlane;horizontal=0;startSize=40;fillColor=#e1d5e7;fontSize=16;strokeColor=#9673a6;" value="Persistence Service" vertex="1">
-          <mxGeometry height="270" width="300" x="510" y="320" as="geometry" />
+          <mxGeometry height="280" width="300" x="510" y="310" as="geometry" />
         </mxCell>
         <mxCell id="CJt7FYll3WHYcLXgkBZM-19" edge="1" parent="CJt7FYll3WHYcLXgkBZM-18" source="CJt7FYll3WHYcLXgkBZM-20" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" target="CJt7FYll3WHYcLXgkBZM-22">
           <mxGeometry relative="1" as="geometry" />
         </mxCell>
         <mxCell id="CJt7FYll3WHYcLXgkBZM-20" parent="CJt7FYll3WHYcLXgkBZM-18" style="rounded=1;fontSize=16;fillColor=#f8cecc;strokeColor=#b85450;" value="Controller" vertex="1">
-          <mxGeometry height="40" width="200" x="70" y="24" as="geometry" />
+          <mxGeometry height="40" width="200" x="70" y="37" as="geometry" />
         </mxCell>
         <mxCell id="CJt7FYll3WHYcLXgkBZM-21" edge="1" parent="CJt7FYll3WHYcLXgkBZM-18" source="CJt7FYll3WHYcLXgkBZM-22" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" target="CJt7FYll3WHYcLXgkBZM-23">
           <mxGeometry relative="1" as="geometry" />
         </mxCell>
         <mxCell id="CJt7FYll3WHYcLXgkBZM-22" parent="CJt7FYll3WHYcLXgkBZM-18" style="rounded=1;fontSize=16;fillColor=#dae8fc;strokeColor=#6c8ebf;" value="Service" vertex="1">
-          <mxGeometry height="40" width="200" x="70" y="114" as="geometry" />
+          <mxGeometry height="40" width="200" x="70" y="127" as="geometry" />
         </mxCell>
         <mxCell id="CJt7FYll3WHYcLXgkBZM-23" parent="CJt7FYll3WHYcLXgkBZM-18" style="rounded=1;fontSize=16;fillColor=#fff2cc;strokeColor=#d6b656;" value="Repository" vertex="1">
-          <mxGeometry height="40" width="200" x="70" y="204" as="geometry" />
+          <mxGeometry height="40" width="200" x="70" y="217" as="geometry" />
         </mxCell>
-        <mxCell id="CJt7FYll3WHYcLXgkBZM-40" edge="1" parent="auctionContainer" source="CJt7FYll3WHYcLXgkBZM-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;strokeWidth=2;" target="redis">
-          <mxGeometry relative="1" as="geometry" />
+        <mxCell id="PRI0kvEDKCRMPulbcIRE-7" parent="CJt7FYll3WHYcLXgkBZM-18" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=16;fontStyle=1" value=":8084" vertex="1">
+          <mxGeometry height="30" width="60" x="40" as="geometry" />
         </mxCell>
-        <mxCell id="CJt7FYll3WHYcLXgkBZM-12" parent="auctionContainer" style="swimlane;horizontal=0;startSize=40;fillColor=#e1d5e7;fontSize=16;strokeColor=#9673a6;" value="Auction API     [ WebFlux ]" vertex="1">
-          <mxGeometry height="340" width="400" x="90" y="220" as="geometry" />
+        <mxCell id="CJt7FYll3WHYcLXgkBZM-12" parent="auctionContainer" style="swimlane;horizontal=0;startSize=40;fillColor=#e1d5e7;fontSize=16;strokeColor=#9673a6;" value="Auction API     [ Reactive ]" vertex="1">
+          <mxGeometry height="390" width="360" x="90" y="200" as="geometry" />
         </mxCell>
         <mxCell id="CJt7FYll3WHYcLXgkBZM-13" edge="1" parent="CJt7FYll3WHYcLXgkBZM-12" source="CJt7FYll3WHYcLXgkBZM-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" target="CJt7FYll3WHYcLXgkBZM-16">
           <mxGeometry relative="1" as="geometry" />
         </mxCell>
         <mxCell id="CJt7FYll3WHYcLXgkBZM-14" parent="CJt7FYll3WHYcLXgkBZM-12" style="rounded=1;fontSize=16;fillColor=#fad9d5;strokeColor=#ae4132;" value="Controller" vertex="1">
-          <mxGeometry height="40" width="200" x="70" y="24" as="geometry" />
+          <mxGeometry height="40" width="200" x="70" y="40" as="geometry" />
         </mxCell>
         <mxCell id="CJt7FYll3WHYcLXgkBZM-15" edge="1" parent="CJt7FYll3WHYcLXgkBZM-12" source="CJt7FYll3WHYcLXgkBZM-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" target="CJt7FYll3WHYcLXgkBZM-17">
           <mxGeometry relative="1" as="geometry" />
         </mxCell>
-        <mxCell id="CJt7FYll3WHYcLXgkBZM-43" edge="1" parent="CJt7FYll3WHYcLXgkBZM-12" source="CJt7FYll3WHYcLXgkBZM-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" target="CJt7FYll3WHYcLXgkBZM-41">
+        <mxCell id="CJt7FYll3WHYcLXgkBZM-44" edge="1" parent="CJt7FYll3WHYcLXgkBZM-12" source="CJt7FYll3WHYcLXgkBZM-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" target="CJt7FYll3WHYcLXgkBZM-37">
           <mxGeometry relative="1" as="geometry" />
         </mxCell>
-        <mxCell id="CJt7FYll3WHYcLXgkBZM-44" edge="1" parent="CJt7FYll3WHYcLXgkBZM-12" source="CJt7FYll3WHYcLXgkBZM-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" target="CJt7FYll3WHYcLXgkBZM-37">
+        <mxCell id="PRI0kvEDKCRMPulbcIRE-2" edge="1" parent="CJt7FYll3WHYcLXgkBZM-12" source="CJt7FYll3WHYcLXgkBZM-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" target="CJt7FYll3WHYcLXgkBZM-41">
           <mxGeometry relative="1" as="geometry" />
         </mxCell>
         <mxCell id="CJt7FYll3WHYcLXgkBZM-16" parent="CJt7FYll3WHYcLXgkBZM-12" style="rounded=1;fontSize=16;fillColor=#dae8fc;strokeColor=#6c8ebf;" value="Service" vertex="1">
-          <mxGeometry height="40" width="200" x="70" y="150" as="geometry" />
+          <mxGeometry height="40" width="200" x="70" y="166" as="geometry" />
         </mxCell>
         <mxCell id="CJt7FYll3WHYcLXgkBZM-17" parent="CJt7FYll3WHYcLXgkBZM-12" style="rounded=1;fontSize=16;fillColor=#fff2cc;strokeColor=#d6b656;" value="Repository" vertex="1">
-          <mxGeometry height="40" width="200" x="70" y="273" as="geometry" />
+          <mxGeometry height="40" width="200" x="70" y="289" as="geometry" />
         </mxCell>
-        <mxCell id="CJt7FYll3WHYcLXgkBZM-37" parent="CJt7FYll3WHYcLXgkBZM-12" style="rounded=1;fontSize=16;rotation=-90;fillColor=#d5e8d4;strokeColor=#82b366;" value="Reactive Client" vertex="1">
-          <mxGeometry height="40" width="140.87" x="250" y="233" as="geometry" />
+        <mxCell id="CJt7FYll3WHYcLXgkBZM-37" parent="CJt7FYll3WHYcLXgkBZM-12" style="rounded=1;fontSize=16;rotation=-90;fillColor=#d5e8d4;strokeColor=#82b366;" value="Reactive Feign Client" vertex="1">
+          <mxGeometry height="40" width="162.72" x="239.08" y="276.23" as="geometry" />
         </mxCell>
-        <mxCell id="CJt7FYll3WHYcLXgkBZM-41" parent="CJt7FYll3WHYcLXgkBZM-12" style="rounded=1;fontSize=16;rotation=-90;fillColor=#d5e8d4;strokeColor=#82b366;" value="Imperative Client" vertex="1">
-          <mxGeometry height="40" width="140.87" x="249.99500000000012" y="64.00500000000011" as="geometry" />
+        <mxCell id="CJt7FYll3WHYcLXgkBZM-41" parent="CJt7FYll3WHYcLXgkBZM-12" style="rounded=1;fontSize=16;rotation=-90;fillColor=#d5e8d4;strokeColor=#82b366;" value="Feign Client" vertex="1">
+          <mxGeometry height="40" width="140.87" x="249.99500000000012" y="65.99500000000012" as="geometry" />
         </mxCell>
-        <mxCell id="CJt7FYll3WHYcLXgkBZM-10" parent="auctionContainer" style="shape=cylinder;fontSize=16;fontStyle=1;fillColor=#ffe6cc;strokeColor=#d79b00;" value="&#xa;Relational DB" vertex="1">
-          <mxGeometry height="80" width="180" x="920" y="115" as="geometry" />
-        </mxCell>
-        <mxCell id="CJt7FYll3WHYcLXgkBZM-32" edge="1" parent="auctionContainer" source="CJt7FYll3WHYcLXgkBZM-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=2;" target="CJt7FYll3WHYcLXgkBZM-10">
-          <mxGeometry relative="1" as="geometry" />
+        <mxCell id="PRI0kvEDKCRMPulbcIRE-4" parent="CJt7FYll3WHYcLXgkBZM-12" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=16;fontStyle=1" value=":8081" vertex="1">
+          <mxGeometry height="30" width="60" x="40" as="geometry" />
         </mxCell>
         <mxCell id="CJt7FYll3WHYcLXgkBZM-39" edge="1" parent="auctionContainer" source="CJt7FYll3WHYcLXgkBZM-37" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=2;" target="CJt7FYll3WHYcLXgkBZM-18">
           <mxGeometry relative="1" as="geometry" />
@@ -92,7 +85,7 @@
           <mxGeometry relative="1" as="geometry" />
         </mxCell>
         <mxCell id="userContainer" parent="1" style="swimlane;horizontal=0;startSize=40;fillColor=#e1d5e7;fontSize=16;strokeColor=#9673a6;" value="Bid Client" vertex="1">
-          <mxGeometry height="330" width="300" x="-50" y="190" as="geometry" />
+          <mxGeometry height="260" width="300" x="-10" y="190" as="geometry" />
         </mxCell>
         <mxCell id="CJt7FYll3WHYcLXgkBZM-47" edge="1" parent="userContainer" source="bidGui" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" target="bidClientApi">
           <mxGeometry relative="1" as="geometry" />
@@ -100,35 +93,37 @@
         <mxCell id="bidGui" parent="userContainer" style="rounded=1;fontSize=16;fillColor=#fad9d5;strokeColor=#ae4132;" value="GUI&#xa;(Spring MVC / Thymeleaf)" vertex="1">
           <mxGeometry height="70" width="220" x="60" y="50" as="geometry" />
         </mxCell>
-        <mxCell id="bidClientApi" parent="userContainer" style="rounded=1;fontSize=16;fillColor=#d5e8d4;strokeColor=#82b366;" value="Imperative Client" vertex="1">
+        <mxCell id="bidClientApi" parent="userContainer" style="rounded=1;fontSize=16;fillColor=#d5e8d4;strokeColor=#82b366;" value="Feign Client" vertex="1">
           <mxGeometry height="40" width="220" x="60" y="190" as="geometry" />
         </mxCell>
+        <mxCell id="PRI0kvEDKCRMPulbcIRE-3" parent="userContainer" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=16;fontStyle=1" value=":8080" vertex="1">
+          <mxGeometry height="30" width="60" x="40" as="geometry" />
+        </mxCell>
         <mxCell id="userDb" parent="1" style="shape=cylinder;fontSize=16;fontStyle=1;fillColor=#ffe6cc;strokeColor=#d79b00;" value="&#xa;Relational DB" vertex="1">
-          <mxGeometry height="80" width="200" x="1270" y="-115" as="geometry" />
+          <mxGeometry height="80" width="200" x="1241" y="-125" as="geometry" />
         </mxCell>
         <mxCell id="CJt7FYll3WHYcLXgkBZM-36" edge="1" parent="1" source="CJt7FYll3WHYcLXgkBZM-24" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=2;" target="userDb">
           <mxGeometry relative="1" as="geometry" />
         </mxCell>
         <mxCell id="CJt7FYll3WHYcLXgkBZM-24" parent="1" style="swimlane;horizontal=0;startSize=40;fillColor=#e1d5e7;fontSize=16;strokeColor=#9673a6;" value="User Service" vertex="1">
-          <mxGeometry height="270" width="300" x="750" y="-210" as="geometry" />
+          <mxGeometry height="290" width="300" x="780" y="-230" as="geometry" />
         </mxCell>
-        <mxCell id="CJt7FYll3WHYcLXgkBZM-25" edge="1" parent="CJt7FYll3WHYcLXgkBZM-24" source="CJt7FYll3WHYcLXgkBZM-26" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" target="CJt7FYll3WHYcLXgkBZM-28">
-          <mxGeometry relative="1" as="geometry" />
-        </mxCell>
-        <mxCell id="CJt7FYll3WHYcLXgkBZM-26" parent="CJt7FYll3WHYcLXgkBZM-24" style="rounded=1;fontSize=16;fillColor=#f8cecc;strokeColor=#b85450;" value="Controller" vertex="1">
-          <mxGeometry height="40" width="200" x="70" y="24" as="geometry" />
+        <mxCell id="CJt7FYll3WHYcLXgkBZM-26" parent="CJt7FYll3WHYcLXgkBZM-24" style="rounded=1;fontSize=16;fillColor=#f8cecc;strokeColor=#b85450;" value="Data REST" vertex="1">
+          <mxGeometry height="40" width="200" x="70" y="41" as="geometry" />
         </mxCell>
-        <mxCell id="CJt7FYll3WHYcLXgkBZM-27" edge="1" parent="CJt7FYll3WHYcLXgkBZM-24" source="CJt7FYll3WHYcLXgkBZM-28" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" target="CJt7FYll3WHYcLXgkBZM-29">
-          <mxGeometry relative="1" as="geometry" />
-        </mxCell>
-        <mxCell id="CJt7FYll3WHYcLXgkBZM-28" parent="CJt7FYll3WHYcLXgkBZM-24" style="rounded=1;fontSize=16;fillColor=#dae8fc;strokeColor=#6c8ebf;" value="Service" vertex="1">
-          <mxGeometry height="40" width="200" x="70" y="114" as="geometry" />
+        <mxCell id="CJt7FYll3WHYcLXgkBZM-27" edge="1" parent="CJt7FYll3WHYcLXgkBZM-24" source="CJt7FYll3WHYcLXgkBZM-26" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" target="CJt7FYll3WHYcLXgkBZM-29">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="170" y="171" as="sourcePoint" />
+          </mxGeometry>
         </mxCell>
         <mxCell id="CJt7FYll3WHYcLXgkBZM-29" parent="CJt7FYll3WHYcLXgkBZM-24" style="rounded=1;fontSize=16;fillColor=#fff2cc;strokeColor=#d6b656;" value="Repository" vertex="1">
-          <mxGeometry height="40" width="200" x="70" y="204" as="geometry" />
+          <mxGeometry height="40" width="200" x="70" y="221" as="geometry" />
+        </mxCell>
+        <mxCell id="PRI0kvEDKCRMPulbcIRE-5" parent="CJt7FYll3WHYcLXgkBZM-24" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=16;fontStyle=1" value=":8083" vertex="1">
+          <mxGeometry height="30" width="60" x="40" as="geometry" />
         </mxCell>
         <mxCell id="CJt7FYll3WHYcLXgkBZM-33" parent="1" style="shape=cylinder;fontSize=16;fontStyle=1;fillColor=#ffe6cc;strokeColor=#d79b00;" value="&#xa;Non-Relational DB" vertex="1">
-          <mxGeometry height="80" width="180" x="1270" y="504" as="geometry" />
+          <mxGeometry height="80" width="180" x="1251" y="500" as="geometry" />
         </mxCell>
         <mxCell id="CJt7FYll3WHYcLXgkBZM-34" edge="1" parent="1" source="CJt7FYll3WHYcLXgkBZM-18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=2;" target="CJt7FYll3WHYcLXgkBZM-33">
           <mxGeometry relative="1" as="geometry" />
@@ -136,7 +131,21 @@
         <mxCell id="CJt7FYll3WHYcLXgkBZM-45" edge="1" parent="1" source="CJt7FYll3WHYcLXgkBZM-41" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=2;" target="CJt7FYll3WHYcLXgkBZM-24">
           <mxGeometry relative="1" as="geometry" />
         </mxCell>
-        <mxCell id="CJt7FYll3WHYcLXgkBZM-46" edge="1" parent="1" source="bidClientApi" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=2;" target="CJt7FYll3WHYcLXgkBZM-12">
+        <mxCell id="CJt7FYll3WHYcLXgkBZM-46" edge="1" parent="1" source="bidClientApi" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=2;" target="auctionContainer">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="PRI0kvEDKCRMPulbcIRE-1" parent="1" style="shape=cylinder;fontSize=16;fontStyle=1;fillColor=#ffe6cc;strokeColor=#d79b00;" value="&#xa;Key/Value DB" vertex="1">
+          <mxGeometry height="60" width="200" x="430" y="-20" as="geometry" />
+        </mxCell>
+        <mxCell id="CJt7FYll3WHYcLXgkBZM-40" edge="1" parent="1" source="CJt7FYll3WHYcLXgkBZM-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;strokeWidth=2;" target="PRI0kvEDKCRMPulbcIRE-1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="539" y="220" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="CJt7FYll3WHYcLXgkBZM-10" parent="1" style="shape=cylinder;fontSize=16;fontStyle=1;fillColor=#ffe6cc;strokeColor=#d79b00;" value="&#xa;Relational DB" vertex="1">
+          <mxGeometry height="80" width="180" x="1251" y="210" as="geometry" />
+        </mxCell>
+        <mxCell id="CJt7FYll3WHYcLXgkBZM-32" edge="1" parent="1" source="CJt7FYll3WHYcLXgkBZM-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=2;" target="CJt7FYll3WHYcLXgkBZM-10">
           <mxGeometry relative="1" as="geometry" />
         </mxCell>
       </root>

BIN
Slides/img/diagrama_componentes.png


Some files were not shown because too many files changed in this diff