<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jose Luis Ariza</title>
    <description>The latest articles on DEV Community by Jose Luis Ariza (@jlarizar).</description>
    <link>https://dev.to/jlarizar</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2763100%2F3104883d-616f-4f87-bbbc-1eeb5706f903.jpg</url>
      <title>DEV Community: Jose Luis Ariza</title>
      <link>https://dev.to/jlarizar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jlarizar"/>
    <language>en</language>
    <item>
      <title>AI-DLC de AWS: Hacia un ciclo de vida del desarrollo de software nativo de IA.</title>
      <dc:creator>Jose Luis Ariza</dc:creator>
      <pubDate>Sat, 18 Jul 2026 21:26:15 +0000</pubDate>
      <link>https://dev.to/aws-builders/ai-dlc-de-aws-hacia-un-ciclo-de-vida-del-desarrollo-de-software-nativo-de-ia-5016</link>
      <guid>https://dev.to/aws-builders/ai-dlc-de-aws-hacia-un-ciclo-de-vida-del-desarrollo-de-software-nativo-de-ia-5016</guid>
      <description>&lt;p&gt;Actualmente, muchos equipos utilizan la inteligencia artificial para analizar requisitos, formular preguntas, explorar alternativas, generar código, crear pruebas, explicar errores o redactar documentación. Aunque estas herramientas aceleran actividades concretas, normalmente son las personas quienes organizan el proceso, deciden cuándo recurrir a la IA y determinan cuál será el siguiente paso.&lt;/p&gt;

&lt;p&gt;Amazon Web Services (AWS) propone una visión diferente: &lt;strong&gt;AI-DLC (Artificial Intelligence–Driven Development Life Cycle; Ciclo de Vida de Desarrollo Impulsado por Inteligencia Artificial)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;En AI-DLC, la inteligencia artificial no se limita a responder solicitudes. También analiza el objetivo, formula preguntas, prepara planes, propone alternativas y ejecuta las actividades después de recibir la aprobación humana. Este patrón se repite durante todo el desarrollo.&lt;/p&gt;

&lt;p&gt;La metodología fue creada por &lt;strong&gt;Raja SP y su equipo en AWS&lt;/strong&gt;. Raja es &lt;strong&gt;Principal Solutions Architect (arquitecto principal de soluciones)&lt;/strong&gt; y lidera programas de transformación para desarrolladores dentro de AWS.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;La IA propone el camino y ejecuta el trabajo aprobado; las personas aportan contexto, revisan los resultados y toman las decisiones importantes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Para entender cómo funciona, aplicaremos AI-DLC a un proyecto hipotético: una aplicación web para reservar citas médicas.&lt;/p&gt;

&lt;h2&gt;
  
  
  El equipo del proyecto
&lt;/h2&gt;

&lt;p&gt;En nuestro ejemplo participarán:&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;María, Product Owner o PO (responsable del producto):&lt;/strong&gt; explica la necesidad, responde las preguntas y valida lo que se construirá.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Diego, Developer (desarrollador):&lt;/strong&gt; revisa los diseños, el código y las pruebas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Jose, arquitecto de soluciones:&lt;/strong&gt; interviene cuando deben evaluarse integraciones, requisitos no funcionales o decisiones técnicas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Un agente de IA:&lt;/strong&gt; formula preguntas, crea planes, propone artefactos y ejecuta el trabajo aprobado.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;El arquitecto de soluciones no se presenta como un participante obligatorio en todas las actividades. Lo incorporamos como especialista porque AWS menciona la participación de arquitectos y señala que, durante la construcción, el equipo debe aclarar en tiempo real las decisiones técnicas y arquitectónicas.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F488l0wmxhpq0ym2thpj7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F488l0wmxhpq0ym2thpj7.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Fase 1: Inception
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Inception (concepción)&lt;/strong&gt; es la fase en la que el equipo comprende lo que necesita construir y organiza el trabajo.&lt;/p&gt;

&lt;p&gt;Su principal ritual es &lt;strong&gt;Mob Elaboration (elaboración colaborativa)&lt;/strong&gt;. Durante esta sesión, el equipo revisa conjuntamente las preguntas y propuestas generadas por la IA. No se trata de que cada participante prepare documentos por separado para transferirlos posteriormente, sino de aclarar y decidir en tiempo real.&lt;/p&gt;

&lt;h4&gt;
  
  
  Aplicamos el Intent
&lt;/h4&gt;

&lt;p&gt;El proyecto comienza con un &lt;strong&gt;Intent (intención)&lt;/strong&gt;, una declaración de alto nivel sobre lo que se desea conseguir.&lt;/p&gt;

&lt;p&gt;María, como PO, comunica:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Crear una aplicación web que permita consultar los horarios disponibles y reservar una cita médica.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;La IA no comienza generando código. Primero pregunta:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;¿El paciente debe registrarse?&lt;/li&gt;
&lt;li&gt;¿Puede cancelar o reprogramar una cita?&lt;/li&gt;
&lt;li&gt;¿Cómo se evitarán reservas duplicadas?&lt;/li&gt;
&lt;li&gt;¿Cómo recibirá la confirmación?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;María aclara el comportamiento esperado. Diego identifica posibles restricciones de implementación y Jose señala que la aplicación deberá integrarse posteriormente con el sistema de médicos y horarios de la clínica.&lt;/p&gt;

&lt;p&gt;Con estas respuestas, la IA genera artefactos como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;User Stories (historias de usuario).&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Acceptance Criteria (criterios de aceptación).&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NFR, Non-Functional Requirements (requisitos no funcionales).&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Riesgos y criterios de medición.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Estos artefactos no se aceptan automáticamente. El equipo los revisa y solicita cambios hasta estar de acuerdo.&lt;/p&gt;

&lt;h4&gt;
  
  
  Aplicamos las Units
&lt;/h4&gt;

&lt;p&gt;Después, la IA divide el proyecto en &lt;strong&gt;Units (unidades de trabajo)&lt;/strong&gt;. Cada Unit agrupa una parte cohesionada de la solución que puede construirse con cierta independencia.&lt;/p&gt;

&lt;p&gt;Para nuestro proyecto propone:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Gestión de médicos y horarios.&lt;/li&gt;
&lt;li&gt;Reserva y reprogramación de citas.&lt;/li&gt;
&lt;li&gt;Confirmaciones y recordatorios.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;María valida que las Units cubran la necesidad inicial. Diego revisa si pueden desarrollarse de manera independiente y Jose analiza sus integraciones.&lt;/p&gt;

&lt;p&gt;La IA también propone un &lt;strong&gt;Workflow Plan (plan del flujo de trabajo)&lt;/strong&gt;. Como AI-DLC es adaptable, no todas las iniciativas deben pasar por las mismas actividades. Un proyecto nuevo puede necesitar requisitos, diseño y pruebas completas, mientras que una corrección sencilla podría avanzar directamente hacia la generación de código.&lt;/p&gt;

&lt;p&gt;Nuestro ejemplo es un proyecto &lt;strong&gt;greenfield (desarrollado desde cero)&lt;/strong&gt;, por lo que requiere mayor elaboración antes de comenzar a programar.&lt;/p&gt;

&lt;h4&gt;
  
  
  Aplicamos un Bolt
&lt;/h4&gt;

&lt;p&gt;Las Units se construyen mediante &lt;strong&gt;Bolts (iteraciones aceleradas)&lt;/strong&gt;. Un Bolt es un ciclo breve, normalmente medido en horas o días, en lugar de las varias semanas que podría durar un sprint tradicional.&lt;/p&gt;

&lt;p&gt;Para la Unit de reservas, la IA propone el siguiente Bolt:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Implementar la consulta y selección de horarios disponibles, generar las pruebas y presentar el resultado al equipo.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;El PO y los desarrolladores revisan el alcance. Si consideran que es demasiado grande, pueden dividirlo antes de aprobar su ejecución.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fase 2: Construction
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Construction (construcción)&lt;/strong&gt; transforma las Units aprobadas en software probado.&lt;/p&gt;

&lt;p&gt;Su ritual es &lt;strong&gt;Mob Construction (construcción colaborativa)&lt;/strong&gt;. Durante este proceso, la IA propone los diseños, planes de implementación, código y pruebas; mientras el equipo aclara las decisiones técnicas y arquitectónicas en tiempo real.&lt;/p&gt;

&lt;p&gt;En nuestro proyecto, la construcción de la Unit de reservas sigue este recorrido.&lt;/p&gt;

&lt;h4&gt;
  
  
  Domain Design
&lt;/h4&gt;

&lt;p&gt;La IA propone un &lt;strong&gt;Domain Design (diseño del dominio)&lt;/strong&gt; con los conceptos y reglas principales:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Paciente.&lt;/li&gt;
&lt;li&gt;Médico.&lt;/li&gt;
&lt;li&gt;Horario.&lt;/li&gt;
&lt;li&gt;Cita.&lt;/li&gt;
&lt;li&gt;Estado de la cita.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;También identifica reglas como impedir que dos pacientes reserven el mismo horario o liberar el horario cuando una cita sea cancelada.&lt;/p&gt;

