Es un termino para soluciones reutilizables a problemas comunes en el desarrollo de software. Esto te puede ayudar para decidir que estructura se acopla a tu aplicación o crear un flujo de trabajo optimo para tus proyectos.

1. Layered

Este patrón es uno de los más comunes por que es usualmente construida alrededor de la base de datos y muchas aplicaciones en los negocios se prestan naturalmente para almacenar información en tablas. Muchos frameworks como Java EE, Express, Drupal, entre otros se crearon con esta estructura en mente, por lo que muchas de las aplicaciones creadas con ellos aparecen de forma natural en una arquitectura en capas.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/43018d56-2f47-4b00-9c21-97965f0b1493/Untitled.png

El código está organizado de modo que los datos ingresen a la capa superior y desciendan por cada capa hasta llegar a la parte inferior que suele ser una base de datos. En el camino, cada capa tiene una tarea específica, cómo verificar la coherencia de los datos o reformatear los valores para mantenerlos consistentes.

Ventajas

Ideal para:

2. Event Driven Architecture

Muchos programas pasan la mayor parte del tiempo esperando que suceda algo. Este tipo de comportamiento se es común en áreas como las redes o IoT. Es ideal cuando deseamos capturar comportamientos en el mundo real como en lo digital, estos datos se puede utilizar para la toma de decisiones. El registro del evento se almacena para análisis futuros. Esto refleja cómo reaccionan los humanos a los eventos que suceden a su alrededor.