Está en la página 1de 15

Patrones arquitectónicos

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, en sistema Core (o sistema central) y los plugins (o módulos), el
sistema Core contiene los elementos mínimos para hacer que la aplicación
funcione y cumpla el propósito para el cual fue diseñada, por otra parte, 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.

Estructura Mikrokernel

Ventajas Mikrokernel

 Testabilidad: Debido a que los Plugins y el sistema Core son desarrollados de


forma por separado, es posible probarlos de forma aislada.
 Performance: En cierta forma, muchas de las aplicaciones basadas en
Microkernel trabajan de forma Monolítica una vez que el Plug-in es instalado, lo
que hace que todo el procesamiento se haga en una sola unidad de software.
 Despliegue: Debido a la naturaleza de Plugins es posible instalar fácilmente todas
las características adicionales que sea necesarias, incluso, pueden ser agregar en
tiempo de ejecución, lo que en muchos casos ni siquiera requiere de un reinicio del
sistema.
 Dinamismo: Las aplicaciones basadas en Plugins pueden habilitar o deshabilitar
características basadas en perfiles, lo que ayuda que solo los plugins necesarios
sean activados, incluso, pueden ser activados solo cuando son utilizados por
primera vez (hot deploy), lo que hace que los módulos que nunca se utilizan, no se
activen nunca, ahorrando una gran cantidad de recursos.
 Construcción modular: El sistema de Plugins permite que diferentes equipos
puedan trabajar en paralelo para desarrollar los diferentes Plugins.
 Reutilización: Debido a que los Plugins puede ser instalados en cualquier
instancia del sistema Core, es posible reutilizar los módulos en varias instancias,
incluso, es posible comercializarlas de forma independiente. Solo como ejemplo,
existe empresas que se dedican exclusivamente a desarrollar Plugins para
venderlos, como es el caso de los Plugins de Wordpress.

Desventajas Mikrokernel

 Escalabilidad: Las aplicaciones basadas en Microkernel son generalmente


desarrolladas para ser ejecutadas en modo Standalone. Si bien existen
aplicaciones que implementan el estilo de Microkernel que son altamente
escalables como algunos servidores de aplicaciones, la realidad es que este no es
un estilo arquitectónico que se distinga por crear aplicaciones altamente
escalables.
 Alta complejidad: Las aplicaciones basadas en Microkernel son difíciles de
desarrollar, no solo por la habilidad técnica para soportar la agregación de
funcionalidad adicional por medio de Plugins, si no que requiere un análisis muy
elaborado para identificar hasta qué punto puede ser extendida la aplicación sin
afectar la esencia del sistema Core.

Ejemplos Mikrokernel

 IDE´s de desarrollo

Un entorno de desarrollo integrado (IDE) es un sistema de software para el diseño de app


que combina herramientas comunes para desarrolladores en una sola interfaz de usuario
gráfica (GUI)

 Programas de ofimática

permite que un oficinista lleve los balances de su empresa en un archivo digital mediante
planillas de cálculo que facilitan las operaciones. Dicho archivo puede ser conservado en
una computadora, impreso o enviado a través de Internet. La computadora es el
componente central de la ofimática.

Orientada a servicios (SOA)


La arquitectura orientada a los servicios (SOA) es un tipo de diseño de software que
permite reutilizar sus elementos gracias a las interfaces de servicios que se comunican a
través de una red con un lenguaje común.
Un servicio es una unidad autónoma de una o más funciones del software diseñada para
realizar una tarea específica, como recuperar cierta información o ejecutar una operación.
Contiene las integraciones de datos y código que se necesitan para llevar a cabo una
función empresarial completa y diferenciada. Se puede acceder a él de forma remota e
interactuar con él o actualizarlo de manera independiente.