&lt;p&gt;María confirma que las reglas representan el comportamiento esperado y Diego revisa que no existan contradicciones.&lt;/p&gt;

&lt;h4&gt;
  
  
  Logical Design
&lt;/h4&gt;

&lt;p&gt;Después, la IA genera un &lt;strong&gt;Logical Design (diseño lógico)&lt;/strong&gt;, donde convierte las reglas anteriores en una propuesta técnica.&lt;/p&gt;

&lt;p&gt;Aquí Jose, como arquitecto de soluciones, adquiere mayor participación. Revisa:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cómo se consultarán los horarios.&lt;/li&gt;
&lt;li&gt;Cómo se evitarán reservas simultáneas.&lt;/li&gt;
&lt;li&gt;Cómo se integrará la aplicación con otros sistemas.&lt;/li&gt;
&lt;li&gt;Cómo se protegerá la información.&lt;/li&gt;
&lt;li&gt;Qué ocurrirá si el servicio de notificaciones falla.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La IA puede presentar varias alternativas, pero la decisión final pertenece al equipo.&lt;/p&gt;

&lt;h4&gt;
  
  
  Código y pruebas
&lt;/h4&gt;

&lt;p&gt;Con el diseño aprobado, la IA prepara un plan numerado para generar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;La lógica de reserva.&lt;/li&gt;
&lt;li&gt;Las interfaces necesarias.&lt;/li&gt;
&lt;li&gt;Las validaciones.&lt;/li&gt;
&lt;li&gt;Las pruebas.&lt;/li&gt;
&lt;li&gt;La documentación.&lt;/li&gt;
&lt;li&gt;Los archivos de despliegue.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;El plan debe ser revisado antes de comenzar. AI-DLC prioriza la planificación y los puntos de aprobación para evitar que una suposición incorrecta avance hasta el código.&lt;/p&gt;

&lt;p&gt;Después de la aprobación, la IA genera el código y las pruebas. Diego revisa la implementación y valida que pueda comprenderla, mantenerla y corregirla. Jose vuelve a intervenir solamente si el resultado modifica alguna decisión de solución.&lt;/p&gt;

&lt;p&gt;El resultado es una &lt;strong&gt;Deployment Unit (unidad desplegable)&lt;/strong&gt;: código, configuraciones y pruebas preparados para ser desplegados.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fase 3: Operations
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Operations (operaciones)&lt;/strong&gt; comprende el despliegue, la observación y el mantenimiento de la solución.&lt;/p&gt;

&lt;p&gt;La IA utiliza el contexto acumulado durante las fases anteriores para analizar infraestructura, despliegues, métricas y errores bajo la supervisión del equipo.&lt;/p&gt;

&lt;p&gt;En nuestra aplicación podría detectar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Aumento en los tiempos de respuesta.&lt;/li&gt;
&lt;li&gt;Errores al consultar horarios.&lt;/li&gt;
&lt;li&gt;Intentos frecuentes de reservar citas ocupadas.&lt;/li&gt;
&lt;li&gt;Fallos en el envío de confirmaciones.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La IA puede analizar el problema y recomendar una acción, pero el equipo conserva el control sobre las decisiones relevantes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Los rituales mantienen la supervisión humana
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Mob Elaboration&lt;/strong&gt; y &lt;strong&gt;Mob Construction&lt;/strong&gt; no son reuniones adicionales agregadas al proceso. Son la forma en que AI-DLC organiza la colaboración entre la IA y las personas.&lt;/p&gt;

&lt;p&gt;Ambos rituales siguen un ciclo sencillo:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Las personas proporcionan una tarea o intención.&lt;/li&gt;
&lt;li&gt;La IA crea un plan y formula preguntas.&lt;/li&gt;
&lt;li&gt;El equipo proporciona aclaraciones.&lt;/li&gt;
&lt;li&gt;La IA ajusta su propuesta.&lt;/li&gt;
&lt;li&gt;Las personas aprueban el plan.&lt;/li&gt;
&lt;li&gt;La IA ejecuta.&lt;/li&gt;
&lt;li&gt;El equipo verifica el resultado.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Así, la velocidad de la IA no elimina la responsabilidad humana. Cada propuesta puede ser revisada antes de ejecutarse y cada resultado debe validarse antes de continuar.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Qué cambia frente al desarrollo asistido?
&lt;/h2&gt;

&lt;p&gt;En el desarrollo asistido, la persona podría solicitar:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Analiza estos requisitos e identifica preguntas pendientes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Después, otra persona puede iniciar una conversación diferente para diseñar la solución y, posteriormente, solicitar pruebas o código.&lt;/p&gt;

&lt;h4&gt;
  
  
  En AI-DLC
&lt;/h4&gt;

&lt;p&gt;El equipo comunica una intención y la IA participa en un flujo continuo:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Analiza el contexto disponible.&lt;/li&gt;
&lt;li&gt;Propone preguntas y aclaraciones.&lt;/li&gt;
&lt;li&gt;Prepara un plan.&lt;/li&gt;
&lt;li&gt;Espera la revisión humana.&lt;/li&gt;
&lt;li&gt;Genera los artefactos aprobados.&lt;/li&gt;
&lt;li&gt;Recomienda el siguiente nivel de trabajo.&lt;/li&gt;
&lt;li&gt;Conserva las decisiones como contexto.&lt;/li&gt;
&lt;li&gt;Ejecuta únicamente después de recibir aprobación.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Las personas también formulan preguntas, modifican los planes y proponen alternativas.&lt;/p&gt;

&lt;p&gt;AI-DLC no reduce su participación. Organiza la colaboración para que la IA pueda tomar mayor iniciativa sin adquirir autonomía completa.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;En el desarrollo asistido, las personas conducen el proceso y recurren a la IA para determinadas actividades. En AI-DLC, la IA también ayuda a conducir el proceso, mientras el equipo controla las decisiones y valida los resultados.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
   &lt;strong&gt;Los 10 principios de AI-DLC, en breve&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Reimaginar, no adaptar: no limitarse a insertar IA en un proceso antiguo.&lt;/li&gt;
&lt;li&gt;Invertir la conversación: la IA también formula preguntas y propone cómo avanzar.&lt;/li&gt;
&lt;li&gt;Integrar técnicas de diseño: diseñar antes de generar la implementación.&lt;/li&gt;
&lt;li&gt;Reconocer la capacidad real de la IA: aprovecharla sin otorgarle autonomía completa.&lt;/li&gt;
&lt;li&gt;Atender sistemas complejos: utilizarla donde existen reglas, dependencias y decisiones relevantes.&lt;/li&gt;
&lt;li&gt;Conservar artefactos útiles: mantener aquello que aporta contexto, control y trazabilidad.&lt;/li&gt;
&lt;li&gt;Facilitar la transición: utilizar conceptos relacionados con prácticas conocidas.&lt;/li&gt;
&lt;li&gt;Simplificar responsabilidades: reducir divisiones y transferencias innecesarias.&lt;/li&gt;
&lt;li&gt;Minimizar etapas: conservar únicamente las actividades que aportan valor o control.&lt;/li&gt;
&lt;li&gt;Evitar flujos rígidos: adaptar el recorrido a la complejidad de cada trabajo.&lt;/li&gt;
&lt;/ol&gt;



&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;AI-DLC no plantea que la inteligencia artificial reemplace al equipo ni que construya software sin control.&lt;/p&gt;

&lt;p&gt;La propuesta es establecer una colaboración diferente: la IA pregunta, planifica, descompone, genera y analiza; mientras que el PO, los desarrolladores y los especialistas aportan experiencia, corrigen supuestos y aprueban el trabajo.&lt;/p&gt;

&lt;p&gt;En nuestro proyecto aplicamos los principales elementos del documento:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Intent:&lt;/strong&gt; expresa lo que se desea conseguir.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unit:&lt;/strong&gt; divide el proyecto en partes cohesionadas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bolt:&lt;/strong&gt; permite construirlas mediante ciclos breves.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Domain Design:&lt;/strong&gt; define conceptos y reglas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Logical Design:&lt;/strong&gt; convierte esas reglas en una solución técnica.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code and Tests (código y pruebas):&lt;/strong&gt; materializan el diseño.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployment Unit:&lt;/strong&gt; reúne el resultado listo para desplegarse.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mob Elaboration y Mob Construction:&lt;/strong&gt; organizan la colaboración entre la IA y el equipo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ese es el cambio que AWS propone: dejar de utilizar la inteligencia artificial solamente como una herramienta que recibe órdenes y comenzar a integrarla como una colaboradora que ayuda a conducir el desarrollo, siempre bajo supervisión humana.&lt;/p&gt;




