Please enable JavaScript.
Coggle requires JavaScript to display documents.
Arquitecturas de software existentes y sus características, Microservicios…
-
Microservicios
Escalabilidad y flexibilidad: Los microservicios permiten escalar y desplegar componentes individualmente según sea necesario. Esto proporciona una mayor flexibilidad y capacidad de respuesta en comparación con una aplicación monolítica.
Desarrollo y despliegue independientes: Cada microservicio se puede desarrollar, probar y desplegar de manera independiente. Esto permite un desarrollo ágil y una implementación continua.
Mantenibilidad y evolución simplificadas: Al ser componentes independientes, los microservicios son más fáciles de mantener y evolucionar. Los cambios en un microservicio no afectan directamente a otros.
-
Por capas
Rendimiento: En algunas situaciones, las capas adicionales pueden introducir cierta latencia y afectar el rendimiento del sistema.
Sobrecarga de comunicación: Las capas pueden requerir comunicación constante entre sí, lo que puede generar sobrecarga de red o de recursos.
Mayor consumo de recursos: Cada capa puede requerir recursos adicionales, como memoria y CPU, lo que puede aumentar los costos de hardware.
-
Espaguetti
Dificultad en el mantenimiento: El código desorganizado y sin estructura dificulta la identificación y corrección de errores, lo que hace que el mantenimiento sea costoso y propenso a errores.
Falta de reutilización: La falta de modularidad en la arquitectura espagueti hace que sea difícil reutilizar componentes de código en diferentes partes del proyecto o en otros proyectos.
Baja escalabilidad: A medida que el proyecto crece, la arquitectura espagueti tiende a volverse menos escalable y más propensa a problemas de rendimiento.
-
Monolitica
Mantenimiento complejo: A medida que la aplicación se vuelve más grande y compleja, mantener y realizar cambios puede ser complicado debido a la interconexión de todas las partes en un solo monolito.
Desarrollo colaborativo difícil: En proyectos grandes, puede ser complicado para múltiples equipos de desarrollo trabajar juntos eficazmente debido a la dependencia de un solo código fuente.
Tecnologías obsoletas: Con el tiempo, algunas partes del monolito pueden quedar obsoletas, lo que limita la capacidad de mantener el sistema actualizado.
-
Microservicios
Complejidad de la gestión: Coordinar múltiples microservicios puede ser complejo, ya que cada uno tiene su propia lógica y base de datos.
Requisitos de infraestructura: Los microservicios pueden requerir una infraestructura más robusta y costosa debido a la necesidad de administrar múltiples servicios en lugar de uno solo.
Comunicación entre microservicios: La comunicación entre microservicios a través de la red puede generar latencia y complejidad adicional.
-
Hexagonal
-
Complejidad inicial: La implementación de una arquitectura hexagonal puede ser más compleja en comparación con enfoques más simples, como la arquitectura monolítica.
Mayor cantidad de código: Debido a la separación de capas y la introducción de adaptadores, es posible que se necesite escribir más código en comparación con enfoques más simples.
Rendimiento: La arquitectura hexagonal puede introducir una sobrecarga en términos de rendimiento debido a la necesidad de gestionar adaptadores y convertir datos entre diferentes capas.
Por capas
Modularidad: Permite dividir un sistema en componentes independientes y separar preocupaciones, lo que facilita la gestión y el mantenimiento del código.
Reutilización de código: Las capas pueden reutilizarse en diferentes proyectos, lo que ahorra tiempo y esfuerzo en el desarrollo de software.
Escalabilidad: Permite escalar el sistema de manera eficiente agregando o modificando capas según sea necesario.
Espaguetti
Rápida implementación inicial: La arquitectura espagueti puede permitir una implementación rápida y sencilla de un sistema, especialmente para proyectos pequeños o prototipos.
Flexibilidad para cambios rápidos: Debido a que no hay una estructura definida y rígida en la arquitectura espagueti, puede ser más fácil realizar cambios rápidos en el código. Esto puede ser útil en situaciones donde los requisitos del proyecto cambian con frecuencia.
Baja barrera de entrada: Si estás trabajando en un proyecto pequeño y no tienes experiencia en arquitecturas más formales, la arquitectura espagueti puede ser una opción sencilla para comenzar. No requiere un conocimiento profundo de patrones de diseño o principios de arquitectura más avanzados.
Monolitica
Simplicidad: La arquitectura monolítica es relativamente fácil de entender y desarrollar, ya que todos los componentes están dentro de un mismo sistema. No hay necesidad de gestionar múltiples servicios o microservicios separados.
Rendimiento: Debido a que todos los componentes están en el mismo sistema, las comunicaciones y las llamadas entre ellos son rápidas y eficientes. Esto puede resultar en un mejor rendimiento en comparación con arquitecturas distribuidas.
Facilidad de despliegue: Al tratarse de una única unidad, el despliegue de una aplicación monolítica es más sencillo y menos propenso a errores. No se requiere coordinación entre múltiples servicios o componentes.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-