En otras palabras, la SOA integra los elementos del software que se implementan y se
mantienen por separado, y permite que se comuniquen entre sí y trabajen en conjunto
para formar aplicaciones de software en distintos sistemas.
SOA proporciona la capacidad de hacer que los servicios sean consumibles en distintos
canales, independientemente de dónde resida la aplicación principal o la base de datos, lo
que ayuda a su organización a capitalizar las inversiones en la medida en que moderniza
aplicaciones en la ruta hacia la nube.

 
Ventajas SOA
 Comercialización más rápida y mayor flexibilidad: la posibilidad de reutilizar los
servicios agiliza y simplifica el proceso de ensamblaje de las aplicaciones. Los
desarrolladores no tienen que empezar siempre desde cero, tal como sucede con
las aplicaciones monolíticas.
 Uso de la infraestructura heredada en los mercados nuevos: la SOA permite
que los desarrolladores tomen las funciones de una plataforma o un entorno y las
ajusten e implementen en otros nuevos.
 Reducción de los costos gracias a una mayor agilidad y un desarrollo más
eficiente
 Mantenimiento sencillo: dado que todos los servicios son autónomos e
independientes, se puede modificar y actualizar cada uno cuando sea necesario,
sin afectar al resto.
 Escalabilidad: la SOA posibilita la ejecución de los servicios en varios lenguajes
de programación, servicios y plataformas, lo cual aumenta la escalabilidad de
forma considerable. Además, utiliza un protocolo de comunicación estandarizado
con el que las empresas pueden disminuir la interacción entre los clientes y los
servicios, lo cual permite ajustar las aplicaciones con menos presiones e
inconvenientes.
 Mayor confiabilidad: la SOA genera aplicaciones más confiables, ya que es más
fácil depurar servicios pequeños que un código de gran volumen.
 Gran disponibilidad: las instalaciones de la SOA están disponibles para todos.
Desventajas SOA
 Orientado a estándares: sin estándares, la comunicación entre aplicaciones
requiere de mucho tiempo y código.
 Requiere un alto conocimiento del negocio
 Genera un costo adicional en hardware y software
Ejemplos de SOA
 Delaware Electric recurrió a la SOA para integrar sistemas que antes no se
comunicaban entre sí, lo que generó eficiencias de desarrollo que ayudaron a la
organización a mantenerse solvente durante un congelamiento de cinco años por
mandato estatal de las tarifas eléctricas.
 Cisco adoptó la SOA para asegurarse de que su experiencia de pedidos de
productos fuera consistente en todos los productos y canales exponiendo los
procesos de pedidos como servicios que las divisiones, adquisiciones y socios de
negocios de Cisco podrían incorporar a sus sitios web.
 Independence Blue Cross (IBC) de Filadelfia implementó una SOA para
asegurar que los diferentes componentes que se ocupan de los datos de los
pacientes —agentes del servicio al cliente de IBC, consultas médicas, usuarios del
sitio web de IBC— estuvieran funcionando con la misma fuente de datos (una
“versión única de la verdad”).
Arquitectura en Pizarra
Es un modelo arquitectónico que consta de múltiples elementos funcionales
denominados agentes y una herramienta de control llamada pizarra.
 
Estructura Pizarra

Agentes: Los agentes se especializan en una tarea y estos se relacionan entre sí para
alcanzar un objetivo en común.

 
Pizarra: Tiene dos funcionalidades una de coordinar a los agentes, y otra facilitar la
intercomunicación.
Ventajas Pizarra
 Es útil cuando no se tiene un conocimiento completo del problema a resolver.
 Es valiosa para resolver problemas complejos o difíciles.
 Reusabilidad.
 Flexibilidad
y modularidad para el manejo de representación de la información en la pizarra.
Desventajas Pizarra
 Nada garantiza llegar a una solución.
 Es ineficiente, ya que no hay un tiempo estimado para calcular una solución
 Es complicado obtener los pasos llevados a cabo para obtener la solución.
Ejemplos Pizarra
     

Arquitectura dirigida por eventos