&lt;h2&gt;
  
  
  Fuentes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/blogs/devops/ai-driven-development-life-cycle/" rel="noopener noreferrer"&gt;AI-Driven Development Life Cycle: Reimagining Software Engineering — AWS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/blogs/devops/building-with-ai-dlc-using-amazon-q-developer/" rel="noopener noreferrer"&gt;Building with AI-DLC using Amazon Q Developer — AWS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/blogs/devops/open-sourcing-adaptive-workflows-for-ai-driven-development-life-cycle-ai-dlc/" rel="noopener noreferrer"&gt;Open-Sourcing Adaptive Workflows for AI-DLC — AWS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/awslabs/aidlc-workflows" rel="noopener noreferrer"&gt;Repositorio oficial de AI-DLC Workflows — GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://prod.d13rzhkk8cj2z0.amplifyapp.com/" rel="noopener noreferrer"&gt;AI-DLC Method Definition&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>aws</category>
      <category>ai</category>
      <category>devops</category>
      <category>architecture</category>
    </item>
    <item>
      <title>AWS Architecture Center: guía práctica para diseñar arquitecturas bien fundamentadas en AWS</title>
      <dc:creator>Jose Luis Ariza</dc:creator>
      <pubDate>Mon, 06 Apr 2026 01:26:20 +0000</pubDate>
      <link>https://dev.to/aws-builders/aws-architecture-center-3o1p</link>
      <guid>https://dev.to/aws-builders/aws-architecture-center-3o1p</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Introducción&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;¿Alguna vez te has preguntado cómo estructurar correctamente una arquitectura en AWS recurriendo solo a la experiencia previa sin fallar en el intento?&lt;/p&gt;

&lt;p&gt;¿Dónde encontrar ejemplos reales, patrones validados y decisiones de diseño bien fundamentadas?&lt;/p&gt;

&lt;p&gt;Cuando un arquitecto de soluciones comienza a trabajar en AWS, uno de los mayores retos no es aprender los servicios, sino entender cómo combinarlos correctamente para construir sistemas escalables, resilientes y eficientes.&lt;/p&gt;

&lt;p&gt;Aquí es donde AWS proporciona una ventaja significativa:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Se trata del AWS Architecture Center.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Y no, no se trata únicamente de una &lt;a href="https://aws.amazon.com/es/architecture/icons/?achp_navrcs2" rel="noopener noreferrer"&gt;librería de iconos&lt;/a&gt; (que también nos brinda un paquete de íconos para descargar).&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;AWS Architecture Center: el punto de partida&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;El AWS Architecture Center es un portal oficial donde AWS centraliza:&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;arquitecturas de referencia&lt;/li&gt;
&lt;li&gt;patrones de diseño&lt;/li&gt;
&lt;li&gt;mejores prácticas&lt;/li&gt;
&lt;li&gt;guías para tomar decisiones&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;No es solo inspiración visual.&lt;br&gt;
Es una forma de pensar arquitectura con criterio.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔗 Recurso&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://aws.amazon.com/architecture/" rel="noopener noreferrer"&gt;https://aws.amazon.com/architecture/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foje75eqvjun4pfb06iy9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foje75eqvjun4pfb06iy9.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;🔁 &lt;strong&gt;Puntos importantes del portal oficial&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Después de explorar el portal oficial, armé una estructura que me permitió entender mejor cómo está organizada toda la información y cómo aprovecharla en el diseño de soluciones.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AWS Architecture Center
│
├── AWS Reference Architecture Diagrams
├── AWS Prescriptive Guidance
│  → AWS Patrones de orientación prescriptiva
│  → Patrones, arquitecturas e implementaciones de diseño en la nube
└── AWS Well-Architected Framework
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🏗️ &lt;strong&gt;AWS Reference Architecture Diagrams&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Son un conjunto de arquitecturas de referencia diseñadas y validadas por AWS que representan soluciones reales a problemas comunes, utilizando servicios cloud de forma coherente y siguiendo buenas prácticas.&lt;/p&gt;

&lt;p&gt;Cada arquitectura de referencia incorpora:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;diagramas detallados (end-to-end)&lt;/li&gt;
&lt;li&gt;descripción del caso de uso&lt;/li&gt;
&lt;li&gt;servicios involucrados&lt;/li&gt;
&lt;li&gt;flujos de interacción entre componentes&lt;/li&gt;
&lt;li&gt;consideraciones de diseño&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;💡 Insight clave&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Las Reference Architectures no son plantillas rígidas, sino puntos de partida validados que deben adaptarse al contexto de cada solución.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔗 Recurso&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://aws.amazon.com/architecture/reference-architecture-diagrams/" rel="noopener noreferrer"&gt;https://aws.amazon.com/architecture/reference-architecture-diagrams/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Les dejo un ejemplo de un diagrama que me gusto mucho como se integran los servicios y la explicación paso a paso: &lt;a href="https://d1.awsstatic.com/architecture-diagrams/ArchitectureDiagrams/amazon-opensearch-trending-queries-with-glue-and-amazon-bedrock.pdf?did=wp_card&amp;amp;trk=wp_card" rel="noopener noreferrer"&gt;Diagrama de referencia AWS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fifpes6d7vzrmjhuossf1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fifpes6d7vzrmjhuossf1.png" alt=" " width="800" height="462"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;🚀 AWS Prescriptive Guidance&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;La AWS Prescriptive Guidance es un conjunto de recursos desarrollados por expertos de AWS que proporcionan recomendaciones prácticas, patrones y guías detalladas para ayudar a diseñar, migrar y modernizar soluciones en la nube.&lt;/p&gt;

&lt;p&gt;Se organiza en dos grandes bloques:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AWS Prescriptive Guidance
│
├── Guides (Guías)
└── Patterns (Patrones)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;📘 Guides (Guías)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Las guías están orientadas a proporcionar una visión más amplia y estratégica.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Ofrecen orientación de planificación e implementación, centrada en mejores prácticas y herramientas, dirigida a arquitectos, gerentes, líderes técnicos y ejecutivos.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;🔧 Patterns (Patrones)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Los patrones están enfocados en la implementación práctica.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Incluyen pasos, arquitecturas, herramientas y código para implementar escenarios comunes de migración, optimización y modernización, dirigidos a perfiles técnicos y constructores.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;🔗 Recurso&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://aws.amazon.com/es/prescriptive-guidance/" rel="noopener noreferrer"&gt;https://aws.amazon.com/es/prescriptive-guidance/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💡 Como aporte adicional, si quieres profundizar en cómo aplicar patrones en AWS, te recomiendo estos recursos oficiales:&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Cloud Design Patterns (&lt;a href="https://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/cloud-design-patterns/introduction.html" rel="noopener noreferrer"&gt;conceptos de arquitectura&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Prescriptive Guidance Patterns (&lt;a href="https://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/welcome.html?utm_source=chatgpt.com" rel="noopener noreferrer"&gt;implementación práctica&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;⚖️ AWS Well-Architected Framework&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;El AWS Well-Architected Framework es el conjunto de principios, buenas prácticas y criterios definidos por AWS para evaluar y mejorar la calidad de una arquitectura en la nube.&lt;/p&gt;

&lt;p&gt;A diferencia de otros recursos como patrones o arquitecturas de referencia, su objetivo no es decirte qué construir, sino ayudarte a responder una pregunta clave:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;👉 ¿Está bien diseñada mi arquitectura?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;El framework se basa en seis pilares que cubren los aspectos clave de cualquier sistema:&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Excelencia Operativa:&lt;/strong&gt; Capacidad para ejecutar y monitorear sistemas, y mejorar continuamente los procesos para entregar valor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Seguridad:&lt;/strong&gt; Protección de datos, sistemas y activos mediante la gestión de identidades y controles de detección de amenazas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fiabilidad:&lt;/strong&gt; Garantía de que el sistema se recupere de fallos y funcione correctamente ante cambios o demandas de carga.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Eficiencia del Rendimiento:&lt;/strong&gt; Uso eficiente de los recursos informáticos para cumplir con los requisitos y adaptarse a la evolución tecnológica.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimización de Costos:&lt;/strong&gt; Capacidad para evitar gastos innecesarios y optimizar el uso de los recursos para maximizar el retorno de inversión.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sostenibilidad:&lt;/strong&gt; Enfoque en minimizar el impacto ambiental y la huella de carbono mediante la eficiencia energética en la nube.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;🔗 Recurso&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://aws.amazon.com/architecture/well-architected/" rel="noopener noreferrer"&gt;https://aws.amazon.com/architecture/well-architected/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5dl2ely4an00jk43tkfw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5dl2ely4an00jk43tkfw.png" alt=" " width="800" height="492"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🎓 Aporte: formación en AWS Well-Architected (AWS Skill Builder)&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 Como complemento a este contenido, AWS también ofrece formación oficial a través de AWS Skill Builder, donde puedes profundizar en el uso del Well-Architected Framework y aplicarlo en escenarios reales.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;👉 &lt;a href="https://skillbuilder.aws/learn/U89MJTNSM8/aws-wellarchitected-foundations/RCY5NFM8R9" rel="noopener noreferrer"&gt;AWS Well-Architected Foundations&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>architecture</category>
      <category>cloud</category>
      <category>learning</category>
    </item>
    <item>
      <title>BIAN: estructurando el negocio bancario y su encaje con DDD y microservicios</title>
      <dc:creator>Jose Luis Ariza</dc:creator>
      <pubDate>Thu, 02 Apr 2026 01:53:37 +0000</pubDate>
      <link>https://dev.to/jlarizar/bian-estructurando-el-negocio-bancario-y-su-encaje-con-ddd-y-microservicios-4p1a</link>
      <guid>https://dev.to/jlarizar/bian-estructurando-el-negocio-bancario-y-su-encaje-con-ddd-y-microservicios-4p1a</guid>
      <description>&lt;p&gt;En los últimos años, el sector financiero ha vivido una transformación profunda: presión regulatoria, fintechs nativas digitales, APIs abiertas, banca como plataforma y una necesidad constante de modernizar core systems sin detener el negocio. En ese contexto, BIAN (Banking Industry Architecture Network) se ha convertido en una referencia clave para quienes diseñan arquitecturas bancarias modernas.&lt;/p&gt;

