Please enable JavaScript.
Coggle requires JavaScript to display documents.
Arquitecturas de Software, image, image, image, image, image - Coggle…
Arquitecturas de Software
Cliente-Servidor
Características
Distribución de Tareas
: Las tareas se dividen entre clientes y servidores. Los clientes solicitan servicios y los servidores los proporcionan.
Comunicación a través de la Red:
La interacción entre cliente y servidor se realiza a través de una red, generalmente Internet.
Centralización de Recursos
: Los servidores centralizan los recursos y servicios, lo que facilita la gestión y el mantenimiento.
Mantenimiento Simplificado
: Las actualizaciones y el mantenimiento se realizan en el servidor, lo que simplifica la gestión del sistema.
Ventajas
Centralización de Recursos
: Los recursos y servicios se gestionan de manera centralizada en el servidor, lo que facilita la administración y el mantenimiento.
Escalabilidad
: Es fácil añadir más clientes o servidores según sea necesario, permitiendo que el sistema crezca sin afectar su rendimiento.
Mejora de la Seguridad
: La centralización permite implementar medidas de seguridad más efectivas, protegiendo los datos y servicios de manera más eficiente.
Desventajas
Dependencia del Servidor
: Si el servidor falla, los clientes no pueden acceder a los servicios, lo que puede paralizar las operaciones.
Sobrecarga del Servidor
: Si hay muchos clientes simultáneos, el servidor puede saturarse, afectando el rendimiento del sistema.
peer-to-peer
Características
Descentralización
: No hay un servidor central. Cada nodo en la red actúa tanto como cliente y servidor, compartiendo recursos directamente entre ellos.
Autoorganización
: Los nodos se organizan y gestionan automáticamente, sin necesidad de una administración centralizada.
Distribución de Recursos
: Los recursos se distribuyen entre todos los nodos, lo que puede mejorar la eficiencia y reducir la carga en cualquier nodo individual.
Resiliencia
: La red es más resistente a fallos, ya que no depende de un único punto central. Si un nodo falla, los demás pueden seguir funcionando y compartiendo recursos.
Ventajas
Capacidad ilimitada
: Cuantos más ordenadores se unan a la red, mayor será su rendimiento, ya que cada nuevo miembro aporta capacidad, memoria y ancho de banda.
Seguridad mejorada
: Al no haber un servidor central, es más difícil que toda la red sea atacada. Los fallos en un ordenador tienen un impacto mínimo en el sistema.
Flexibilidad
: Las tareas pueden repartirse de manera flexible, permitiendo que cada miembro contribuya con recursos similares o superiores a los demás.
Desventajas
Gestión compleja
: La organización y gestión de una red P2P puede ser complicada y requiere tiempo, ya que no hay una entidad central de control.
Impacto de cambios:
Los cambios en un ordenador pueden afectar a toda la red, y la disponibilidad de datos puede verse comprometida si se eliminan en un ordenador.
Uso indebido
: La libertad en las redes P2P puede ser mal utilizada, dificultando la prevención de la subida de contenidos protegidos por derechos de autor y complicando la persecución judicial.
MVC
Caracteristicas
Separación de responsabilidades:
Cada componente tiene una función específica (datos, presentación e interacción).
Modularidad y reutilización:
Permite trabajar y mantener las partes de forma independiente y reutilizar el código.
Soporte para múltiples vistas:
Múltiples interfaces pueden usar el mismo modelo.
Controladores delgados y modelos robustos:
La lógica principal está en el modelo, manteniendo los controladores ligeros.
Ventajas
Separación clara entre la interfaz de usuario, la lógica de negocio y los datos.
Facilita el trabajo en equipo y el mantenimiento de grandes proyectos.
Reutilización de componentes (el modelo y el controlador pueden usarse con múltiples vistas).
Desventajas
Requiere una curva de aprendizaje para quienes no están familiarizados con la arquitectura.
Puede volverse compleja si no se sigue correctamente la separación de responsabilidades.
puede generar complejidad innecesaria en aplicaciones pequeñas o sencillas. La estricta separación de responsabilidades puede resultar excesiva,
Arquitectura de Microservicios
Características
Factory Method
: Define una interfaz para crear un objeto, pero deja que las subclases decidan qué clase instanciar.
Escalabilidad
: Los microservicios permiten escalar de manera independiente cada componente de la aplicación, según la demanda.
Focalización en capacidades de negocio
: Cada microservicio está alineado a un proceso de negocio específico.
Despliegue independiente
: Los microservicios permiten actualizar o desplegar servicios de forma individual sin afectar a toda la aplicación.
Ventajas
Escalabilidad independiente
:
Cada microservicio puede escalarse de manera independiente, permitiendo que los componentes que requieran más recursos los reciban sin afectar al resto de la aplicación.
Desarrollo ágil:
Los equipos de desarrollo pueden trabajar en diferentes microservicios de manera simultánea sin conflictos, permitiendo entregas rápidas y continuas.
Mantenibilidad y actualización:
Los cambios y actualizaciones en un microservicio no afectan a toda la aplicación, lo que facilita la corrección de errores, la incorporación de nuevas funcionalidades y la implementación de mejoras.
Desventajas
Complejidad en la gestión:
La división en múltiples servicios introduce complejidad adicional en el monitoreo, la orquestación y la depuración de la aplicación. Requiere herramientas adicionales para la gestión del sistema distribuido.
Comunicación entre servicios:
Dado que los microservicios se comunican entre sí a través de redes (usualmente mediante APIs o mensajes), la latencia y los posibles fallos en la red se convierten en un problema potencial.
Costos operativos:
Cada microservicio puede necesitar su propio servidor, base de datos y recursos dedicados, lo que puede aumentar los costos de infraestructura, especialmente en términos de memoria y almacenamiento.
Arquitectura orientada a eventos (EDA)
Características
Complejidad
: Las soluciones asíncronas pueden ser difíciles de decodificar.
Escalabilidad
: Ideal para empresas que necesitan atender millones de solicitudes.
Flexibilidad
: Los componentes procesadores de eventos tienen una única responsabilidad, lo que facilita el aislamiento de cambios en un solo componente sin afectar al resto.
Asincronía y Distribución
: Los componentes no se comunican de forma síncrona, lo que permite la creación de aplicaciones escalables.
Ventajas
Escalabilidad y Resiliencia
: Los componentes pueden escalar y fallar de forma independiente, aumentando la resiliencia de la aplicación.
Agilidad en el Desarrollo
: Los desarrolladores pueden crear y desplegar nuevas funcionalidades sin afectar a los servicios existentes.
Reducción de Costos
: Al operar bajo demanda, se reducen los costos asociados con el sondeo continuo y la utilización de recursos.
Desventajas
Latencia Variable
: La comunicación a través de redes introduce latencia variable.
Complejidad en la Depuración
: Es más difícil registrar y reproducir el estado exacto de múltiples servicios.
Coherencia Eventual
: Las cargas de trabajo a menudo son eventualmente coherentes, lo que puede complicar el procesamiento de transacciones.
Tipos de patrones
Creacionales
Se centran en la composición de clases y objetos para formar estructuras más grandes y eficientes.
Estructurales
Se centran en la creación de objetos, ocultando la lógica de creación y proporcionando una flexibilidad para crear objetos de diferentes formas.
De Comportamiento
Se ocupan de la comunicación y la asignación de responsabilidades entre los objetos.