¿Cuáles son los beneficios de los microservicios y pagarán por su negocio?

Publicado: 2022-01-12

El concepto de microservicios, un enfoque para diseñar una aplicación de software como un conjunto de pequeños servicios, existe desde al menos 2015. Al ofrecer beneficios como la capacidad de implementación independiente y la escalabilidad de los componentes, los microservicios están de moda en la actualidad. Esto se debe a que los beneficios de estos microservicios se traducen en velocidades de desarrollo de software increíblemente más rápidas. Dado que los consumidores cambian rápidamente sus preferencias y comportamientos, los adoptantes de microservicios pueden mantenerse al día. La vida ahora es genial, dicen. Hasta el 56 % de las empresas que participaron en una encuesta reciente de IMB planean adoptar un enfoque de microservicios en los próximos 24 meses.

Casi el 80% de los usuarios actuales dicen que su negocio probablemente aumentará la inversión en microservicios. Las ventajas de los microservicios han llevado a Netflix, Amazon, eBay, Twitter y muchos otros gigantes tecnológicos a migrar de una arquitectura monolítica a una de microservicios. Pero, ¿su empresa debería usar microservicios? Depende del contexto y si las ventajas de los microservicios superan las desventajas para su aplicación. Este blog proporciona una descripción general de un enfoque de microservicios frente a un enfoque monolítico y cinco beneficios clave del uso de una arquitectura de microservicios. También comparte parte de la experiencia de microservicios de ITRex y ofrece consejos sobre cuándo las empresas deben (no) usar microservicios. Buceo en.

Definición de microservicios y comparación con arquitectura monolítica

¿Qué es una arquitectura de microservicios ? Un estilo de microservicios es un enfoque para desarrollar aplicaciones de software nativas de la nube como un conjunto de pequeños componentes o servicios, que están diseñados en torno a un único flujo de trabajo empresarial y funcionan juntos. Esencialmente, los microservicios son parte de un cambio fundamental a DevOps, una cultura en la que los equipos de desarrollo y operaciones de TI cooperan estrechamente utilizando herramientas de automatización para entregar más rápido.

Microservicios:

  • se desarrollan de forma autónoma,
  • utilizan su propia base de datos y pueden estar escritos en diferentes idiomas,
  • comunicarse a través de API con protocolos ligeros como HTTP, intermediarios de mensajes o transmisión de eventos, y
  • realizar una funcionalidad comercial específica.

Por ejemplo, una aplicación de comercio electrónico basada en microservicios podría tener servicios independientes responsables de las imágenes de productos, la gestión de perfiles de usuario, la búsqueda, la verificación de inventario, el procesamiento de pagos y el envío. El front-end (el lado del sitio web orientado al cliente) está desacoplado del back-end (el lado orientado al negocio) para que sea posible personalizarlos y administrarlos por separado. Si toma un ejemplo de Amazon, una arquitectura de microservicios puede parecer abrumadora, si no aterradora.

Sin embargo, sin el uso de una arquitectura de microservicios, Amazon difícilmente habría evolucionado hasta convertirse en una de las empresas más valiosas del mundo (valorada en una capitalización de mercado de 1694 billones de dólares a diciembre de 2021). La decisión de aprovechar los beneficios de los microservicios se tomó a principios de la década de 2000, cuando Amazon comprendió que no estaba escalando a la velocidad del crecimiento de la base de clientes debido a problemas de codificación y desarrollo lento.

Netflix se dio cuenta de los beneficios de una arquitectura de microservicios basada en la nube a fines de la década de 2000 después de que no pudo enviar DVD a los clientes durante unos días debido a una corrupción masiva de la base de datos. Después de dividir su aplicación en más de 700 microservicios, los ingenieros de Netflix pueden hoy implementar código miles de veces al día, lo que permite a la empresa transmitir alrededor de 250 millones de horas de contenido diariamente a más de 200 millones de miembros en todo el mundo. ¿Qué arquitectura utilizaron estas estrellas tecnológicas y muchas otras empresas anteriormente, en los días previos a la nube? Utilizaron monolitos.

¿Qué es una arquitectura monolítica?

Una aplicación monolítica se crea como una sola unidad que combina todos los componentes, incluida una interfaz de usuario del lado del cliente, operaciones del lado del servidor y una base de datos. Típicamente, una arquitectura monolítica:

  • tiene una única base de código para todas las funciones,
  • está estrechamente acoplado y
  • utiliza datos centralizados.

Una aplicación de comercio electrónico desarrollada utilizando un enfoque monolítico consistiría en servicios front-end y back-end estrechamente acoplados implementados como una unidad, lo que significa que cualquier personalización necesitaría cambios en el código base y la plataforma front-end (consulte el diagrama a continuación para comparación).

Las aplicaciones monolíticas están lejos de estar muertas. En realidad, aún pueden ser una buena opción porque a menudo son más fáciles y económicos de construir (al menos en sus primeros días). Sin embargo, vienen con inconvenientes. Un cambio en una parte, ya sea para actualizar o escalar, a menudo requiere reconstruir y volver a implementar todo el sistema.

Del mismo modo, todo el sistema puede colapsar por una parte que se comporta mal, lo que significa que los monolitos son frágiles. Los monolitos también son difíciles de mantener a medida que crecen, y la integración con herramientas de terceros tampoco es agradable. Estos inconvenientes son difíciles de ignorar en el entorno de mercado disruptivo actual en el que las empresas deben reaccionar rápidamente a los cambios para sobrevivir y prosperar. De ahí el rumor sobre los beneficios de los microservicios creados por los equipos de DevOps.

5 beneficios clave de los microservicios

1. Despliegue independiente

Esta es quizás la ventaja más importante de los microservicios, al menos según Sam Newman, uno de los primeros pioneros de los microservicios. Realizar cambios en una aplicación para mejorar el rendimiento o agregar una nueva función en respuesta a las necesidades emergentes de los usuarios es muy sencillo con los microservicios autónomos. Cada servicio se puede modificar y actualizar sin tocar todo el sistema. También se pueden escalar de forma independiente entre sí si una característica está bajo demasiada carga debido a un exceso de solicitudes. Por ejemplo, puede escalar solo su servicio de procesamiento de pagos si recibe más pagos, sin aumentar el consumo de recursos de otros servicios. De esta manera, el proceso requiere menos infraestructura y conduce a un ahorro de costos.

2. Menor radio de explosión de falla

El acoplamiento flexible de una arquitectura de microservicios también proporciona otra ventaja de los microservicios: una mayor resiliencia. Los límites claros entre los servicios, junto con su tamaño micro, limitan el impacto de las nuevas versiones y aseguran el aislamiento de fallas. Una falla en un servicio no elimina la funcionalidad no relacionada, y el resto del sistema permanece intacto y continúa brindando servicios a los usuarios.

3. Aislamiento de datos

Este es un tercer beneficio que brindan los microservicios si se realizan correctamente. La soberanía de datos por componente es una característica esencial de los microservicios. Una arquitectura de microservicios permite delinear claramente los servicios que tocan los datos, lo cual es fundamental, especialmente si la organización necesita cumplir con las regulaciones de datos de atención médica o el RGPD.

4. Uso de la tecnología adecuada

Como las aplicaciones monolíticas tienen una única base de código, es difícil personalizar un enfoque tecnológico para cada funcionalidad y, a menudo, se busca un compromiso. Los microservicios, por el contrario, están diseñados en torno a las capacidades comerciales de forma predeterminada, lo que permite a los equipos elegir la mejor tecnología disponible para una funcionalidad particular para aprovecharla al máximo. Esto se debe a que los microservicios pueden usar diferentes tecnologías o lenguajes de programación para diferentes componentes. Los microservicios también simplifican la adopción de la última tecnología o la integración con herramientas de terceros según sea necesario. La ausencia de dependencia del proveedor es otra ventaja de los microservicios que se deriva naturalmente de su arquitectura débilmente acoplada.

5. Eficiencia

El enfoque de microservicios permite a las empresas establecer equipos pequeños y multifuncionales en torno a un servicio o un conjunto de servicios que pueden operar de manera ágil. Este modelo minimiza las transferencias cuando un equipo necesita esperar a que otro complete su tarea, ya sea implementación o prueba, antes de que puedan comenzar su trabajo. Al no depender de otro equipo, la velocidad de desarrollo se acelera. Los adoptantes informan múltiples beneficios del uso de microservicios, según la encuesta de IMB de 1200 ejecutivos y desarrolladores de TI. Las ventajas de microservicios más importantes que sintieron incluyen: 30 %: mayor satisfacción del cliente 29 %: mejor seguridad de los datos de la empresa/cliente 29 %: tiempo de comercialización más rápido 28 %: mejor rendimiento de la aplicación 27 %: mayor flexibilidad para escalar recursos o un 26 % menos: mejora de la productividad de los empleados ¿Hay algún desafío con los microservicios? Bueno, como dice una cita popular, los microservicios no son un almuerzo gratis. sigue leyendo

