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: Microkernel - Plug-ins

17/43
Recursos

Aportes 12

Preguntas 3

Ordenar por:

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

Patrón de arquitectura Microkernel
Como hacer para tener un corazón (Kernel / Core) y diferentes puntos de conexión a la aplicación que puedan ser incorporados o quitados dinamicamente.
Puede verse como un patrón monolítico si va con sus plug ins ya desplegados también. O como distribuida si sus componentes fueron cambiados en tiempo de ejecución

Buenas! Consulta y disculpen la ignorancia pero,

según entiendo y he visto a lo largo del curso, todos los patrones de arquitectura tienen sus Pros y contras, pero me llamó mucho la atención el de microkernel y plu-gins y su funcionalidad, en este caso ¿Cual sería la desventaja de utilizarlo en un proyecto?

Apuntes:

Microkernel - Plug-ins

Trata sobre cómo hacer para tener un core de la aplicación y diferentes puntos de conexión a la aplicación que puedan ser incorporados y quitados dinámicamente. Los plugins permiten expandir o cambiar la funcionalidad de nuestra aplicación en forma dinámica.

WordPress es un buen ejemplo de Microkernel

El estilo arquitectónico de Microkernel o también conocido como arquitectura de Plug-in, permite crear aplicaciones extensibles, mediante la cual es posible agregar nueva funcionalidad mediante la adición de pequeños plugins que extienden la funcionalidad inicial del sistema.

  • En una arquitectura de Microkernel las aplicaciones se dividen en dos tipos de componentes,
  1. en sistema Core (o sistema central). Contiene los elementos mínimos para hacer que la aplicación funcione y cumpla el propósito para el cual fue diseñada

  2. y los plugins (o módulos), los módulos o plugins con componentes periféricos que se añaden o instalan al componente Core para extender su funcionalidad.

  • En este sentido, solo puede haber un componente Core y muchos Plugins.

Les dejo aquí este ñink donde encontrarán más información https://reactiveprogramming.io/blog/es/estilos-arquitectonicos/microkernel

🤖🤖🤖
Microkernel - Plug-ins
Esta arquitectura esta compuesta por 2 componentes, el sistema core y los modulos plug-in. El core contiene la minima funcionalidad y los módulos plug-in son componentes autónomos e independientes que contienen procesamiento especializado, características adicionales y código personalizado que está diseñado para mejorar o ampliar el sistema central para producir capacidades empresariales adicionales. Generalmente, los módulos plug-in deben ser independientes de otros módulos plug-in, pero ciertamente puede diseñar plug-ins que requieran que otros plug-ins estén presentes. De cualquier manera, es importante mantener la comunicación entre plug-ins a un mínimo para evitar problemas de dependencia.
Cuando leemos esto lo primero que se nos viene a la mente es OSGi, porque este estándar nació para darle soporte a este tipo de arquitecturas y el ejemplo más significativo de esta arquitectura sea eclipse.

Este patrón me recuerda mucho a wordpress

Usemos el ejemplo de WebStorm, un IDE más actual: El patrón de Microkernel o Plug-ins es una arquitectura que separa un sistema central (núcleo) de módulos independientes (plug-ins) que añaden funcionalidades adicionales al sistema base. Un buen ejemplo de este patrón es un IDE (Entorno de Desarrollo Integrado) como WebStorm, donde el núcleo del IDE proporciona las funcionalidades básicas, y los plug-ins permiten extender sus capacidades, como soporte para diferentes lenguajes de programación, herramientas de depuración, linters, etc. /my-ide │ ├── /core # Núcleo del IDE │ ├── kernel.js # Microkernel principal que gestiona los módulos y la interacción │ ├── pluginManager.js # Módulo para gestionar los plug-ins (registro, activación, desactivación) │ ├── editor.js # Editor de texto básico │ ├── fileManager.js # Gestión de archivos (abrir, guardar) │ ├── commandPalette.js # Paleta de comandos para ejecutar acciones dentro del IDE │ └── eventBus.js # Sistema de eventos interno para la comunicación entre el núcleo y los plug-ins │ ├── /plugins # Directorio donde los plug-ins de terceros se registran │ ├── /syntaxHighlighter # Ejemplo de un plug-in de resaltado de sintaxis │ │ ├── syntaxHighlighter.js # Código del plug-in │ │ └── manifest.json # Metadatos del plug-in (nombre, descripción, autor, etc.) │ │ │ ├── /gitIntegration # Plug-in para integración con Git │ │ ├── gitIntegration.js # Código del plug-in │ │ └── manifest.json # Metadatos del plug-in │ │ │ ├── /debugger # Plug-in para depuración de código │ │ ├── debugger.js # Código del plug-in │ │ └── manifest.json # Metadatos del plug-in │ │ │ └── /themeChanger # Plug-in para cambiar temas del IDE │ ├── themeChanger.js # Código del plug-in │ └── manifest.json # Metadatos del plug-in │ ├── /config # Configuración del sistema │ ├── defaultSettings.json # Configuraciones predeterminadas del IDE │ └── pluginSettings.json # Configuraciones para los plug-ins instalados │ ├── /interfaces # Definiciones de interfaces para la comunicación entre el núcleo y los plug-ins │ ├── pluginInterface.js # Interfaz estándar que deben implementar todos los plug-ins │ └── eventInterface.js # Interfaz para el sistema de eventos entre el núcleo y los plug-ins │ ├── /ui # Interfaz de usuario del IDE │ ├── /components │ │ ├── menuBar.js # Barra de menús del IDE │ │ ├── sidebar.js # Barra lateral para navegación (explorador de archivos, plugins, etc.) │ │ ├── statusBar.js # Barra de estado del IDE (muestra info del archivo actual, etc.) │ │ └── workspace.js # Área de trabajo principal donde se edita el código │ ├── themes.css # Archivos CSS para temas de colores │ └── layout.js # Layout general del IDE │ ├── /tests # Pruebas automatizadas │ ├── kernel.test.js # Pruebas para el microkernel │ └── pluginManager.test.js # Pruebas para la gestión de plug-ins │ ├── package.json # Dependencias del proyecto ├── README.md # Documentación del proyecto └── app.js # Punto de entrada principal Características Clave del Patrón Microkernel (Plug-ins): * **Extensibilidad:** Los plug-ins permiten agregar nuevas funcionalidades al sistema sin modificar el núcleo del IDE. * **Modularidad:** Cada plug-in es independiente y puede desarrollarse, activarse o desactivarse sin afectar a otros plug-ins o al núcleo. * **Sistema de Eventos Desacoplado:** El **eventBus** facilita la comunicación entre el núcleo y los plug-ins de manera desacoplada. Este ejemplo refleja cómo construir un IDE como **WebStorm** usando el patrón de **Microkernel**, donde el sistema puede ser altamente extensible y modular. Los usuarios pueden instalar nuevos plug-ins, como soporte para diferentes lenguajes de programación, herramientas de desarrollo adicionales, y más, sin necesidad de modificar el código base.

Patrones: Microkernel - Plug-ins

Como hacer para tener un core de la APP y que existan diferentes puntos de introducción (Plugins) a la misma.

Otro ejemplo podría ser un framework que tiene un core base y luego se le pueden ir agregando plug-ins para extender sus funcionalidades, ejemplo el framework javascript Jquery