&lt;p&gt;Pero BIAN no es solo “otro framework”. Es una propuesta estructurada para organizar el negocio bancario en dominios bien definidos, con un modelo de servicios estandarizado que conecta de forma natural con prácticas como Domain-Driven Design (DDD) y arquitecturas de microservicios.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;&lt;em&gt;¿Qué es BIAN?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;BIAN es una iniciativa colaborativa creada por bancos y proveedores tecnológicos con el objetivo de definir una arquitectura de referencia estandarizada para la industria bancaria.&lt;/p&gt;

&lt;p&gt;Su propósito es claro:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Descomponer el negocio bancario en capacidades funcionales bien definidas y estructuradas como servicios.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No define tecnología concreta, ni impone un estilo de implementación. Define una forma de estructurar el negocio y sus responsabilidades.&lt;/p&gt;

&lt;p&gt;En esencia, BIAN proporciona un mapa funcional del banco, donde cada parte tiene límites claros y responsabilidades específicas.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;&lt;strong&gt;La estructura de BIAN:&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Para organizar los miles de procesos de un banco, BIAN utiliza un mapa llamado Service Landscape.  Este se divide en tres grandes capas:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Business Areas (Áreas de Negocio):&lt;/strong&gt;&lt;/em&gt; Son las divisiones estratégicas más grandes de una institución (ej. Ventas y Servicios, Operaciones de Referencia). Serían los "continentes" en nuestro mapa.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Business Domains (Dominios de Negocio):&lt;/em&gt;&lt;/strong&gt; Subdivisiones lógicas dentro de las áreas. Aquí agrupamos problemas específicos (ej. Operaciones de Tarjetas, Préstamos). Serían los "países".&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Service Domains (Dominios de Servicio):&lt;/strong&gt;&lt;/em&gt; ¡El corazón de BIAN! Son las capacidades de negocio elementales e indivisibles. Cada Service Domain gestiona el ciclo de vida de un activo usando un patrón específico.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;strong&gt;BIAN y microservicios: relación estructural&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;BIAN no obliga a usar microservicios. Sin embargo, su forma de descomponer el negocio es especialmente compatible con arquitecturas distribuidas.&lt;/p&gt;

&lt;p&gt;Cuando una organización decide estructurar su arquitectura en servicios independientes, necesita primero tener bien definidos los límites funcionales. Aquí es donde BIAN aporta valor:&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Cada Business Domain puede convertirse en un servicio autónomo&lt;/li&gt;
&lt;li&gt;Cada dominio puede gestionar su propio ciclo de vida&lt;/li&gt;
&lt;li&gt;Las interacciones entre dominios pueden formalizarse mediante contratos explícitos&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;Lo importante no es convertir cada dominio en un microservicio de forma automática, sino usar el modelo para definir límites correctos.&lt;/p&gt;

&lt;p&gt;Una arquitectura basada en microservicios necesita:&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Autonomía funcional&lt;/li&gt;
&lt;li&gt;Aislamiento de datos&lt;/li&gt;
&lt;li&gt;Responsabilidad clara&lt;/li&gt;
&lt;li&gt;Interacciones controladas&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;BIAN proporciona precisamente esa estructura conceptual.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;La conexión entre BIAN y Domain-Driven Design (DDD)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Más que una coincidencia, la relación entre BIAN y Domain-Driven Design (DDD) es estructural. Ambos enfoques parten del mismo principio fundamental:&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;La arquitectura debe reflejar el dominio del negocio.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;DDD es un enfoque de desarrollo de software que propone comenzar por comprender el dominio en profundidad y estructurarlo en Bounded Contexts: límites semánticos claros donde un modelo es consistente y coherente.&lt;/p&gt;

&lt;p&gt;BIAN, por su parte, descompone el negocio bancario en Business Domains, cada uno con:&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Responsabilidad funcional específica&lt;/li&gt;
&lt;li&gt;Propiedad clara sobre su información&lt;/li&gt;
&lt;li&gt;Servicios definidos&lt;/li&gt;
&lt;li&gt;Límites bien establecidos&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;Aunque surgieron en contextos distintos, ambos enfoques convergen en varios puntos clave.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;&lt;strong&gt;Caso Practico: Conectando BIAN con DDD y Microservicios&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Según el Service Landscape de BIAN, Current Account es un Service Domain cuyo objetivo es manejar el ciclo de vida de una cuenta corriente.&lt;/p&gt;

&lt;p&gt;En términos de DDD, este será nuestro Bounded Context (nuestro microservicio completo). Dentro de este microservicio, BIAN nos dice que el Control Record (el núcleo de información que controla este dominio) se llama Current Account Arrangement (El acuerdo de cuenta corriente).&lt;/p&gt;

&lt;p&gt;Este Control Record se convierte automáticamente en nuestro Aggregate Root en Java. Es la entidad principal que protege las reglas de negocio (por ejemplo, que no puedas retirar más dinero del que tienes, a menos que tengas un límite de sobregiro). Para manejar las distintas funcionalidades de la cuenta, implementamos los Behavior Qualifiers (Calificadores de Comportamiento) que dicta BIAN, como Withdrawals (Retiros) y Deposits (Depósitos), exponiéndolos como casos de uso.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Conclusión&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;BIAN no reemplaza DDD.&lt;br&gt;
Tampoco DDD sustituye a BIAN.&lt;/p&gt;

&lt;p&gt;BIAN ofrece una estructura de descomposición sectorial específica para banca.&lt;br&gt;
DDD ofrece una metodología para modelar correctamente cualquier dominio, incluido el bancario.&lt;/p&gt;

&lt;p&gt;Cuando se combinan:&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;BIAN ayuda a identificar los límites macro del sistema.&lt;/li&gt;
&lt;li&gt;DDD ayuda a modelar correctamente cada uno de esos límites.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;La conexión no es tecnológica.&lt;br&gt;
Es conceptual y estructural.&lt;/p&gt;

&lt;p&gt;Y ahí radica su verdadero valor.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>patron</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Modelo C4: cómo preparar tu arquitectura antes de empezar a diagramar</title>
      <dc:creator>Jose Luis Ariza</dc:creator>
      <pubDate>Sun, 15 Feb 2026 18:03:09 +0000</pubDate>
      <link>https://dev.to/jlarizar/el-modelo-c4-4hlc</link>
      <guid>https://dev.to/jlarizar/el-modelo-c4-4hlc</guid>
      <description>&lt;p&gt;Imagina esto: Estás en un ascensor con el CEO de tu empresa. Tienes 30 segundos para explicarle cómo funciona el nuevo sistema que estás construyendo. Sacas una servilleta y un bolígrafo.&lt;/p&gt;




&lt;p&gt;¿Qué dibujarías?&lt;/p&gt;

&lt;h5&gt;
  
  
  ¿Una clase de Java Public Void Main? (Demasiado detalle técnico, perderás su atención).
&lt;/h5&gt;

&lt;h5&gt;
  
  
  ¿Un cilindro que diga "Base de Datos"? (Eso no explica cómo el negocio gana valor).
&lt;/h5&gt;

&lt;h5&gt;
  
  
  ¿Una nube gigante que diga "Internet"? (Demasiado genérico para tomar decisiones).
&lt;/h5&gt;




&lt;p&gt;La mayoría de los arquitectos fallan aquí. No por falta de conocimiento técnico, sino por falta de claridad. He aprendido que antes de dibujar el diagrama "oficial", necesito estructurar la solución. Para esto, utilizo el Modelo C4 (creado por Simon Brown). No solo como una herramienta de documentación, sino como mi herramienta de análisis y pensamiento.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;C4 no es solo un modelo de diagramas&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;El modelo C4 es una forma simple de visualizar la arquitectura de software en niveles de detalle, desde la visión más general hasta el código. Como si fuera un mapa con zoom, diseñado por Simon Brown.&lt;/p&gt;

&lt;p&gt;La analogía que más me ayudó a entenderlo fue esta:&lt;br&gt;
Es como usar Google Maps.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Primero ves el país.&lt;/li&gt;
&lt;li&gt;Luego la ciudad.&lt;/li&gt;
&lt;li&gt;Luego la calle.&lt;/li&gt;
&lt;li&gt;Luego el edificio.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cada nivel tiene un propósito distinto. El error es intentar explicarlo todo al mismo tiempo.&lt;/p&gt;

&lt;p&gt;C4 propone cuatro niveles principales y, lo más importante, define claramente qué tipo de elementos existen en cada uno.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Las abstracciones del Modelo C4&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Algo que me cambió completamente la perspectiva fue entender las abstracciones base del modelo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;👤 Person (Persona)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Una persona es cualquier actor que interactúa con el sistema.&lt;/p&gt;

&lt;p&gt;Puede ser:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Un cliente&lt;/li&gt;
&lt;li&gt;Un empleado&lt;/li&gt;
&lt;li&gt;Un administrador&lt;/li&gt;
&lt;li&gt;Incluso otro sistema externo&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lo importante es que no forma parte del sistema que estamos modelando. Está fuera. Nos ayuda a entender quién usa el sistema y por qué existe.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;🧩 Software System (Sistema de Software)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Es el sistema completo que estamos describiendo.&lt;/p&gt;

&lt;p&gt;Por ejemplo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Plataforma de pagos&lt;/li&gt;
&lt;li&gt;Sistema de onboarding digital&lt;/li&gt;
&lt;li&gt;Motor de riesgos&lt;/li&gt;
&lt;li&gt;Portal de clientes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Aquí no hablamos de clases ni microservicios. Hablamos del sistema como una unidad, su propósito y sus interacciones con el mundo externo.&lt;/p&gt;

&lt;p&gt;Este nivel es clave para conversar con negocio y stakeholders.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;📦 Container (Contenedor)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Este es uno de los conceptos más malinterpretados.&lt;/p&gt;

&lt;p&gt;Un contenedor en C4 no es necesariamente Docker. Es cualquier unidad ejecutable o desplegable que ejecuta código o almacena datos.&lt;/p&gt;

&lt;p&gt;Por ejemplo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Una API REST&lt;/li&gt;
&lt;li&gt;Una aplicación web&lt;/li&gt;
&lt;li&gt;Una app móvil&lt;/li&gt;
&lt;li&gt;Una base de datos&lt;/li&gt;
&lt;li&gt;Un servicio batch&lt;/li&gt;
&lt;li&gt;Un microservicio&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Es el nivel donde la arquitectura empieza a volverse tangible. Aquí ya hablamos de tecnología, responsabilidades y comunicación entre piezas.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;🧱 Component (Componente)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Un componente es una agrupación lógica dentro de un contenedor. Representa una parte del sistema con una responsabilidad clara y bien definida.&lt;/p&gt;

&lt;p&gt;Por ejemplo, dentro de una API podríamos tener:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Un componente de validación&lt;/li&gt;
&lt;li&gt;Un componente de orquestación&lt;/li&gt;
&lt;li&gt;Un adaptador a un sistema legacy&lt;/li&gt;
&lt;li&gt;Un motor de reglas&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No son clases individuales. Son bloques cohesivos que organizan la lógica interna. Este nivel me ayudó mucho a explicar arquitectura a desarrolladores sin entrar aún al código.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;💻 Code (Código)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Es el nivel más detallado: clases, interfaces, estructuras reales. No siempre es necesario documentarlo, porque el código ya existe. Pero en sistemas críticos o complejos puede ayudar a alinear criterios de diseño.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Los 4 niveles de zoom&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Entender las abstracciones es clave, pero el verdadero poder está en cómo se organizan en niveles:&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;1️⃣ Nivel Contexto&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Muestra el sistema como una caja negra y sus interacciones con personas y otros sistemas.&lt;/p&gt;

&lt;p&gt;Es perfecto para:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Presentaciones ejecutivas&lt;/li&gt;
&lt;li&gt;Kick-offs&lt;/li&gt;
&lt;li&gt;Alinear propósito y límites&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;2️⃣ Nivel Contenedores&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Aquí vemos cómo se estructura internamente el sistema:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Frontend&lt;/li&gt;
&lt;li&gt;Backend&lt;/li&gt;
&lt;li&gt;Base de datos&lt;/li&gt;
&lt;li&gt;Servicios externos&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Este nivel me ayudó a explicar decisiones tecnológicas sin perder claridad.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;3️⃣ Nivel Componentes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Profundiza dentro de un contenedor.&lt;/p&gt;

&lt;p&gt;Es ideal para:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Equipos técnicos&lt;/li&gt;
&lt;li&gt;Revisión de arquitectura&lt;/li&gt;
&lt;li&gt;Onboarding&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Aquí es donde la arquitectura deja de ser abstracta y empieza a ser operativa.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;4️⃣ Nivel Código&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Solo cuando es necesario.&lt;/p&gt;

&lt;p&gt;He aprendido que no siempre hay que bajar hasta aquí.&lt;br&gt;
Depende del público y del objetivo.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;De la Teoría a la Práctica: El Caso "CloudCoffee" ☕&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Ahora que conocemos las abstracciones, vamos a aplicarlas. Imagina que somos los arquitectos de "CloudCoffee", una nueva cadena de cafeterías digitales. Vamos a aplicar los niveles de zoom usando las abstracciones que acabamos de definir.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Nivel 1: Contexto (System Context)&lt;/strong&gt;&lt;br&gt;
La Vista de Negocio. Aquí conectamos a las Personas con el Sistema de Software.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foo4vwwugaldj98lf01g5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foo4vwwugaldj98lf01g5.png" alt="Diagrama de contexto" width="800" height="875"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Este diagrama responde: ¿Quién usa el sistema y con qué se integra?&lt;/p&gt;




&lt;p&gt;Nivel 2: Contenedores (Containers)&lt;br&gt;
La Vista de Tecnología. Abrimos la caja del sistema. ¿Qué Contenedores necesitamos para que CloudCoffee funcione?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fonkbjrj1zocomslh2acj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fonkbjrj1zocomslh2acj.png" alt="Diagrama de contenedores" width="800" height="910"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Este diagrama responde: ¿Qué tecnología usamos y cómo se comunican las piezas desplegables?&lt;/p&gt;




&lt;p&gt;Nivel 3: Componentes (Components)&lt;br&gt;
La Vista de Ingeniería. Hacemos Zoom dentro del contenedor "API Backend". ¿Qué Componentes lógicos tiene?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fodjr18hqvkgzmqyzt17c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fodjr18hqvkgzmqyzt17c.png" alt="Diagrama de componentes" width="800" height="594"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Este diagrama responde: ¿Cómo está organizado el código internamente?&lt;/p&gt;




&lt;p&gt;Nivel 4: Código (Code)&lt;br&gt;
El Detalle Extremo. Aquí mostraríamos las clases UML (PricingStrategy.java, DiscountRule.java).&lt;/p&gt;

&lt;p&gt;Consejo: Simon Brown recomienda bajar a este nivel solo para lógicas muy complejas. Si haces esto para todo tu sistema, el diagrama quedará obsoleto en cuanto alguien escriba una nueva línea de código. Úsalo con precaución.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Mi conclusión personal&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;El Modelo C4 no me enseñó a dibujar mejor. Me enseñó a pensar mejor.&lt;/p&gt;

&lt;p&gt;Me obligó a:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Respetar las abstracciones.&lt;/li&gt;
&lt;li&gt;No mezclar niveles.&lt;/li&gt;
&lt;li&gt;Comunicar con intención.&lt;/li&gt;
&lt;li&gt;Y simplificar sin perder rigor.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hoy lo veo más como una herramienta de pensamiento que como un estándar de diagramación. Y eso, en entornos complejos, marca una diferencia enorme.&lt;/p&gt;

</description>
      <category>modeloc4</category>
      <category>architecture</category>
      <category>backend</category>
      <category>aws</category>
    </item>
    <item>
      <title>AWS Glue vs AWS Lambda: Comparativa Serverless para Ingeniería de Datos en AWS</title>
      <dc:creator>Jose Luis Ariza</dc:creator>
      <pubDate>Sun, 16 Feb 2025 13:13:00 +0000</pubDate>
      <link>https://dev.to/aws-builders/aws-glue-vs-aws-lambda-comparativa-serverless-para-ingenieria-de-datos-en-aws-108f</link>
      <guid>https://dev.to/aws-builders/aws-glue-vs-aws-lambda-comparativa-serverless-para-ingenieria-de-datos-en-aws-108f</guid>
      <description>&lt;p&gt;Si trabajas en ingeniería de datos en AWS, seguro te has enfrentado a la clásica pregunta: ¿Uso una función Lambda rápida o mejor un job de Glue?&lt;/p&gt;

