Introducción al curso

1

Introducción al curso de Profesional de Arquitectura de Software

Atributos de calidad

2

Definición

3

Atributos: Idoneidad funcional

4

Atributos: Eficiencia de ejecución

5

Atributos: Compatibilidad

6

Atributos: Usabilidad

7

Atributos: Confiabilidad

8

Atributos: Seguridad

9

Atributos: Mantenibilidad

10

Atributos: Portabilidad

11

Tensiones entre atributos

12

Analizando PlatziServicios

Patrones de arquitectura

13

Patrones monolíticos vs distribuidos

14

Patrones: Modelo Vista Controlador

15

Patrones: Capas

16

Patrones: Orientado a eventos / Provisión de eventos.

17

Patrones: Microkernel - Plug-ins

18

Patrones: Comparte-nada

19

Patrones: Microservicios

20

Patrones: CQRS

21

Patrones: Hexagonal - Puertos y adaptadores

22

Patrones: Diseño orientado al dominio

23

Combinando patrones de arquitectura

24

Analizando nuevamente PlatziServicios

Diseño de una arquitectura

25

Pararse en hombros de gigantes

26

Herramientas y partes de un diseño: Tipos de conectores

27

Conectores: Llamado asincrónico / sincrónico. Modelo Cliente servidor.

28

Conectores: Enrutador, difusión

29

Conectores: Pizarra, repositorio, colas, modelo PUBSUB

30

Escenarios y tácticas

31

Escenarios: Disponibilidad, detección, reparación

32

Escenarios: Reintroducción y prevención

33

Escenarios: Mantenibilidad

34

Escenarios: Prevenir efectos dominó y diferir enlace

35

Escenarios: Eficiencia de ejecución

36

Escenarios: Seguridad

37

Escenarios: Capacidad de prueba

38

Escenarios: Usabilidad

39

Validar las decisiones de diseño: Arquitectura en evolución

40

Último análisis a PlatziServicios

Modelado y documentación de arquitectura

41

Cómo comunicar la arquitectura: Vistas y Puntos de vista

42

Documentación vs implementación

43

Conclusiones del curso

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Patrones: Orientado a eventos / Provisión de eventos.

16/43
Recursos

Aportes 19

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Apuntes:

Orientado a eventos / Provisión de eventos

Orientado a eventos. Trata sobre cómo conectar componentes a través de eventos. Cada componente publica eventos a un bus de eventos común y los componentes interesados a estos eventos pueden estar suscritos y luego responder al respecto. No hay otra forma de comunicación, el bus de eventos pasa ser el método principal de comunicación entre componentes. Algo complejo es saber si una acción que hicimos tuvo el resultado que esperábamos, en general suelen ser eventualmente consistentes, lo que significa que cuando hacemos una escritura el sistema no nos garantiza que va a estar disponible hasta que ese evento no se distribuya en todas las partes que lo necesita.

Provisión de eventos. En vez de que nuestra aplicación tenga el estado actual del sitio, podríamos tener solamente guardados los eventos que nos importan.

###Patrones: Orientado a eventos
Trata de conectar componentes a través de eventos. Cada componente puede estar subscrito (conectado) a un Bus de Eventos y el componente que este interesado en dicho evento puede responder. El bus de eventos pasa a ser el método principal de componentes.


Es difícil de testear porque hay que conectar e bus de eventos con los diferentes módulos, esto hace que sea mas complejo las pruebas end to end.


<h4>Provisión de eventos.</h4>

Se leen de forma secuencial para conocer el estado actual y a través del log de eventos, solo guarda los eventos que importan.

Patrón de arquitectura Orientado a Eventos
Conecta componentes a través de eventos.
Cada componente publica eventos a un bus de eventos común y los componentes interesados en estos eventos pueden estar subscritos y luego responder al respecto.
En esta arquitectura, el bus de eventos pasa a ser el método principal de comunicación entre componentes.

Caso especifico de uso de eventos.
Arquitectura Provisión de eventos.
Consiste en que la App tenga el estado actual del sitio, solo guardar los eventos que nos importan.
Se leen en forma secuencial para saber el estado actual.

Con esta arquitectura se puede saber el estado en cualquier momento de su ciclo de vida

Siempre se debe estudiar el caso de uso y evaluar si es el adecuado para el desarrollo de mi solución, ya que cada patron tiene sus pros y contras

En el caso del patron orientado a eventos:
Pro: permite desligar un sistema distribuido mediante el bus, logrando asi mayor capacidad a la hora de escalar mi sistema distribuido.
Contra: Mayor dificultad a la hora de hacer pruebas end to end.
Contra: El mismo bus de eventos podria ser un punto de falla. Se debe contar con buenas capacidades para soportar el nivel de transaccionalidad del bus de eventos.

Event Sourcing by Marting Fowler: https://martinfowler.com/eaaDev/EventSourcing.html

Blockchain! Eso sería event sourcing, creo.

¿EventSourcing tiene algo que ver con BlockChain o solo se parecen?

