Please enable JavaScript.
Coggle requires JavaScript to display documents.
Arquitecturas de software - Coggle Diagram
Arquitecturas de software
Se refiere a una planificación basada en modelos, patrones y abstracciones teóricas implementadas a la hora de realizar una pieza de software de cierta complejidad
De esta forma se dospone de una guía teórica detallada que permite comprender como es que van a encajar cada una de las piezas del producto final
Patrón cliente-servidor
Este patrón es muy utilizado, sobre todo en el diseño de webs y servicios online
Se basa en el concepto de la existencia de un servidor y una serie de clientes que piden al servidor y como resultado reciben una respuesta del mismo
Ventajas
Centralización
Todos los recursos disponibles se encuentran centralizados en un único punto
Escalabilidad
Al funcionar independientemente es más sencillo mejorar los componentes por separado
Mantenimiento
Al funcionar de manera independiente es más sencillo mantener cada una de las piezas en orden
Desventajas
Disponibilidad
Al depender de un servidor, en caso de que algo salga mal, la disponibilidad se verá seriamente afectada
Requisitos
Debido al alto número de peticiones que se deben satisfacer es necesario contar con hardware adecuado para manejar el alto flujo de información
Distribución
Ya que el cliente no cuenta con los recursos físicamente cualquier afectación al servidor implicará que el cliente pierda acceso total
En arquitectura se le llama patrón a cualquier solución general y reutilizable para problemas recurrentes
Dichos patrones son similares a los patrones usados en la programación, pero orientados específicamente a la estructura a un nivel superior y más genérico
Patrón de capas
Este patron sibdivide la estructura de un programa en un número de capas que representan una subtarea
Cada una de estas tareas perteneciendo a un nivel de abstracción diferente
Cada capa está diseñada para proporcionar un servicio a la siguiente capa de mayor nivel
Ventajas
Testing
Al tener cada capa su implementación por separado el testing puede ser más especifico sin necesidad de tantas complicaciones
Facilidad de desarrollo
Debido a la alta distribución es mucho más sencillo coordinar un equipo para su desarrollo, ya que cada miembro tiene claro el objetivo de cada capa
Desventajas
Rendimiento
Debido a que cada funcionalidad está en una capa diferente, este patrón usualmente sufgre de menor rendminieto debido a las peticiones atravesando cada capa
Escalabilidad
Debido a que cada capa depende de la anterior el proceso de escalabilidad puede llegar a ser una tarea complicada
Patrón master-slave
Este patrón consiste en dos grupos, el maestro y el de esclavos, los esclavos realizan las tareas propuestas por el maestro
El maestro se encarga de presentar, almacenar o procesar los resultados proporcionados por los esclavos
Ventajas
Gestión centralizada
Este patrón destaca cuando es necesario realizar tareas multi-tarea, ya que permite dividir las tareas en diferentes módulos
Control
Al originarse las tareas de un único nodo orquestador es posible mantener mayor control sobre las mismas, ya que se ejecutan de manera independiente
Escalabilidad
Gracias a la independencia de las tareas escalar el sistema es una tarea relativamente sencilla en comparación con otras arquitecturas
Desventajas
Implementación
Debido a cómo funciona el sistema, en base a tareas independientes las unas de las otras, no es aplicable para todos los proyectos
Dependencia
Implementaciones de este tipo implican una fuerte dependencia con el sistema en el que están basadas, haciendo complicado una implementación del mismo en otros ámbitos
Patrón MVC (modelo-vista-controlador)
Este patrón es conocido por dividir una aplicación en tres partes diferenciadas
Modelo
Contiene la funcionalidad central y los datos
Vista
Muestra la información al usuario, siempre es posible definir una o más vistas para una misma app
Controlador
Maneja la entrada del usuario, esto para separar las representaciones internas de la información de las formas en que se presenta y acepta la información por parte del usuario
Ventajas
Fácil colaboración
Al separar fuertemente responsabilidades es posible desarrollar nuevas características sin la necesidad de afectar todas las piezas implicadas
Aplicaciones multi-vista
Al aislar las vistas del resto de la lógica es posible presentar las mismas funcionalidades en diferentes vistas que pueden dirigirse incluso a diversos dispositivos
Desventajas
Complejidad
Es un patrón complejo que requiere que los desarrolladores implicados tengan muy clatos los conceptos de responsabilidad asignados a cada una de las tres partes implicadas
Lento en ocasiones
A diferencias de otros patrones, desarrollar para este puede implicar tocar muchas y diversas piezas y tener que seguir un flujo de trabajo cerrado
Esto puede llegar a generar dificultades al meter cambios debido a las múltiples piezas involucradas