Lo malo de los microservicios

1. Complejidad

La complejidad inherente de los microservicios aumenta con la cantidad de servicios. Esta complejidad es múltiple y se atribuye a lo siguiente:

  • El control de arriba hacia abajo a nivel tecnológico y operativo es imposible
  • Las pruebas son difíciles y nunca habrá demasiada automatización de pruebas
  • La implementación de intercomunicaciones es complicada, por lo que se necesitan desarrolladores talentosos
  • La cantidad de datos registrados es demasiado grande, lo que puede conducir a su inconsistencia
  • Pueden surgir problemas de compatibilidad con las nuevas versiones
  • Hay dificultades para aprovisionar la cantidad adecuada de recursos

2. Costos

Los microservicios brindan a las empresas más opciones para ganar dinero pero no para ahorrarlo. Además del costo de contratar desarrolladores capaces de crear un entorno de microservicios complejo, existen facturas de nube y API. La buena noticia es que los costos continuos se pueden optimizar significativamente a medida que los microservicios utilizan recursos bajo demanda sobre una base de pago por uso.

3. Riesgos de seguridad

La mitad de los encuestados en la encuesta de IBM mencionaron la seguridad entre los principales desafíos que enfrentaron en su proceso de adopción de microservicios. La seguridad debe integrarse desde el principio, ya que cada microservicio tiene su propio conjunto de puntos de entrada para comunicarse con otros a través de varios niveles de infraestructura, lo que aumenta la exposición de las aplicaciones a los ataques. Además, escalar la infraestructura aumenta el riesgo de perder el control y la visibilidad de los componentes de la aplicación.

Cuándo (no) usar microservicios

Y finalmente, nuestra última pregunta: ¿cuándo vale la pena la arquitectura de microservicios? Si bien el rumor detrás de los microservicios como una opción natural para las aplicaciones nativas de la nube está justificado, no deberían ser su estilo predeterminado. La literatura lo expresa de manera simple: comience con un monolito y divídalo cuando se encuentre con problemas de escalabilidad o consumo de recursos, o cualquier otra cosa que justifique tomar el camino de los microservicios.

Aquí están nuestros consejos clave cuando NO usar microservicios:

1. Si eres una startup, los microservicios son una mala idea. Será más inteligente comenzar con una aplicación monolítica y dividirla en componentes más pequeños cuando se vuelva demasiado complicado para un equipo de dos pizzas. Lo que desea es realizar experimentos económicos en lugar de invertir mucho tiempo, esfuerzo y dinero en la construcción de una arquitectura compleja para un producto cuyo valor para el cliente aún no se ha validado. Los monolitos son una manera perfecta de probar (y descartar) MVP para aprender rápidamente qué aportará valor a sus clientes. Como dice Martin Fowler, otro gurú muy respetado de los microservicios: i) Casi todas las historias exitosas de microservicios han comenzado con un monolito que creció demasiado y se rompió. ii) Casi todos los casos en los que he oído hablar de un sistema que se construyó como un sistema de microservicios desde cero, terminó en serios problemas. Nota: Si el dominio del producto es incierto, tampoco debe usar microservicios cuando esté comenzando. Puede que sea demasiado pronto para saltar a decisiones arquitectónicas complejas, y es probable que su enfoque para configurar las comunicaciones y los límites esté muy lejos de la realidad cuando su proyecto madure.

2. Los microservicios no son una gran opción para una solución que no es compleja y puede ser mantenida por un equipo relativamente pequeño. Implementar una arquitectura de microservicios compleja para la herramienta de programación de eventos de su empresa podría entretener a sus desarrolladores, pero ¿valdrá la pena todo el problema? Los microservicios están diseñados, en primer lugar, para abordar un problema: la complejidad. Como afirma Martin Fowler, "ni siquiera considere los microservicios a menos que tenga un sistema que sea demasiado complejo para administrarlo como un monolito".