**Event Sourcing: Concepto y Casos de Uso** * Event Sourcing es una técnica de diseño de software donde los cambios en el estado de una aplicación se capturan como una secuencia de eventos. Estos eventos se almacenan y pueden ser consultados o utilizados para reconstruir estados anteriores de la aplicación. * **Casos de Uso**: * **Sistemas de Control de Versiones**: Utilizan consultas temporales y reconstrucción de estados pasados. * **Aplicaciones Empresariales**: Aunque menos comunes, algunas aplicaciones empresariales implementan Event Sourcing para partes específicas de su funcionalidad. * **Ventajas**: * **Auditoría y Depuración**: Proporciona un registro completo de cambios para auditorías y facilita la depuración al permitir la reproducción de eventos en ambientes de prueba. * **Retroactividad y Reversibilidad**: Permite ajustar estados pasados y revertir eventos si es necesario. * **Desventajas**: * **Complejidad con Sistemas Externos**: Manejar interacciones con sistemas que no utilizan Event Sourcing puede ser complicado, especialmente para actualizaciones y consultas externas. * **Rendimiento**: Calcular estados solicitados desde un estado inicial en blanco puede ser un proceso lento si hay muchos eventos. Event Sourcing es una técnica poderosa con aplicaciones específicas, especialmente útil para sistemas que requieren un alto nivel de trazabilidad y capacidad de reconstruir estados pasados. Sin embargo, su implementación puede añadir complejidad y desafíos de rendimiento que deben ser considerados cuidadosamente. [Event Sourcing (martinfowler.com)](https://martinfowler.com/eaaDev/EventSourcing.html)
**Event Sourcing: Concepto y Casos de Uso** * [**Definición**: Event Sourcing es una técnica de diseño de software donde los cambios en el estado de una aplicación se capturan como una secuencia de eventos](https://edgeservices.bing.com/edgesvc/chat?udsframed=1\&form=SHORUN\&clientscopes=chat,noheader,udsedgeshop,channelstable,wincopilot,ntpquery,devtoolsapi,udsinwin11,udsdlpconsent,udsfrontload,cspgrd,\&shellsig=a3c86a9a9b12b5d03c13eb5b3a9b6ec9612aee64\&setlang=es\&darkschemeovr=1#sjevt%7CDiscover.Chat.SydneyClickPageCitation%7Cadpclick%7C0%7C77189148-cf36-47bc-8b1f-d6c60365e16b). Estos eventos se almacenan y pueden ser consultados o utilizados para reconstruir estados anteriores de la aplicación. * **Casos de Uso**: * **Sistemas de Control de Versiones**: Utilizan consultas temporales y reconstrucción de estados pasados. * **Aplicaciones Empresariales**: Aunque menos comunes, algunas aplicaciones empresariales implementan Event Sourcing para partes específicas de su funcionalidad. * **Ventajas**: * **Auditoría y Depuración**: Proporciona un registro completo de cambios para auditorías y facilita la depuración al permitir la reproducción de eventos en ambientes de prueba. * **Retroactividad y Reversibilidad**: Permite ajustar estados pasados y revertir eventos si es necesario. * **Desventajas**: * **Complejidad con Sistemas Externos**: Manejar interacciones con sistemas que no utilizan Event Sourcing puede ser complicado, especialmente para actualizaciones y consultas externas. * **Rendimiento**: Calcular estados solicitados desde un estado inicial en blanco puede ser un proceso lento si hay muchos eventos. Event Sourcing es una técnica poderosa con aplicaciones específicas, especialmente útil para sistemas que requieren un alto nivel de trazabilidad y capacidad de reconstruir estados pasados. Sin embargo, su implementación puede añadir complejidad y desafíos de rendimiento que deben ser considerados cuidadosamente. [Event Sourcing (martinfowler.com)](https://martinfowler.com/eaaDev/EventSourcing.html)

Patron orientado a eventos: este patron trata de conectar componentes a través de eventos. Cada componente puede estar suscrito a un Bus de Eventos y el componente que este interesado en dicho evento puede responder. El método principal pasa a ser el Bus de eventos.

  • Ventajas: Escalabilidad, despliegue, Flexibilidad.

  • Desventajas: Tests, desarrollo.

Me gusto mucho la información que encontré en esta fuente: https://reactiveprogramming.io/blog/es/estilos-arquitectonicos/eda

Orientado a eventos / Provisión de eventos
Orientado a eventos. Trata sobre cómo conectar componentes a través de eventos. Cada componente publica eventos a un bus de eventos común y los componentes interesados a estos eventos pueden estar suscritos y luego responder al respecto. No hay otra forma de comunicación, el bus de eventos pasa ser el método principal de comunicación entre componentes. Algo complejo es saber si una acción que hicimos tuvo el resultado que esperábamos, en general suelen ser eventualmente consistentes, lo que significa que cuando hacemos una escritura el sistema no nos garantiza que va a estar disponible hasta que ese evento no se distribuya en todas las partes que lo necesita.
Provisión de eventos. En vez de que nuestra aplicación tenga el estado actual del sitio, podríamos tener solamente guardados los eventos que nos importan.

Este patrón trata principalmente con eventos y tiene 4 componentes principales; fuente de evento , escucha de evento , canal y bus de evento . Las fuentes publican mensajes en canales particulares en un bus de eventos. Los oyentes se suscriben a canales particulares. Los oyentes son notificados de los mensajes que se publican en un canal al que se han suscrito anteriormente.

Recordar que todo patrón de diseño va a tener beneficios y va a tener consecuencias, por eso hay que analizar cuál es el mejor o el patrón que más beneficios tiene en la solución del problema!