Es un patrón de arquitectura de software que promueve la producción, detección,
consumo y reacción de eventos.
Evento: Es un cambio significativo en un estado cuyo suceso puede ser conocido en
otras apps de la arquitectura.
Ventajas Dirigida a Eventos
 Alta escalabilidad
 Alta agilidad
 Alta facilidad de despliegue
Desventajas Dirigida a Eventos
 Baja testabilidad
 Baja Fácil de desarrollo

Modelo de vista controlador (MVC)


MVC es un patrón de diseño que se estructura mediante
tres componentes: modelo, vista y controlador. Este patrón tiene como principio que cada
uno de los componentes esté separado en diferentes objetos, esto quiere decir que los
componentes no se pueden combinar dentro de una misma clase.
Estructura MVC

 
Ventajas MVC
 El desarrollo de los distintos componentes se puede realizar de manera
simultánea. entre varios desarrolladores.
 La separación del Modelo y la Vista, lo cual logra separar los datos, de su
representación visual.
 Facilita el manejo de errores.
 Permite que el sistema sea escalable si es requerido.
 Es posible agregar múltiples representaciones de los datos.

Desventajas MVC
 La curva de aprendizaje para nuevos desarrolladores es un poco superior a los
otros modelos que son más simples.
 Tener varias capas nos incrementa la complejidad del sistema.
 La navegación por el código puede ser compleja al disponer de más componentes,
lo que se traduce en un mayor número de archivos o unidades.

Ejemplos MVC
1. El usuario realiza una petición. En nuestro caso desea modificar el nombre de una
tabla.
2. El controlador recibe dicha petición (de la interfaz gráfica) y procede a ejecutar la
acción pertinente enviando los datos al Modelo.
3. El Modelo realiza las modificaciones con la base de datos (MySQL, PostgreSQL,
SQLite).
4. Luego, devuelve al controlador los cambios solicitados.
5. Cuando el Controlador recibe todos los datos del cambio, envía una respuesta a la
Vista.
6. La Vista aplica la modificación en la interfaz del navegador mostrando al usuario.

Modelo Peer To Peer – P2P


Es una red de computadoras en la que todos dispositivos Conectados a la red actúan
como cliente y servidor al mismo tiempo.
Las tecnologías ‘peer to peer’ (P2P) hacen referencia a un tipo de arquitectura para la
comunicación entre aplicaciones que permite a individuos comunicarse y compartir
información con otros individuos sin necesidad de un servidor central que facilite la
comunicación.
 
Estructura Peer To Peer
Ventajas Peer To Peer
 Alta escalabilidad
 Tolerancia a fallas
 Descentralización
 Privacidad
 Equilibrio de carga

Desventajas Peer To Peer


 Retención de datos
 Control de acceso
 Consumo de recursos
 Violación de derechos de propiedad intelectual
 Fuga de datos
 Malware

Ejemplos Peer To Peer


 Intercambio y búsqueda de ficheros. Quizás sea la aplicación más extendida de
este tipo de redes. ejemplo son BitTorrent.
 Sistemas de ficheros distribuidos, como CFS o Freenet.
 Sistemas de telefonía por Internet, como versiones anteriores de Skype.
 Cálculos científicos que procesen enormes bases de datos, como los
procedimientos bioinformáticos.
 Monedas virtuales para transacciones entre partes. Bitcoin
 Grabadores de sistemas de CCTV que transmiten las imágenes a usuarios
conectados desde celulares y computadores en ISP con puertos bloqueados.

Objetos Desnudos
Es un modelo de patrones arquitectónico, usualmente utilizados en modelos de sistemas
empresariales donde por el cual los objetos de negocio (tales como cliente, producto,
orden) son expuestos directamente al usuario. Este patrón está definido por tres
principios:
 Toda la lógica de negocio debe ser encapsulada en los objetos de dominio.
 La interfaz de usuario debe ser una representación directa de los objetos de
