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

You don't have access to this class

Keep learning! Join and start boosting your career

Aprovecha el precio especial y haz tu profesión a prueba de IA

Antes: $249

Currency
$209
Suscríbete

Termina en:

0 Días
9 Hrs
2 Min
3 Seg

Escenarios: Eficiencia de ejecución

35/43
Resources

How to control execution efficiency?

Execution efficiency is key for systems to respond to stimuli effectively and in the expected time. To achieve this, specific tactics are implemented, grouped into three main families: resource demand, resource management and resource arbitration. These tactics are fundamental to ensure optimal performance in any system that processes multiple events simultaneously.

What are the resource demand tactics?

In the resource demand family, the main focus is how to efficiently manage resources when an event enters the system. These tactics include:

  • Improving computational efficiency: algorithms and processes are analyzed to identify and optimize points of inefficiency. For example, avoiding unnecessary iterations in lists, which consumes a lot of resources.
  • Reduce overhead: Optimize the steps and actions required to complete a task or respond to an event. For example, precompute data during writing to reduce the load during reading.
  • Manage event rate: Control how many events are issued to a specific component. You can reduce the number of events by grouping them together or by sending aggregated data in a single event.
  • Control sampling rate: Decide how to process events in a grouped manner rather than one at a time, thus optimizing the use of system resources.

What do resource management tactics include?

Resource management tactics focus on how to make the best use of available resources or increase their availability:

  • Concurrency: allows parallelizing processes to respond in less time using resources in parallel. It is crucial in areas such as Data Science, where the volume of data is significant.
  • Replication: Involves duplicating processes or data to make them more accessible, as in the use of cache, which stores copies of data in memory close to the processing.
  • Resource augmentation: Measuring and deciding when it is necessary to expand the amount of available resources. Platforms such as Amazon facilitate this by offering services that automatically scale resources as needed.

How is resource arbitration implemented?

Resource arbitrage is crucial when multiple processes require the same resources at the same time. Strategies include:

  • Prioritization: assigning priorities to resources so that certain processes are serviced before others, based on task scheduling policies.
  • Synchronous or deferred access: Deciding between responding immediately or scheduling tasks for a future time.
  • Order of resolution: Determine the order of importance or sequence in which requests will be resolved, thus optimizing access to resources.

Implementing all of these tactics properly can be critical for a system to respond effectively to event stimuli. However, it is essential to prioritize and select the most appropriate ones for each case, considering that efficiency should not always be the priority attribute over other factors in engineering.

Contributions 9

Questions 4

Sort by:

Want to see more contributions, questions and answers from the community?

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.