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

No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

12 Días
5 Hrs
24 Min
14 Seg

Escenarios: Eficiencia de ejecución

35/43
Recursos

Aportes 9

Preguntas 4

Ordenar por:

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

Apuntes:

Eficiencia de ejecución

En el caso de eficiencia de ejecución vamos a tener eventos ingresando a nuestro sistema como estímulo y luego vamos a trabajar sobre las tácticas para controlar esta eficiencia para que la respuesta sea dentro del tiempo esperado.

Demanda de recursos. Trata sobre cuándo entra un evento, cómo hacemos para que ese evento tenga los recursos disponibles y cuánto de esos recursos necesita.
• Mejorar la eficiencia computacional. Podemos analizar nuestros algoritmos y podemos analizar nuestro procedimiento para encontrar cuáles son los puntos en dónde no estamos siendo eficientes.
• Reducir sobrecarga. Habla sobre cuántos pasos o qué acciones estamos tomando para una misma tarea o responder a un mismo evento.
• Manejar tasa de eventos. Cuántos eventos vamos a emitir a un componente específico y si es necesario ser tan fino en estos eventos. Si podemos reducir esa tasa de eventos podemos optimizar esa comunicación.
• Frecuencia de muestreo. Si yo sí estoy recibiendo todo este stream, cómo puedo hacer para decidir procesar esos eventos en una forma grupal, entonces en lugar de hacer una tarea por evento puedo hacer una tarea cada cierta cantidad de tiempo y agrupar todos los eventos en una tarea única puedo hacer mejor uso de los recursos procesando una sola vez un grupo de eventos.

Gestión de recursos. Cómo ponemos disponibles más o menos recursos y cómo hacemos para que estén cuándo se le necesitan.
• Concurrencia. Trabajamos sobre cómo paralelizar nuestro proceso para que se pueda responder en menor tiempo usando recursos de forma paralela o en menor tiempo.
• Réplicas. Cómo podemos duplicar el procesamiento o los datos para hacer más accesibles estos recursos a nuestro proceso.
• Aumentar recursos. El poder medir y decidir cuándo crecer la cantidad de recursos que tenemos disponibles.

Arbitraje de recursos. En caso de conflicto, en caso de haber múltiples eventos necesitando los mismos recursos cómo decidimos cuáles tienen prioridad.
• Políticas de planificación de tareas. Yo puedo decidir que cada recurso tiene que responder en el momento entonces tiene que tener un acceso sincrónico, un acceso prioritario a cada uno de esos recursos o puede postergar tareas y agendarlas para que se hagan en un momento futuro. Incluso puedo priorizar esos pedidos paralelos y decidir si un pedido es más importante que otro o el orden en que se van a resolver.

Escenario: Eficiencia de ejecución.
Estímulos: Eventos
Tácticas para controlar la eficiencia.

  • Demanda de recursos
    • Mejorar la eficiencia computacional
    • Reducir la sobrecarga
    • Manejar la tasa de eventos
    • Frecuencia de muestreo
  • Gestión de recursos
    • Concurrencia
    • Replicas
    • Aumentar recursos
  • Arbitraje de recursos
    • Políticas de planificación de tareas

La respuesta se espera dentro del tiempo estimado.

Ojo, la definición de concurrencia no es correcta. Esa defición que da Guido es Paralelismo. Concurrencia se trata de ver qué estrategía me sirve cuando tengo muchos componentes cuando se quieren comunicar con un mismo recurso o memoria

Escenarios: Eficiencia de ejecución

El estimulo son eventos que ingresan al sistema, las tácticas permiten controlar los eventos dando respuestas dentro del tiempo esperado.


Las siguientes tácticas son importantes ser priorizadas ya que es común en la práctica que creer en la eficiencia de ejecucción es algo muy prioritario siempre, sin embargo esto puede afectar a otros atributos si no se toma cuidado.


Familias:

  • Demanda de Recursos: Cuando entra un evento como hacemos para que el evento tenga los recursos disponibles.
    Tácticas:
  1. Mejorar la eficiencia
  2. Reducir Sobrecarga
  3. Manejar tasa de eventos
  4. Frecuencia de Muestreo
  • Gestión de Recursos: Como hacemos disponibles los recursos y como hacemos para que estén presentes cuando se necesiten.
    Tácticas:
  1. Concurrencia
  2. Réplicas
  3. Aumentar recursos
  • Arbitraje de Recursos: En caso de existir multiples eventos pidiendo el mismo recurso, como decidimos cuales tienen prioridad.
    Tácticas:
  1. Políticas de planificación de tareas.

Conforme avanza el curso, mejor se pone.
Estás son tácticas geniales que no aprendes en la escuela y dificilmente las aprendas en el trabajo.

