¿Cuál es su opinión sobre el desarrollo de aplicaciones utilizando microservicios vs monolito?

MICROSERVICIOS VS MONOLITO

La arquitectura del software de microservicio permite que un sistema se divida en varios servicios más pequeños, individuales e independientes. Cada servicio es flexible, robusto, composable y completo. Se ejecutan como procesos autónomos y se comunican entre sí a través de API. Cada microservicio se puede implementar en un lenguaje de programación diferente en una plataforma diferente. Casi cualquier infraestructura puede ejecutarse en un contenedor que contiene servicios encapsulados para su funcionamiento. Dado que estos contenedores se pueden operar en paralelo, la infraestructura existente es más fácil de mantener.

A diferencia de los microservicios, la arquitectura monolítica significa que los componentes del código están diseñados para trabajar juntos, como una unidad cohesiva, compartiendo el mismo espacio de memoria. El software creado con un enfoque monolítico es autónomo; Sus componentes están interconectados e interdependientes. Si los desarrolladores desean realizar cambios o actualizaciones en un sistema monolítico, deben construir e implementar toda la pila de una vez. Es lo mismo con la escalabilidad: todo el sistema, no solo los módulos, está escalado en conjunto. Con la arquitectura monolítica, puede ser difícil adoptar una nueva pila de tecnología, y en caso de que desee utilizar una nueva plataforma o marco, tendrá que volver a escribir la solución completa.

Pero antes de comenzar a desarrollar una aplicación, evalúe todos los pros y los contras de cada arquitectura y haga su elección.

Comience con esta publicación: 5 ventajas principales de la arquitectura de microservicios

¡Gracias por la solicitud!

Mi opinión es que son estilos arquitectónicos diferentes pero válidos. Depende de tus objetivos.

Si está desarrollando una aplicación muy simple para un objetivo muy bien restringido y definido, si no está destinado a vivir una vida muy larga (lo que significa que no se mantendrá por mucho tiempo o por equipos grandes) o si no está destinado a escalar a un gran proyecto, el monolito resolverá su problema sin problemas y no le dará demasiados problemas.

Optar por una arquitectura de microservicios significa facilitar la escalabilidad, el mantenimiento, el desacoplamiento y otras características en aplicaciones distribuidas bien estructuradas, pero tiene algunos costos. Aumenta la complejidad, la coordinación y la necesidad de orquestar muchas partes. Se necesitarán algunos componentes y tecnologías solo para permitir una arquitectura bien estructurada en microservicios. Buscarlo sin automatización e infraestructura como código, en mi opinión, es un suicidio.

Existe, por supuesto, la posibilidad de construir una aplicación de monolito muy bien estructurada que se pueda desacoplar en más de un monolito y, en algún momento, en microservicios. Puede hacerlo de acuerdo con las necesidades de escala (de complejidad e infraestructura). Al principio requerirá más trabajo y la necesidad de cierta complejidad adicional, pero puede valer la pena, ya que puede crear un arquetipo para futuras aplicaciones si no solo tira el código. Y la arquitectura se vuelve mucho más lista para la nube. Estoy usando este enfoque para mi proyecto actual. Cosas que pueden ayudar con eso: la aplicación Twelve-Factor, Home – Patrones de integración empresarial, Patrones de diseño y refactorización, Diseño impulsado por dominios, Un lenguaje de patrones para microservicios.

¡Atentamente!

El famoso científico informático Scott Shenker dijo una vez que hay dos fases para resolver cualquier problema: dominar la complejidad y extraer la simplicidad. Ambos requieren un conjunto de habilidades muy diferente. Él destaca esto al dar ejemplo del desarrollo de la red de Internet / computadora, cómo se dominó la complejidad anterior y se diseñaron varios protocolos complejos. Ahora, estamos en la fase de simplicidad de extracción y podemos sumergirnos en temas como la virtualización de redes, etc.

Creo que este enfoque es cierto para el desarrollo de cualquier sistema. Al hacer que las cosas funcionen, puede ser mejor crear un monolito y cuando hacer que las cosas sean más fáciles de trabajar puede ser aconsejable migrar a una arquitectura de microservicio. Sin hacer lo primero, uno podría tomar malas decisiones de diseño o optimizar en exceso.

Migramos desde un monolito de Java a servicios Micro basados ​​en Python en la compañía con la que trabajo. Nuestro arrepentimiento ha sido mínimo.

El mundo está cambiando todos los días, así que lo hacemos. Refaccionamos mucho todos los días y mejoramos la calidad del software, la responsabilidad del programa en función del contexto, la facilidad de mantenimiento para ser más fácil y la productividad mucho mejor.

El monolito se convierte en un punto único de falla y el mantenimiento será difícil día a día. Si usted es un proveedor de API y tiene una variedad de consumidores con diferentes puntos finales de API, es mejor tener una responsabilidad única para cada uno. Los microservicios te ayudarán en esto.

El consejo siempre es ir con Microservice y la adopción de Agile también sugerirá lo mismo.

Mi opinión se basa en un solo argumento:

“Cuando el bloqueo de la aplicación (y lo hará) es mejor tener impacto solo en los microservicios correlacionados que todo el monolítico, por ejemplo: (base de datos alta, consumo de grupo de subprocesos, memoria, CPU, lo que sea)”

Para mí es razón suficiente para no usar monolíticos.

More Interesting

¿Dónde puedo obtener un servicio de desarrollo de aplicaciones móviles a un precio asequible?

¿Qué es un buen libro para leer para comprender los conceptos básicos del desarrollo de aplicaciones móviles y poder hablar con éxito con los desarrolladores con los que puedo trabajar?

¿Por qué es necesario desarrollar una aplicación móvil para un negocio?

¿Puedo colocar artículos de marca registrada en aplicaciones móviles?

¿Qué mejores prácticas debo seguir al crear estructuras de URI para aplicaciones móviles?

Cómo obtener estimaciones de precios en el desarrollo de aplicaciones de casas de software o programadores

Cómo comunicarse con los usuarios de su aplicación

¿Cuáles son los LTV de los usuarios en algunas de las principales aplicaciones móviles? Me gustaría tener una idea de los puntos de referencia para las aplicaciones de mayor rendimiento de la industria.

¿Qué tiene mejor futuro: ciencia de datos o desarrollo de aplicaciones móviles?

¿Se puede utilizar Enterprise Mobile App Builder y MBaaS para el desarrollo de aplicaciones web?

Si pudieras aprender el desarrollo de Android desde cero, ¿cómo lo rehacerías?

¿Cuáles son algunas de las mejores (más populares) empresas de diseño móvil?

Cómo hacer mi aplicación móvil seo

¿Cuáles son las ventajas diferenciales de los diversos desarrollos móviles multiplataforma?

¿Es aconsejable tener derechos de autor establecidos si desea desarrollar un sitio web y una aplicación?