<?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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2763100%2F9a427805-d9cd-4bf2-ba1b-8eaa77b5e192.jpeg</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>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="909"&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="593"&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="800" 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="800" 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>