dominio, con todas las acciones del usuario, constan explícitamente en la creación
o en la recuperación de objetos de dominio e/o invocando métodos en esos
objetos.
 La interfaz de usuario será 100% creado automáticamente a partir de la definición
de los objetos de dominio.
Ventajas Objetos Desnudos
 Ciclo de desarrollo rápido
 Facilidad para adaptarse a futuros cambios en los requisitos
 Análisis de requisitos sencillo 

Desventajas Objetos Desnudos


 Apunta a encapsular toda la lógica empresarial en los objetos de dominio
 La aplicabilidad de las interfaces de usuario orientadas a objetos
 La usabilidad de interfaces de usuario genéricas

Ejemplos Objetos Desnudos

Microservicios
En palabras sencillas, podemos definirlo como: Un estilo arquitectónico de software para
desarrollar una sola aplicación como un conjunto de pequeños servicios, cada uno
ejecutándose en su propio proceso y comunicándose con mecanismos livianos mientras
mantiene el objetivo primordial de que cada servicio se encargue de implementar una
funcionalidad completa del negocio.
Estructura Microservicios

 
Ventajas Microservicios
 Equipos pequeños y centrados: Tan pequeño como para ser implementado por
1 equipo de características.
 Agilidad: Puede actualizar un servicio sin volver a implementar toda la aplicación
y revertir una actualización si algo va mal.
 Escalabilidad: Facilita la escalabilidad horizontal sin tener que aplicarlo a toda la
aplicación.
 Mezcla de tecnologías: Se puede elegir la tecnología que mejor se adapte al
servicio.
Desventajas Microservicios
 Complejidad: Cada servicio es más sencillo, pero el sistema como un todo es
más complejo.
 Congestión y latencia de red: El uso de muchos servicios pequeños y detallados
puede dar lugar a más comunicación interservicios.
 Control de versiones: Podrían surgir problemas con la compatibilidad con
versiones anteriores o posteriores.
 Falta de gobernanza: Puede acabar con muchos lenguajes y marcos de trabajo
diferentes.
Ejemplos de Microservicios
N-Capas
La programación por capas es un modelo de desarrollo software en el que el objetivo
primordial es la separación (desacoplamiento) de las partes que componen un sistema
software o también una arquitectura cliente-servidor: lógica de negocios, capa de
presentación y capa de datos. De esta forma, por ejemplo, es sencillo y mantenible crear
diferentes interfaces sobre un mismo sistema sin requerir cambio alguno en la capa de
datos o lógica.
La arquitectura de N-capas está caracterizada por la descomposición funcional de la
aplicación, los componentes de servicio y su instalación distribuida. Mejorando la
escalabilidad, disponibilidad, administración, y utilización de recursos.
Básicamente, la aplicación de N capas es la lógica de la aplicación de partición en capas
específicas. El patrón de arquitectura de N capas es una arquitectura madura y
simplemente se refiere a aplicaciones que separan varias capas lógicas en niveles físicos
separados
Estructura N-Capas

 
Ventajas N-Capas
 Es fácil testear cada capa por separado debido a la separación clara
de responsabilidades que existe entre ellas. 
 Al momento de hacer un cambio, si se implementó bien la separación
de responsabilidad, este cambio solo debe impactar a la capa responsable y no a
todas. Esto se conoce como desacople. 
Desventajas N-Capas
 Si se implementaron demasiadas capas el rendimiento de la aplicación puede
verse afectado.  
 Ciertas operaciones al ser modificadas pueden afectar a todas las capas, haciendo
visible que no existe un 100% de desacople entre estas.
Ejemplos N-Capas
 Aplicaciones de línea de negocios (LOB), como contabilidad, y sistemas de gestión
de clientes.
 Aplicaciones web Corporativas y sitios Web
 Aplicaciones corporativas de escritorio o clientes inteligentes con servidores
centralizados de aplicación con lógica de negocios.