&lt;p&gt;He visto a muchos equipos (y yo mismo lo hice al principio) intentar forzar todo dentro de Lambda para ahorrar costos, solo para terminar lidiando con timeouts y problemas de memoria semanas después. Por otro lado, usar Glue para mover un archivo pequeño de 1KB puede sentirse como matar una mosca con un cañón.&lt;/p&gt;

&lt;p&gt;En este artículo, no solo te voy a dar conceptos, sino que te compartiré mi criterio personal sobre cuándo uso cada uno basándome en los dolores de cabeza y éxitos que he tenido en proyectos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿Que es AWS Glue?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AWS Glue es un servicio administrado de integración de datos que facilita la preparación, transformación y carga de datos (ETL). Su función principal es conectar diversas fuentes de datos, organizarlas y prepararlas para su posterior análisis. AWS Glue es especialmente útil en escenarios donde se manejan grandes volúmenes de información y se necesita automatizar procesos repetitivos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Principales componentes de AWS Glue&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Catálogo de Datos:&lt;/strong&gt; Repositorio centralizado que almacena los metadatos y define la estructura de las fuentes de datos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Crawlers:&lt;/strong&gt; Programas que examinan las fuentes de datos, detectan su estructura y actualizan automáticamente el catálogo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Jobs ETL:&lt;/strong&gt; Procesos que ejecutan las transformaciones de datos, programados en Python o Scala.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Triggers:&lt;/strong&gt; Reglas que activan la ejecución de trabajos según un cronograma o la ocurrencia de ciertos eventos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Endpoints de Desarrollo:&lt;/strong&gt; Entornos interactivos para escribir y probar el código ETL.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;strong&gt;Ventajas de AWS Glue&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Automatización del Proceso ETL:&lt;/strong&gt; Reduce significativamente el tiempo necesario para preparar datos gracias a la detección automática de esquemas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integración Nativa:&lt;/strong&gt; Se conecta de manera sencilla con otros servicios de AWS, como Amazon S3, Amazon Redshift y AWS Athena.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Escalabilidad Dinámica:&lt;/strong&gt; Ajusta la capacidad de procesamiento según el volumen de datos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sin Servidores:&lt;/strong&gt; Elimina la necesidad de gestionar infraestructura.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;strong&gt;Desafíos y Limitaciones&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tiempo de Arranque:&lt;/strong&gt; Al trabajar con un entorno distribuido basado en Apache Spark, el inicio de los trabajos puede tardar algunos minutos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Soporte de Lenguajes Limitado:&lt;/strong&gt; Solo admite Python y Scala, lo que puede ser un inconveniente si se utilizan otros lenguajes en el ecosistema.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Costo Variable:&lt;/strong&gt; Para trabajos esporádicos o de poca carga, el costo puede resultar elevado en comparación con otras alternativas.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;💡 Nota: Algo que aprendí a las malas es el impacto del Cold Start (tiempo de arranque). Aunque Glue es "Serverless", levantar los workers de Spark toma tiempo (a veces minutos).&lt;/p&gt;

&lt;p&gt;Mi consejo: Si tu negocio exige ingesta en "casi" tiempo real (por ejemplo, un archivo cae en S3 y debe estar disponible para consulta en Athena o Redshift en menos de 30 segundos), Glue no es la opción porque pasará más tiempo "arrancando" que procesando.&lt;/p&gt;

&lt;p&gt;Glue es ideal cuando el SLA (acuerdo de nivel de servicio) es holgado: reportes diarios, procesos nocturnos o batchs donde no importa si el dato llega a las 8:00 o a las 8:05.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Ejemplo Diagrama de Arquitectura - Pipeline Glue&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6g1dneyok04r7mljlvmw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6g1dneyok04r7mljlvmw.jpg" alt=" " width="800" height="298"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;¿Qué es AWS Lambda?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AWS Lambda es un servicio serverless que permite ejecutar código en respuesta a eventos específicos sin la necesidad de aprovisionar ni gestionar servidores. Su uso es ideal para aplicaciones que requieren respuestas rápidas a eventos en tiempo real, como la carga de archivos en S3 o el procesamiento de mensajes de una cola.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Principales componentes de AWS Lambda&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Funciones Lambda:&lt;/strong&gt; Fragmentos de código que se ejecutan al activarse un evento.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Triggers:&lt;/strong&gt; Eventos que inician la ejecución de las funciones, como cambios en bases de datos, flujos de eventos o solicitudes a través de API Gateway.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Layers:&lt;/strong&gt; Elementos reutilizables que permiten compartir bibliotecas y configuraciones entre funciones.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gestión de Eventos:&lt;/strong&gt; Recibe y procesa eventos desde diversas fuentes, facilitando la construcción de arquitecturas basadas en eventos.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;strong&gt;Ventajas de AWS Lambda&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Ejecución Basada en Eventos:&lt;/strong&gt; Se activa automáticamente al detectarse un evento relevante, eliminando la necesidad de supervisión constante.&lt;br&gt;
&lt;strong&gt;Soporte para Múltiples Lenguajes:&lt;/strong&gt; Compatible con Python, Node.js, Java, Go, Ruby y otros.&lt;br&gt;
&lt;strong&gt;Escalabilidad Inmediata:&lt;/strong&gt; Escala horizontalmente para manejar picos de demanda sin intervención manual.&lt;br&gt;
&lt;strong&gt;Modelo de Pago por Uso:&lt;/strong&gt; Se paga únicamente por el tiempo de ejecución y el número de invocaciones.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;strong&gt;Desafíos y Limitaciones&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tiempo Máximo de Ejecución:&lt;/strong&gt; Las funciones no pueden superar los 15 minutos de ejecución, lo que limita su aplicación en procesos extensos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recursos Limitados:&lt;/strong&gt; La memoria y el tiempo de procesamiento tienen límites que podrían afectar cargas intensivas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Persistencia de Estado:&lt;/strong&gt; Al tratarse de un servicio sin estado, se necesita recurrir a otras herramientas, como DynamoDB, para almacenar información entre invocaciones.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;💡 La trampa de los 15 minutos: La limitación más famosa de Lambda son los 15 minutos de timeout. Muchos piensan "mi proceso solo tarda 2 minutos, estoy sobrado".&lt;/p&gt;

&lt;p&gt;Pero, cuidado: ¿Qué pasa cuando el volumen de datos se duplica el próximo mes? Ese proceso de 2 minutos se convierte en 10, y luego en 16... y ahí tu pipeline se rompe.&lt;/p&gt;

&lt;p&gt;Mi regla de oro: Si estimo que una tarea tardará más de 5 minutos hoy, prefiero no usar Lambda. Me gusta dejar ese margen de seguridad para el crecimiento futuro de los datos.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Ejemplo Diagrama de Arquitectura - Pipeline Lambda&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fabgyruqcizx9xrqb3lcl.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fabgyruqcizx9xrqb3lcl.jpg" alt=" " width="799" height="377"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Comparativa entre AWS Glue y AWS Lambda&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Aunque ambos servicios pertenecen al ecosistema serverless de AWS, tienen aplicaciones distintas. La siguiente tabla resume las diferencias más relevantes:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff2bvcbvrj4dd3ubhodr5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff2bvcbvrj4dd3ubhodr5.png" alt=" " width="750" height="483"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;¿Cuándo Usar AWS Glue?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AWS Glue es la mejor opción cuando se necesita:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Realizar transformaciones complejas y procesamiento por lotes.&lt;/li&gt;
&lt;li&gt;Gestionar y organizar metadatos para análisis posteriores.&lt;/li&gt;
&lt;li&gt;Automatizar tareas de integración de datos en proyectos de Big Data.&lt;/li&gt;
&lt;li&gt;Trabajar con datos almacenados en Amazon S3, Redshift o Data Lakes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Ejemplo de Caso de Uso:&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Una empresa que procesa información de ventas históricas para generar reportes mensuales podría usar AWS Glue para consolidar, limpiar y transformar estos datos de manera eficiente.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;¿Cuándo Usar AWS Lambda?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AWS Lambda es más adecuado cuando:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Se requieren respuestas inmediatas a eventos en tiempo real.&lt;/li&gt;
&lt;li&gt;Se necesita construir microservicios ligeros y altamente escalables.&lt;/li&gt;
&lt;li&gt;Se desea automatizar tareas basadas en eventos sin preocuparse por la infraestructura.&lt;/li&gt;
&lt;li&gt;Se implementan flujos de trabajo orquestados con Step Functions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Ejemplo de Caso de Uso:&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
Una aplicación que notifica en tiempo real a los clientes cada vez que se realiza una compra puede usar Lambda para procesar los eventos generados por las transacciones.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Conclusión&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AWS Glue y Lambda son herramientas increíbles, pero sirven a procesos distintos.&lt;/p&gt;