Eficiencia de ejecución
⭐️⭐️⭐️
En el caso de eficiencia de ejecución vamos a tener eventos ingresando a nuestro sistema como estímulo y luego vamos a trabajar sobre las tácticas para controlar esta eficiencia para que la respuesta sea dentro del tiempo esperado.
Demanda de recursos. Trata sobre cuándo entra un evento, cómo hacemos para que ese evento tenga los recursos disponibles y cuánto de esos recursos necesita.
🤖

  • • Mejorar la eficiencia computacional. Podemos analizar nuestros algoritmos y podemos analizar nuestro procedimiento para encontrar cuáles son los puntos en dónde no estamos siendo eficientes.
    🤖

  • • Reducir sobrecarga. Habla sobre cuántos pasos o qué acciones estamos tomando para una misma tarea o responder a un mismo evento.
    🤖

  • • Manejar tasa de eventos. Cuántos eventos vamos a emitir a un componente específico y si es necesario ser tan fino en estos eventos. Si podemos reducir esa tasa de eventos podemos optimizar esa comunicación.
    🤖

  • • Frecuencia de muestreo. Si yo sí estoy recibiendo todo este stream, cómo puedo hacer para decidir procesar esos eventos en una forma grupal, entonces en lugar de hacer una tarea por evento puedo hacer una tarea cada cierta cantidad de tiempo y agrupar todos los eventos en una tarea única puedo hacer mejor uso de los recursos procesando una sola vez un grupo de eventos.
    🤖
    Gestión de recursos. Cómo ponemos disponibles más o menos recursos y cómo hacemos para que estén cuándo se le necesitan.
    🤖

  • • Concurrencia. Trabajamos sobre cómo paralelizar nuestro proceso para que se pueda responder en menor tiempo usando recursos de forma paralela o en menor tiempo.
    🤖

  • • Réplicas. Cómo podemos duplicar el procesamiento o los datos para hacer más accesibles estos recursos a nuestro proceso.
    🤖

  • • Aumentar recursos. El poder medir y decidir cuándo crecer la cantidad de recursos que tenemos disponibles.
    Arbitraje de recursos. En caso de conflicto, en caso de haber múltiples eventos necesitando los mismos recursos cómo decidimos cuáles tienen prioridad.
    🤖

  • • Políticas de planificación de tareas. Yo puedo decidir que cada recurso tiene que responder en el momento entonces tiene que tener un acceso sincrónico, un acceso prioritario a cada uno de esos recursos o puede postergar tareas y agendarlas para que se hagan en un momento futuro. Incluso puedo priorizar esos pedidos paralelos y decidir si un pedido es más importante que otro o el orden en que se van a resolver.

Encontré esta explicación sobre la diferencia entre concurrencia y paralelismo. Concurrencia * **Definición**: La concurrencia se refiere a la capacidad de un sistema para manejar múltiples tareas al mismo tiempo, pero no necesariamente ejecutándolas simultáneamente. Es como si estuvieras trabajando en varias cosas a la vez, pero solo puedes hacer una cosa a la vez; sin embargo, cambias rápidamente entre las tareas. ### Paralelismo * **Definición**: El paralelismo, por otro lado, implica la ejecución simultánea de múltiples tareas. Esto significa que varias tareas se ejecutan al mismo tiempo en diferentes procesadores o núcleos de un procesador. ### Diferencia clave * **Concurrencia** se trata de **gestionar** múltiples tareas, a menudo alternando entre ellas, mientras que el **paralelismo** se trata de **ejecutar** múltiples tareas simultáneamente. En resumen, la concurrencia es más sobre la estructura y organización del código para manejar varias tareas, mientras que el paralelismo depende de la capacidad del hardware para ejecutar tareas al mismo tiempo.

• Aumentar recursos. El poder medir y decidir cuándo crecer la cantidad de recursos que tenemos disponibles.
Arbitraje de recursos. En caso de conflicto, en caso de haber múltiples eventos necesitando los mismos recursos cómo decidimos cuáles tienen prioridad.
• Políticas de planificación de tareas. Yo puedo decidir que cada recurso tiene que responder en el momento entonces tiene que tener un acceso sincrónico, un acceso prioritario a cada uno de esos recursos o puede postergar tareas y agendarlas para que se hagan en un momento futuro. Incluso puedo priorizar esos pedidos paralelos y decidir si un pedido es más importante que otro o el orden en que se van a resolver.

Eficiencia de ejecución está relacionada con el tiempo de reacción del sistema entre un estímulo y una respuesta. Además de la forma en que usa sus recursos, por ejemplo espacio de memoria, servidores, entre otros. Y su capacidad, es decir, cuáles son sus límites de tolerancia ante una exigencia en un momento crítico.