El monolito, los microservicios y la informática sin servidor: pros y contras

Elegir entre el monolito, los microservicios y la arquitectura sin servidor para su producto es esencial para satisfacer las necesidades comerciales y garantizar una experiencia positiva para el usuario final. ¿Cómo elegir correcto?

Cuando se debe escribir un nuevo producto de software, los desarrolladores deben pensar en la arquitectura del producto de antemano. ¿La implementación de un producto monolítico permitirá alcanzar los objetivos comerciales? Quizás, sería mejor dividir la aplicación en varios microservicios que interactuarían a través de las API. O mejor aún, tal vez deberíamos usar algunos servicios informáticos sin servidor como Azure Functions o AWS Lambda y simplemente implementar nuestro código y no preocuparnos por la arquitectura subyacente en absoluto. Echemos un vistazo a cada una de estas posibilidades y sus pros y sus contras.

Arquitectura de la aplicación Monolith: desarrollo complejo, operaciones simples

Las aplicaciones de Monolith son las más antiguas. La mayoría de las soluciones heredadas de la empresa se construyen con una arquitectura monolítica y, a pesar de todos los chistes sobre la codificación en la parte superior de su dinosaurio, estas soluciones tienen una ventaja innegable: todavía funcionan y hacen bien su trabajo.
Incluso si se perciben como enormes cajas negras con innards desconocidas, estas soluciones tienen algoritmos de administración claros, un número restringido de puertos de interacción externos y un comportamiento predecible.

Su mayor defecto es la complejidad de actualizarlos, ya que desentrañar el desorden del código dejado por el proceso de desarrollo original puede ser literalmente imposible. Esto puede deberse a la ausencia de desarrolladores iniciales o debido a que el código se escribe usando un marco abandonado por mucho tiempo, etc.

Dicho esto, la mayor desventaja de los monolitos heredados es su mayor ventaja al mismo tiempo. Son limitados y pueden plantear un número limitado de problemas que tienen un número limitado de soluciones. Esto hace que su funcionamiento sea predecible y relativamente simple.

Microservicios: desarrollo simple, operaciones complejas

Cuando en lugar de una solución de monolito tienes un montón de microservicios interconectados, las cosas parecen ser mucho más fáciles. Cada componente puede ser desarrollado, probado e implementado por un equipo separado, puede escalarse horizontalmente con facilidad y puede reutilizarse como parte de otros productos. Los recientes avances en la funcionalidad y popularidad de los contenedores Docker y la plataforma de orquestación de contenedores de Kubernetes hacen que el uso de microservicios para la entrega de software sea mucho más conveniente y factible.

Las desventajas de usar los microservicios incluyen la mayor complejidad de desarrollar cada componente para poder responder a las solicitudes de los otros componentes; mayor complejidad de ejecutar las operaciones del sistema; mayores demandas operativas para garantizar el proceso de CI / CD, etc. Uno de los desafíos más desalentadores para muchas empresas es el hecho de que para utilizar la arquitectura de microservicios de manera eficiente para un producto de software, la empresa debe emplear un equipo de DevOps experimentado u optar por DevOps-as-a-Service de algún proveedor de servicios administrados .

Computación sin servidor: escriba el código, CSP maneja el resto

La informática sin servidor permite ejecutar cualquier función (es decir, el nombre de las ofertas de Google, Microsoft e IBM, Google Cloud Functions , Azure Functions e IBM Cloud Functions ) que podría necesitar sin preocuparse por la infraestructura: los servidores, sus software y herramientas, la copia de seguridad y escalar vienen con la oferta. Simplemente escribe el código y lo ejecuta, la plataforma maneja el resto. Si bien esto podría ser una simplificación excesiva, el uso de la informática sin servidor puede ser muy beneficioso para realizar tareas únicas o procesos auxiliares.

Pensamientos finales sobre el monolito, los microservicios y la informática sin servidor

Estos 3 enfoques no son contradictorios, deben considerarse simplemente como una elección de herramientas. Si su producto es relativamente simple y puede funcionar eficientemente como un monolito, hágalo de esta manera, no complique demasiado la situación dividiéndola en microservicios. Si necesita que se ejecute un código después de que se desencadene en un determinado evento y no desea prestar atención innecesaria para respaldar la infraestructura para eso, aproveche las capacidades de la informática sin servidor. Si necesitara recombinar las partes de su producto o actualizarlas por separado, la arquitectura de microservicio le ayuda. Dicho esto, creemos que los verdaderos ganadores de esta competencia son los desarrolladores, que ahora simplemente tienen más herramientas a su disposición.

Esperamos que este artículo sea una lectura interesante e invoque algunas consideraciones. ¿Tienes una experiencia de dividir el monolito en microservicios para compartir? ¿O usas la informática sin servidor para un gran beneficio? Por favor comparte tus pensamientos e ideas sobre el tema! Si necesita ayuda para configurar los microservicios y la informática sin servidor, o cualquier otro servicio de DevOps, simplemente háganoslo saber , ¡estamos encantados de ayudarle!