&lt;p&gt;En mi día a día, sigo esta filosofía simple:&lt;/p&gt;

&lt;p&gt;Uso Lambda para la "Tareas Operativas": mover archivos, disparar alertas, transformaciones ligeras json-a-json o APIs en tiempo real.&lt;/p&gt;

&lt;p&gt;Uso Glue para el "trabajo pesado": cuando necesito cruzar tablas, limpiar datos masivos o cuando no tengo idea de cuánto va a crecer el volumen de información mañana.&lt;/p&gt;

&lt;p&gt;No tengas miedo de empezar con Lambda y migrar a Glue después, pero ten siempre presente los límites de la arquitectura serverless. ¡Espero que esta comparativa te ahorre los errores que yo cometí al principio!"&lt;/p&gt;

</description>
      <category>awsglue</category>
      <category>lambda</category>
      <category>serverless</category>
      <category>spark</category>
    </item>
    <item>
      <title>Patrón Circuit Breaker en Microservicios: Diseño Resiliente para Sistemas Distribuidos</title>
      <dc:creator>Jose Luis Ariza</dc:creator>
      <pubDate>Wed, 05 Feb 2025 05:42:08 +0000</pubDate>
      <link>https://dev.to/aws-builders/patron-circuit-breaker-en-microservicios-diseno-resiliente-para-sistemas-distribuidos-3gn</link>
      <guid>https://dev.to/aws-builders/patron-circuit-breaker-en-microservicios-diseno-resiliente-para-sistemas-distribuidos-3gn</guid>
      <description>&lt;p&gt;¿Te ha pasado que cuando compras con tu tarjeta de débito en un POS, el pago genera un error, pero aun así se debita el dinero de tu cuenta? O tal vez intentaste hacer una transferencia bancaria y la app del banco se quedó colgada, sin darte una respuesta clara sobre si la operación se realizó o no.&lt;/p&gt;

&lt;p&gt;Estos problemas ocurren porque los sistemas no siempre responden de manera predecible. A veces, un servicio tarda demasiado en responder, se congestiona o incluso falla, causando inconsistencias y afectando la experiencia del usuario. Aquí es donde entra en acción el patrón Circuit Breaker.&lt;/p&gt;

&lt;p&gt;Así como los fusibles en una instalación eléctrica protegen el sistema cortando la corriente cuando detectan sobrecarga, el patrón Circuit Breaker protege los sistemas distribuidos evitando que se realicen llamadas innecesarias a servicios que están fallando.&lt;/p&gt;

&lt;p&gt;En este artículo, exploraremos cómo funciona este patrón, sus estados y cuándo aplicarlo en arquitecturas basadas en microservicios.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;¿Qué es el Patrón Circuit Breaker?&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;El patrón Circuit Breaker es un mecanismo de protección en arquitecturas distribuidas que evita que un servicio haga repetidas llamadas a otro servicio que está fallando o que tiene tiempos de respuesta muy altos. Su objetivo es mejorar la resiliencia del sistema, reduciendo el impacto de fallos y evitando la sobrecarga de componentes.&lt;/p&gt;

&lt;p&gt;El nombre "Circuit Breaker" proviene de los fusibles eléctricos, que cortan el flujo de corriente cuando detectan una sobrecarga para evitar daños mayores. En software, este patrón actúa de manera similar, interrumpiendo solicitudes a servicios problemáticos y permitiendo la recuperación gradual cuando la situación mejora.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;¿Por qué usar el Patrón Circuit Breaker?&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;En arquitecturas distribuidas, los servicios dependen de múltiples componentes. Un fallo en un solo servicio puede generar un efecto dominó, afectando el rendimiento de toda la aplicación. Algunos problemas que pueden ocurrir si no se implementa el Circuit Breaker son:&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Latencia extrema:&lt;/strong&gt; Si un servicio tarda demasiado en responder, otros servicios pueden quedarse esperando y agotar sus recursos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fallo en cascada:&lt;/strong&gt; Un servicio sobrecargado puede hacer que otros también fallen, generando un colapso total del sistema.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Peticiones innecesarias:&lt;/strong&gt; Sin un control, un servicio en mal estado podría seguir recibiendo miles de solicitudes, empeorando su rendimiento.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;El Circuit Breaker ayuda a mitigar estos problemas al bloquear las solicitudes a un servicio que está fallando y permitir su recuperación antes de volver a enviar peticiones.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;&lt;strong&gt;Estados del Circuit Breaker&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Supongamos que tenemos un microservicio de pagos encargado de procesar transacciones con tarjetas de crédito y débito. Este microservicio se comunica con un proveedor externo de pagos, como Visa, Mastercard o PayPal. Veamos como actúa el patrón Circuit Breaker en el microservicio.&lt;/p&gt;

&lt;p&gt;El Circuit Breaker funciona con tres estados principales:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;1️⃣ &lt;strong&gt;Estado Inicial: Closed (Cerrado)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;📌 El microservicio de pagos funciona normalmente. Todas las solicitudes se envían al proveedor de pagos sin restricciones. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Ejemplo&lt;/strong&gt;:&lt;br&gt;
Un cliente intenta pagar con su tarjeta de crédito. El microservicio de pagos envía la solicitud al proveedor externo. Si la respuesta es exitosa, la transacción se completa.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;2️⃣ &lt;strong&gt;Estado Open (Abierto)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;📌 Si la cantidad de errores supera un umbral (por ejemplo, 5 fallos consecutivos en menos de 1 minuto), el Circuit Breaker cambia a Open.&lt;/p&gt;

&lt;p&gt;Consecuencias:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Se bloquean las nuevas solicitudes de pago.&lt;/li&gt;
&lt;li&gt;Se evita que un servicio sobrecargado o inactivo reciba más peticiones.&lt;/li&gt;
&lt;li&gt;Se inicia un temporizador (por ejemplo, 30 segundos) antes de volver a intentar.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Ejemplo&lt;/strong&gt;:&lt;br&gt;
Si Visa tiene un problema y no responde en 5 intentos seguidos, el Circuit Breaker entra en estado Open.&lt;br&gt;
Un cliente intenta hacer una compra con su tarjeta, pero el sistema le muestra un mensaje como: "El servicio de pagos no está disponible en este momento. Inténtelo más tarde."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;3️⃣  Estado Half-Open (Semiabierto)&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;📌 Cuando el temporizador expira, el Circuit Breaker cambia a Half-Open y permite una única solicitud de prueba.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Caso 1:&lt;/strong&gt; Si el pago es exitoso → Volvemos a Closed&lt;br&gt;
El problema con el proveedor se ha solucionado. Se restablece el contador de errores a cero. Se reanudan todas las transacciones normalmente.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Caso 2:&lt;/strong&gt; Si el pago falla de nuevo → Volvemos a Open&lt;br&gt;
Se reinicia el temporizador. El servicio de pagos sigue inestable, por lo que se bloquean nuevamente las solicitudes.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;em&gt;&lt;strong&gt;Cuándo Usar Circuit Breaker&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;El Circuit Breaker es útil cuando:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Interacción con servicios externos: Evita depender de servicios que pueden estar fuera de nuestro control.&lt;/li&gt;
&lt;li&gt;Servicios con alta latencia: Previene tiempos de espera largos y bloqueos en la aplicación.&lt;/li&gt;
&lt;li&gt;Prevención de fallos en cascada: Protege al sistema de colapsos masivos.&lt;/li&gt;
&lt;li&gt;Optimización de recursos: Evita desperdiciar CPU y memoria en solicitudes a servicios caídos.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Conclusión&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;El patrón Circuit Breaker es una estrategia clave en arquitecturas resilientes, especialmente en microservicios y sistemas distribuidos. Actúa como un "fusible", protegiendo el sistema de fallos en cascada, mejorando la estabilidad y asegurando una mejor experiencia para los usuarios. Implementarlo correctamente permite manejar fallos de manera eficiente y evitar problemas graves en aplicaciones críticas.&lt;/p&gt;

</description>
      <category>patrones</category>
      <category>architecture</category>
      <category>microservices</category>
      <category>java</category>
    </item>
    <item>
      <title>Introducción al Patrón Saga con AWS: Un Diseño para Manejar Transacciones Distribuidas</title>
      <dc:creator>Jose Luis Ariza</dc:creator>
      <pubDate>Sun, 26 Jan 2025 13:56:52 +0000</pubDate>
      <link>https://dev.to/aws-builders/introduccion-al-patron-saga-con-aws-una-arquitectura-para-manejar-transacciones-distribuidas-3oi9</link>
      <guid>https://dev.to/aws-builders/introduccion-al-patron-saga-con-aws-una-arquitectura-para-manejar-transacciones-distribuidas-3oi9</guid>
      <description>&lt;p&gt;En sistemas distribuidos, garantizar la consistencia de datos puede ser un gran desafío, especialmente cuando varios microservicios o componentes están involucrados. Aquí es donde entra en juego el &lt;strong&gt;&lt;em&gt;Patrón Saga&lt;/em&gt;&lt;/strong&gt;, una solución para manejar transacciones distribuidas de manera robusta y escalable. En este artículo, exploramos qué es el patrón Saga y como puede implementarse en AWS utilizando sus servicios.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿Qué es Patrón Saga?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;El Patrón Saga es un patrón de diseño utilizado para gestionar transacciones distribuidas en sistemas basados en microservicios. A diferencia de las transacciones tradicionales, que buscan consistencia a través de enfoques monolíticos, el Patrón Saga permite manejar la consistencia mediante una secuencia de transacciones independientes y coordinadas.&lt;/p&gt;