3. No elija microservicios si su aplicación es demasiado pequeña para justificarlos. ¿Sus sistemas de gestión de inventario o compras deben convertirse en microservicios si están haciendo perfectamente bien lo que deberían? Una vez más, la idea de usar microservicios es dividir una aplicación compleja en un conjunto de servicios más pequeños. Descomponer un código que ya es pequeño y sencillo solo tendría el efecto de agregar complejidad: ahora debe navegar por todos los problemas de implementación, interoperabilidad y depuración con una multitud de artefactos en lugar de implementar toda la unidad a la antigua.

Está bien, pero ¿cuándo usar microservicios para obtener sus beneficios?

Los microservicios tienen sentido cuando alguna de las afirmaciones anteriores es falsa. En otras palabras:

  • Cuando su producto se convierte en algo complejo que necesita ser domesticado o cuando desea mantenerse al día con los cambios y agregar características importantes que de otro modo serían imposibles de implementar debido a los cuellos de botella de la arquitectura monolítica.
  • Cuando está creando un producto grande y complejo con un alcance definido desde cero. Cada vez que una empresa desee organizar a docenas de desarrolladores para crear una solución a gran escala con un conjunto claro de funciones, debe considerar la creación de equipos pequeños y multifuncionales, cada uno responsable de un solo componente. De esta manera, cada equipo puede trabajar de forma independiente, con personas dedicadas que se encargan de la administración de API, canalizaciones de datos, esquemas y otras capacidades.

Un ejemplo justo y real de la cartera de ITRex sería una herramienta interna de ciberseguridad que el cliente deseaba convertir en una plataforma de seguridad como servicio. Los microservicios encajaban de forma natural en este proyecto porque una arquitectura monolítica simplemente no puede proporcionar la escalabilidad que necesita una solución SaaS para atender al creciente número de clientes, o la flexibilidad para evolucionar y adelantarse a los piratas informáticos.

Otro proyecto ilustrativo fue una plataforma de big data impulsada por IA para un minorista global. Nuestro cliente quería una solución independiente de la nube creada desde cero. Estaba claro desde el principio que la plataforma manejaría toneladas de datos y debería diseñarse como escalable para atender las nuevas fuentes de datos que se agregarán en el futuro. También tuvimos que tener en cuenta la necesidad de establecer comunicaciones con múltiples servicios externos. Así que darse cuenta de los beneficios de los microservicios en este proyecto también fue una estrategia natural. La arquitectura de microservicios nos permitió implementar sin problemas este sistema complejo, usando Kubernetes para orquestar microservicios y API.

Y había un espejo de fitness alimentado por IA equipado con cámaras 3D y un modelo ML que venía con sensores IoT conectados al equipo del usuario. Sus componentes principales, incluido un panel de administración, una aplicación de Android y un sistema de gestión de reglas, fueron creados por diferentes equipos en diferentes etapas del proyecto, cada uno con un código y una arquitectura diferentes. Cuando la complejidad de manejarlos a todos se volvió abrumadora, comprendimos que necesitábamos construir un backend para la administración centralizada. Y los convertimos en microservicios, rediseñando su código y creando nuevas bases de datos. Hubo otros beneficios de usar un enfoque de microservicios, como evitar el código o las funcionalidades duplicadas.

Por lo tanto, según nuestra experiencia, es preferible usar microservicios cuando necesita administrar volúmenes de datos crecientes, manejar complejidades de interoperabilidad o asegurarse de que su sistema sea lo suficientemente flexible para evolucionar con el negocio.

Nota final

La revolución de los microservicios se está desarrollando a medida que las empresas se dan cuenta de las ventajas de los microservicios para obtener una ventaja en el mercado. Los beneficios de los microservicios permiten que las organizaciones sean ágiles en medio de la disrupción que se ha convertido en la nueva normalidad. Ser capaz de implementar un mejor software, más rápido los prepara para cualquier cosa que venga después de "lo que sigue". Antes de seguir el ejemplo, es importante que sepa qué beneficios de microservicios pueden estar disponibles para su empresa y si la molestia estará justificada. Aparte de eso, los microservicios pueden hacer maravillas.

¿Todavía está confundido si su empresa debería caer en los beneficios de los microservicios? Póngase en contacto con los consultores de ITRex. Te ayudaremos a resolverlo.


Publicado originalmente en https://itrexgroup.com el 10 de enero de 2022.