stringtranslate.com

Aplicación monolítica

Las aplicaciones monolíticas se pueden comparar con monolitos , como Uluru , Australia : una gran roca (mono) única (lito)

En ingeniería de software , una aplicación monolítica es una única aplicación de software unificada que es autónoma e independiente de otras aplicaciones, pero que normalmente carece de flexibilidad. [1] Existen ventajas y desventajas de crear aplicaciones en un estilo monolítico de arquitectura de software , según los requisitos. [2] Las aplicaciones monolíticas son relativamente simples y tienen un bajo costo, pero sus deficiencias son la falta de elasticidad , tolerancia a fallas y escalabilidad . [3] Los estilos alternativos a las aplicaciones monolíticas incluyen arquitecturas de múltiples niveles , computación distribuida y microservicios . [2] A pesar de su popularidad en los últimos años, las aplicaciones monolíticas siguen siendo una buena opción para aplicaciones con equipos pequeños y poca complejidad. Sin embargo, una vez que se vuelve demasiado complejo, puede considerar refactorizarlo en microservicios o una aplicación distribuida. Tenga en cuenta que una aplicación monolítica implementada en una sola máquina puede tener el rendimiento suficiente para su carga de trabajo actual, pero es menos disponible, menos duradera, menos cambiante, menos afinada y menos escalable que un sistema distribuido bien diseñado . [4]

La filosofía de diseño es que la aplicación no solo es responsable de una tarea en particular, sino que puede realizar todos los pasos necesarios para completar una función en particular. [5] Algunas aplicaciones de finanzas personales son monolíticas en el sentido de que ayudan al usuario a realizar una tarea completa, de principio a fin, y son silos de datos privados en lugar de partes de un sistema más grande de aplicaciones que trabajan juntas. Algunos procesadores de texto son aplicaciones monolíticas. [6] Estas aplicaciones a veces se asocian con computadoras mainframe .

En ingeniería de software, una aplicación monolítica describe una aplicación de software que está diseñada como un servicio único. [7] Múltiples servicios pueden ser deseables en ciertos escenarios, ya que pueden facilitar el mantenimiento al permitir la reparación o el reemplazo de partes de la aplicación sin requerir un reemplazo general.

La modularidad se logra en diversos grados mediante diferentes enfoques de programación modular . La modularidad basada en código permite a los desarrolladores reutilizar y reparar partes de la aplicación, pero se requieren herramientas de desarrollo para realizar estas funciones de mantenimiento (por ejemplo, puede ser necesario volver a compilar la aplicación). La modularidad basada en objetos proporciona la aplicación como una colección de archivos ejecutables separados que pueden mantenerse y reemplazarse de forma independiente sin tener que volver a implementar la aplicación completa (por ejemplo, la biblioteca de vínculos dinámicos (DLL) de Microsoft; los archivos de objetos compartidos de Sun/UNIX ). [8] Algunas capacidades de mensajería de objetos permiten que las aplicaciones basadas en objetos se distribuyan entre varias computadoras (por ejemplo, el Modelo de objetos componentes (COM) de Microsoft). Las arquitecturas orientadas a servicios utilizan estándares/protocolos de comunicación específicos para comunicarse entre módulos. [ cita requerida ]

En su uso original, el término "monolítico" describía enormes aplicaciones mainframe sin modularidad utilizable. [9] Esto, en combinación con el rápido aumento de la potencia computacional y, por lo tanto, el rápido aumento de la complejidad de los problemas que podían abordarse mediante software, dio como resultado sistemas inmantenibles y la " crisis del software ".

Patrones

A continuación se presentan patrones arquitectónicos comunes utilizados para aplicaciones monolíticas, cada uno con sus propias desventajas: [3]

Referencias

  1. ^ Mishra, Mayank; Kunde, Shruti; Nambiar, Manoj (2018). "Rompiendo el monolito: desafíos en la transición de datos a arquitecturas nativas de la nube". Actas de la 12.ª Conferencia Europea sobre Arquitectura de Software: Actas complementarias . Nueva York, NY, EE. UU.: Association for Computing Machinery (ACM). págs. 1–4. doi :10.1145/3241403.3241440. ISBN 9781450364836. Número de identificación del sujeto  52295004.
  2. ^ ab Harris, Chandler (2022). "Microservicios frente a arquitectura monolítica: cuando los monolitos crecen demasiado, puede ser el momento de hacer la transición a los microservicios". atlassian.com .
  3. ^ Fundamentos de la arquitectura de software: un enfoque de ingeniería . O'Reilly Media. 2020. ISBN 978-1492043454.
  4. ^ Patrones evolutivos de monolito a microservicios para transformar su monolito . O'Reilly Media. 2019. ISBN 9781492047810.
  5. ^ Aplicación monolítica de servicios de tecnología de la información Archivado el 2 de septiembre de 2007 en Wayback Machine. Recuperado el 28 de noviembre de 2019.
  6. ^ Aplicación de tres niveles de Microsoft. Recuperado el 3 de agosto de 2007.
  7. ^ "La adopción de la nube como parte del proceso de transformación digital". kumaran.com . 2 de marzo de 2022.
  8. ^ Lutkevich, Ben. "biblioteca de vínculos dinámicos (DLL)". techtarget.com .
  9. ^ Raymond, Eric S. (2003). El arte de la programación Unix . Addison-Wesley Professional.