&lt;p&gt;En el curso de &lt;strong&gt;AWS Skill Builder&lt;/strong&gt; que lleve &lt;strong&gt;AWS: Diseño de Arquitecturas Basadas en Eventos&lt;/strong&gt;, define al Patrón Saga de la siguiente manera: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Se utiliza para gestionar errores donde cada paso dentro de la transacción empresarial más grande incluye transacciones de compensación&lt;br&gt;
que deshacen los cambios realizados por los predecesores.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Entonces podríamos definir que el Patrón Saga &lt;strong&gt;&lt;em&gt;divide una transacción empresarial compleja en una serie de pasos más pequeños y autónomos, llamados transacciones locales. Si uno de estos pasos falla, se desencadenan eventos compensatorios.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tipos de Sagas&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Existen dos formas principales de implementar el Patrón Saga:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Sagas Coreografiadas&lt;br&gt;
Aquí, los microservicios se comunican entre sí mediante eventos. Cada servicio escucha los eventos relevantes y realiza su tarea de forma autónoma. Este enfoque es altamente descentralizado, lo que reduce la dependencia de un coordinador central.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sagas Orquestadas&lt;br&gt;
En este enfoque, un servicio central llamado "Orquestador" gestiona el flujo de las transacciones. Este orquestador se encarga de invocar a los microservicios en el orden adecuado y maneja los errores que puedan surgir.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Implementación del Patrón Saga con AWS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AWS ofrece diversas herramientas que facilitan la implementación del Patrón Saga en arquitecturas de microservicios. A continuación, exploraremos cómo puedes utilizar los servicios de AWS para implementar este patrón de manera efectiva:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS Step Functions (Orquestación)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AWS Step Functions permite diseñar flujos de trabajo serverless que se adaptan perfectamente al modelo de orquestación del Patrón Saga. Con este servicio, puedes definir cada paso como una transacción local y gestionar tanto las acciones compensatorias como las excepciones en caso de errores.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon EventBridge (Coreografía)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para este tipo de enfoque, Amazon EventBridge es ideal. Este servicio permite crear buses de eventos que conectan microservicios de forma descentralizada. Los eventos pueden activar acciones específicas en otros servicios sin necesidad de un orquestador central.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon SQS y SNS (Mensajería y Comunicación)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La mensajería entre microservicios es esencial para implementar Sagas. Amazon SQS y SNS son servicios de mensajería fiables que permiten que los microservicios se comuniquen de manera asíncrona, manteniendo el flujo de eventos necesario para las transacciones distribuidas.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DynamoDB con Streams (Gestión de Estados)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para registrar el estado de cada transacción dentro de una Saga, DynamoDB con Streams puede ser utilizado. Esto asegura que los datos de cada paso estén disponibles en tiempo real y listos para desencadenar acciones compensatorias en caso de fallos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Caso de Uso: Orquestación&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9n656g6w0rac8dtdqbky.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9n656g6w0rac8dtdqbky.png" alt="Orquestacion" width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Diagrama: Patón saga para Transacciones Distribuidas en Orquestación de Orden de Pago&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;1. API Create Order&lt;/strong&gt;&lt;br&gt;
El usuario interactúa con una API para crear una orden. Esta API es el punto de entrada del sistema y captura los detalles iniciales de la solicitud.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Step Functions: Order Orchestration&lt;/strong&gt;&lt;br&gt;
La orquestación de la orden comienza con AWS Step Functions, que controla el flujo del proceso y asegura que cada paso se ejecute en el orden correcto.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Microservicio Order: Place Order&lt;/strong&gt;&lt;br&gt;
El primer paso en el flujo orquestado es invocar el microservicio de órdenes para procesar la solicitud inicial de creación de la orden. Aquí se puede validar información inicial o asignar un identificador único a la orden.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Lambda: Check Customer Credit Status&lt;/strong&gt;&lt;br&gt;
Se invoca una función Lambda para verificar el estado de crédito del cliente. Esta función interactúa con una base de datos (Credit Status DB) que contiene el historial o estado crediticio del cliente.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Credit Status DB: Check Status&lt;/strong&gt;&lt;br&gt;
La base de datos devuelve el estado del crédito del cliente. Dependiendo de la respuesta: Si el crédito es insuficiente, el flujo sigue la ruta de fallo. Si el crédito es válido, el flujo continúa para completar la orden.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. DynamoDB Orden: Complete Order&lt;/strong&gt;&lt;br&gt;
Si el estado de crédito es satisfactorio, los detalles finales de la orden se registran en DynamoDB como orden completada.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Amazon SNS: Order Succeeded&lt;/strong&gt;&lt;br&gt;
Una notificación de éxito se envía a través de Amazon SNS para informar que la orden fue procesada correctamente.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. Amazon SNS: Order Failed&lt;/strong&gt;&lt;br&gt;
Si la verificación de crédito falla, Step Functions emite un evento de fallo a través de Amazon SNS para notificar que la orden no pudo completarse.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Caso de Uso: Coreografía&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgk0z8jny0rvm28s4ok4v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgk0z8jny0rvm28s4ok4v.png" alt="Coreografia" width="799" height="326"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Diagrama: Patón saga para Transacciones Distribuidas en Coreografía de Orden de Pago&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;1. Usuario interactúa con la API Create Order&lt;/strong&gt;&lt;br&gt;
El usuario realiza una solicitud para crear una orden a través de una API expuesta. Esta API recibe los detalles de la orden y actúa como el punto de inicio del flujo de eventos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Order Service recibe la solicitud&lt;/strong&gt;&lt;br&gt;
El servicio de órdenes (Order Service) procesa la solicitud inicial y genera un evento llamado Event OrderCreated, indicando que la orden ha sido creada exitosamente. Este evento es publicado en EventBridge para que otros servicios interesados lo consuman.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Evento OrderCreated es procesado por RouteOrderCreatedToPayment&lt;/strong&gt;&lt;br&gt;
EventBridge enruta el evento OrderCreated hacia el servicio de pagos (Payment Service) a través de la regla RouteOrderCreatedToPayment. Este servicio se activa automáticamente al recibir el evento.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Payment Service procesa el pago&lt;/strong&gt;&lt;br&gt;
El servicio de pagos valida y procesa el pago asociado con la orden. Una vez completado, genera un nuevo evento llamado PaymentProcessed, indicando el estado del pago.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Evento PaymentProcessed es enrutado&lt;/strong&gt;&lt;br&gt;
EventBridge enruta el evento PaymentProcessed hacia la regla RouteOrderCreatedToPayment, activando la siguiente etapa del flujo de eventos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Notificación de éxito de pago&lt;/strong&gt;&lt;br&gt;
Si el pago es exitoso, se genera un evento PaymentSuccessNotification que notifica el estado exitoso al sistema o a otros servicios interesados. Este evento podría enviar una confirmación al usuario o actualizar el estado en un sistema de seguimiento.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Manejo de fallos en el pago&lt;/strong&gt;&lt;br&gt;
En caso de que el pago falle, se genera un evento llamado PaymentFailedEvent. Este evento puede ser utilizado para iniciar procesos compensatorios, como reembolsos, reversión de inventarios o notificaciones de error al usuario.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. Notificación de fallo en la orden&lt;/strong&gt;&lt;br&gt;
Si el fallo del pago afecta toda la orden, se genera el evento Order Failed Event. Este evento centraliza el estado fallido de la orden, actualiza su estado en DynamoDB como "fallida" y notifica a los servicios interesados para realizar acciones compensatorias o informar al usuario.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ventajas del Patrón Saga con AWS&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Escalabilidad: Gracias a los servicios serverless de AWS, se puede realizar una arquitectura altamente escalable.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Alta disponibilidad: AWS garantiza disponibilidad en todos los componentes clave de la implementación.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Costos controlados: Con un modelo Pay-as-you-go, puedes optimizar el costo de tu infraestructura.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusión&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;El Patrón Saga es una herramienta poderosa para resolver los desafíos de consistencia en transacciones distribuidas, especialmente en arquitecturas de microservicios. Con los servicios de AWS, puedes implementar este patrón de manera eficiente y asegurar la resiliencia y escalabilidad del sistema.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>microservices</category>
      <category>patrones</category>
      <category>architecture</category>
    </item>
  </channel>
</rss>