Pipeline
El modelo Pipeline se denomina en el mundo de la informática a una serie de elementos
de procesamiento de datos ordenados de tal modo que la salida de cada uno es la
entrada del siguiente. Pipeline (tuberías en español) hace referencia a su nombre,
básicamente es como el agua pasa por la tubería, donde el agua es la información o los
procesos.
La arquitectura Pipeline consiste en ir transformando un flujo de datos en un proceso
comprendido por varias fases secuenciales, siendo la entrada de cada una la salida de la
anterior, con un almacenamiento temporal de datos entre procesos.

Estructura Pipeline

 
Ventajas Pipeline
 Permite comprender el comportamiento de entrada /salida de un sistema como la
composición del comportamiento de los filtros individuales.
 Facilita el mantenimiento y crecimiento.
 Permiten realizar análisis de ‘deadlock’ y rendimiento.
 Soporte de ejecución concurrente.
 Facilita la reutilización de transformaciones.
 Es intuitivo Fácil agregar / quitar transformaciones Relativamente sencillo de
implementar, a nivel concurrente o secuencial.
Desventajas Pipeline
 Frecuentemente tienden a una organización de procesamiento batch.
 No son buenos para aplicaciones interactivas.
 Pueden complicarse al tener que mantener dos flujos separados pero
relacionados.
 Puede ser necesario agregar a los filtros conversión de datos de entrada y salida.
 Pérdida de performance e incremento de complejidad de los filtros.
 Es difícil soportar interacciones basadas en eventos
Ejemplos de Pipeline
1. Pipelines gráficos, se encuentran en la mayoría de las tarjetas gráficas, consiste
en múltiples unidades aritméticas o CPUs completas, que implementan variados
escenarios de operaciones típicas de renderizado, por ejemplo, cálculos de luz y colores,
renderizado, proyección de perspectiva, etc.
2. Pipelines de software o tuberías, consiste en múltiples procesos ordenados de tal
forma que el flujo de salida de un proceso alimenta la entrada del siguiente proceso. Por
ejemplo, los pipelines de Unix.

N-niveles
Es un patrón arquitectónico de programación, su objetivo primordial es individualizar los
niveles de desarrollo, que son: nivel de presentación, nivel de negocio, nivel de datos.
Nivel de presentación: Esta capa es la que ve el usuario, presenta el sistema al usuario,
le comunica la información y captura la información del usuario en un mínimo de proceso.
Nivel de negocio: Aquí es donde, se reciben las peticiones del usuario y se envían las
respuestas tras el proceso.
Nivel de datos: Es donde residen los datos y es la encargada de acceder a los mismos.
Está formada por uno o más gestores de bases de datos que realizan todo el
almacenamiento de datos.

Estructura N-niveles

 
Ventajas N-niveles
El principal beneficio de la arquitectura de tres niveles es su separación lógica y física de
la funcionalidad. Cada nivel puede ejecutarse en un sistema operativo y una plataforma
de servidor independientes, como un servidor web, un servidor de aplicaciones o un
servidor de bases de datos
 Desarrollo más rápido
 Escalabilidad mejorada
 Confiabilidad mejorada
 Seguridad mejorada
Desventajas N-niveles
 Es más complejo que el modelo de computación cliente-servidor de 2 niveles,
porque es más difícil construir una aplicación de 3 niveles, "Los puntos de
comunicación se duplican"
 Puede verse afectado el rendimiento debido a La separación física de los
servidores de aplicaciones que contienen funciones de lógica y de bases de datos
.
Ejemplos de N-niveles
Se suele utilizar en sistemas que implementan un modelo de negocio como por ejemplo
una tienda online, una app para gestionar ciertos datos, etc.
Sin embargo
Un ejemplo más preciso es IBM Cloud ofrece productos y servicios que le ayudarán a
modernizar sus aplicaciones de tres niveles heredadas en su migración a la nube.

También podría gustarte