Existe una nueva forma de desarrollar aplicaciones de software utilizando una arquitectura de microservicios. Fue entonces cuando aumentó todo el alboroto en torno a los contenedores y la orquestación de contenedores, pero hemos estado desarrollando y utilizando estas grandes aplicaciones de software incluso antes de que la mayoría de nosotros naciera. Entonces, en este artículo, discutiremos cuál es la arquitectura de software antigua que usamos incluso antes de los microservicios y cuáles son las desventajas que llevaron a cambiar nuestro enfoque a los microservicios.
Entonces, en cuanto a los objetivos principales de este artículo, hay cuatro cosas principales que discutiremos:
- ¿Qué es Monolítico?
- ¿Qué es la arquitectura monolítica?
- Ventajas y desventajas de la arquitectura monolítica.
- Desafíos de la arquitectura monolítica .
¿Qué es monolítico?
Monolítico en general es algo que es un solo bloque grande, indivisible, inflexible y móvil. Eso explica brevemente a un alto nivel la unidad de la arquitectura monolítica y sus características también.
La aplicación monolítica en TI es una aplicación construida en base a una arquitectura monolítica. Es autónomo, lo que significa que contiene todas las partes de las aplicaciones empaquetadas e implementadas juntas. Entonces, para simplificar esto, puede imaginar esto como un gran contenedor donde todos los componentes de software de las aplicaciones se ensamblan, se empaquetan y se implementan como una sola unidad. Imagine que ha desarrollado una aplicación en la plataforma Java, luego puede empaquetarla utilizando varios formatos, como .jar , y finalmente se implementa como una sola unidad en el servidor de aplicaciones.
¿Qué es la arquitectura monolítica?
Entonces, en términos comerciales, puede decir que todos los diferentes servicios comerciales se empaquetan juntos como una sola unidad que está estrechamente acoplada, por lo que, por lo general, cuando observa la arquitectura monolítica, consta principalmente de tres niveles.
Arquitectura monolítica de alto nivel:
- Capa de presentación: en un nivel alto, el nivel de presentación es la capa frontal de la arquitectura de tres niveles. Es principalmente una interfaz de usuario de una aplicación web. Este nivel a menudo se crea con tecnologías web como HTML, Javascript, CSS o a través de otros marcos de desarrollo web populares y este nivel se comunica con los otros dos niveles en la parte inferior mediante llamadas API.
- Nivel de aplicación: aquí es donde tiene toda la lógica empresarial. A menudo está escrito en Java, Dotnet, C, Python, C++ o algunos lenguajes más relacionados.
- Nivel de datos: aquí es donde se almacenan todos los datos y la capa de aplicación accede a estos datos cuando llama a la API. Este nivel consta de tecnologías de base de datos como MySQL, Oracle DB, Microsoft SQL Server, MongoDB
Esa es una descripción general de alto nivel de la arquitectura monolítica y sus niveles. Entonces, todas estas capas se empaquetan y se implementan juntas como una sola unidad y esa es una de las razones principales por las que se llama arquitectura monolítica.
Ahora veamos un ejemplo de una aplicación monolítica simple. Cuando toma una aplicación web de librería, consta principalmente de cuatro componentes:
- Cuentas de clientes
- Pagos
- Inventario
- Transporte
Entonces, si el desarrollador desarrolla esta aplicación basada en una imagen de identificación monolítica, estos cuatro componentes se desarrollarán juntos, que pueden ser interdependientes entre sí y se implementarán en un servidor web como una sola unidad.
Ventajas y desventajas de la arquitectura monolítica
Con este estilo de arquitectura de desarrollar una aplicación, hay algunas ventajas y desventajas y ahora es el momento de ver algunas de las ventajas y desventajas de la arquitectura monolítica.
Ventajas de la arquitectura monolítica:
- Unidad única de implementación: dado que es una sola unidad de implementación, solo hay una aplicación para probar e implementar en general. Por lo tanto, las aplicaciones monolíticas son fáciles de desarrollar e implementar.
- Compatibilidad con IDE: llevamos casi dos o tres décadas desarrollando aplicaciones monolíticas. Es maduro y antiguo, por lo que los IDE y otras herramientas de desarrollo están diseñados en sincronía con la arquitectura monolítica en mente.
Desventajas de la arquitectura monolítica:
- Aplicaciones grandes: las aplicaciones creadas con un diseño monolítico suelen ser muy grandes. Si la aplicación es pequeña entonces no hay problemas. Entonces será fácil de desarrollar y mantener. En caso de que la aplicación sea grande y tenga varios componentes, habrá una situación en la que el desarrollador podría perderse entre los requisitos comerciales, los componentes y su código. Y lo más probable es que ningún desarrollador individual o incluso un grupo de desarrolladores comprenda la totalidad de la aplicación, especialmente para aquellos desarrolladores que se han unido recientemente al equipo y les llevará mucho tiempo comprender una aplicación.
- Dependencia de la tecnología: estas aplicaciones monolíticas se bloquearán con las decisiones iniciales sobre las tecnologías en las que han desarrollado esta aplicación. Incluso si hay mejores tecnologías, lenguajes y herramientas que aumentan con el tiempo para resolver los problemas comerciales, pero desafortunadamente estas aplicaciones monolíticas las aplicaciones tendrán que ceñirse a sus tecnologías iniciales y a las decisiones iniciales que hayan tomado al principio.
- Desarrollo de pila única: al desarrollar aplicaciones de software, no existe un principio único para todos, lo que significa que imaginemos que hay varios componentes dentro de la aplicación y puede haber una situación en la que sienta que una tecnología se adapta mejor a un componente. y no es adecuado para otros componentes. Sin embargo, este diseño monolítico lo restringirá a usar una única pila de desarrollo.
- Implementaciones frecuentes poco prácticas: las implementaciones frecuentes no son prácticas porque hay varios componentes de la aplicación vinculados entre sí en una aplicación monolítica, por lo que requiere la coordinación de muchos desarrolladores e incluso departamentos que son responsables de estos componentes. Puede llevar horas o incluso días programar la implementación y probar nuevas funciones y correcciones de errores.
- Difícil de escalar: el escalado de aplicaciones monolíticas a menudo puede ser muy desafiante, ya que se implementa como una sola unidad de la aplicación, no como un componente individual, por lo que tuvo que escalar toda la aplicación.
Desafíos de las aplicaciones monolíticas
Ahora hay un gran desafío con la arquitectura monolítica a pesar de que ha funcionado bien durante más de tres décadas. Las grandes organizaciones han utilizado esta forma de empaquetar e implementar aplicaciones durante décadas y han desarrollado formas efectivas de lidiar con estas deficiencias, pero esto fue antes de que Internet trajera nuevos desafíos y uno de los desafíos es la naturaleza impredecible de las demandas de los usuarios sobre la aplicación.
Imagine que tiene una aplicación web interna dentro de su empresa y que alrededor de 10 000 empleados de su empresa la usan todos los días. Para que sepa exactamente cuántos empleados de su empresa tiene cuando están trabajando y durante cuánto tiempo. Entonces, según estos criterios, puede proporcionar los recursos suficientes para que estas aplicaciones funcionen mejor. Entonces, si se unen más empleados a la empresa, lo sabe de antemano y puede agregar más recursos al servidor donde se ejecuta esta aplicación para mantener el mejor rendimiento posible.
Ahora imaginemos que su empresa tiene un sitio web externo donde venden productos en línea como amazon.com o walmart.com. En este escenario, no sabe exactamente cuántas personas usarán su sitio web hoy. Todo lo que puede hacer es una buena estimación basada en algunos datos históricos que tiene pero que no pueden ser seguros. Entonces, si observa las ventas durante la temporada navideña, verá un rápido aumento en el número de visitantes como resultado de alguna campaña de marketing o un zumbido en las redes sociales. Entonces, tan pronto como vea ese aumento en el tráfico, debe escalar inmediatamente los recursos de la aplicación. Desafortunadamente, no tiene el lujo de recibir un aviso de algunas semanas, por lo que si simplemente no proporciona esos recursos, obviamente reduce el rendimiento de sus aplicaciones, lo que podría incluso provocar que se bloqueen.
Esto solía suceder durante los primeros días de Internet, donde las aplicaciones web que eran monolíticas y cuando tenían cierto número de visitantes, ralentizaban las aplicaciones y posiblemente las detenían por completo. El problema principal aquí es que los recursos no se pueden proporcionar con la suficiente rapidez para satisfacer la demanda. Entonces, la principal desventaja del patrón de arquitectura monolítica es que no va bien con los recursos de escala dinámicamente cuando sea necesario.
Publicación traducida automáticamente
Artículo escrito por kumaripunam984122 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA