Sin servidor vs. microservicios: ¿qué arquitectura es la mejor para su negocio?

Rotonda interior de la cúpula del capitolio de Washington D. C., lugar de la Cámara de Representantes y el Senado

Cuando las empresas necesitan crear una aplicación, una de las decisiones más importantes que deben tomar sus dirigentes es qué tipo de desarrollo de software utilizar. Aunque hay muchas arquitecturas de software entre las que elegir, las arquitecturas sin servidor y de microservicios son cada vez más populares debido a su escalabilidad, flexibilidad y rendimiento. Además, dado que se espera que el gasto en servicios cloud se duplique en los próximos cuatro años, tanto las instancias sin servidor como las de microservicios deberían crecer rápidamente, ya que se utilizan ampliamente en entornos de cloud computing.

Mientras que las arquitecturas sin servidor son generalmente favorecidas por las startups y las empresas que necesitan crear y escalar rápidamente, los microservicios son más populares entre las organizaciones que requieren una gestión más práctica de la infraestructura backend. Las soluciones sin servidor y de microservicios son ofrecidas por todas las empresas líderes en tecnología de cloud computing, incluidas Microsoft (Azure), Amazon (AWS Lambda), IBM y Google Cloud.

He aquí una mirada más profunda a lo que hace únicos a la arquitectura sin servidor y a los microservicios, y cómo elegir la opción más adecuada para usted.

¿Qué significa "sin servidor"?

La tecnología sin servidor, también conocida como arquitectura sin servidor o computación sin servidor, es un enfoque del desarrollo de software que permite a los desarrolladores crear y ejecutar código de aplicación sin tener que preocuparse de gestionar la infraestructura subyacente.

En un entorno sin servidor, las tareas rutinarias de mantenimiento como la instalación de sistemas operativos (SO) y actualizaciones de software, la gestión de la seguridad y la monitorización, entre otras, se subcontratan a un proveedor de servicios cloud (CSP).

A pesar de su nombre, un marco de trabajo sin servidor no significa computación sin servidores. Sin embargo, en las plataformas sin servidor, el CSP (en lugar del desarrollador) se encarga del aprovisionamiento de servidores, liberándoles para centrarse en el código y la lógica empresarial. Otra ventaja de las aplicaciones sin servidor es que permiten a los proveedores de servicios en la nube aprovisionar recursos según un modelo bajo demanda, lo que resulta más flexible y rentable. Con el modelo sin servidor, la facturación comienza cuando se inicia la ejecución del código y termina cuando finaliza. Junto con la infraestructura como servicio (IaaS) y la función como servicio (FaaS), el modelo sin servidor se ha convertido en una oferta líder de servicios cloud.

¿Qué son los microservicios?

Los microservicios, también conocidos como arquitectura de microservicios, son un método arquitectónico de cloud computing en el que toda la aplicación se compone de muchas partes más pequeñas independientes e interconectadas. Las aplicaciones de microservicios suelen tener su propia pila que incluye una base de datos y un modelo de gestión de bases de datos.

Los microservicios se comunican mediante una combinación de transferencia de estado representacional (API REST), transmisión de eventos y corredores de mensajes. Normalmente, los microservicios se clasifican por sus capacidades empresariales (p. ej., microservicios para motores de búsqueda o procesamiento de pedidos en línea), con un servicio de separación de líneas denominado contexto delimitado.

Al igual que la tecnología sin servidor, la suerte de los microservicios está estrechamente ligada a la de la infraestructura en la nube. Con los casos de uso de la infraestructura en la nube creciendo exponencialmente en todo el mundo, se espera que el gasto en microservicios alcance los 6000 millones de dólares en los próximos cuatro años.

Aunque a menudo se habla de los microservicios en el contexto de su definición arquitectónica, puede ser más fácil comprender su valor empresarial observándolos a través de la lente de sus beneficios empresariales más populares:

  • Cambiar o actualizar el código sin afectar al resto de una aplicación.
  • Cambiar de pila y de lenguaje de programación con facilidad.
  • Utilice componentes altamente escalables que sean independientes entre sí.

Sin servidor vs. microservicios: diferencias importantes a tener en cuenta

Tanto las arquitecturas sin servidor como las de microservicios comparten el objetivo de mejorar la flexibilidad y la escalabilidad de las aplicaciones complejas. Aunque comparten muchas similitudes, hay algunas diferencias importantes que deben tenerse en cuenta, entre ellas las siguientes:

Escalabilidad

Tanto las arquitecturas sin servidor como las de microservicios se consideran “altamente escalables”, lo que significa que permiten que las soluciones de software añadan usuarios sin dejar de alcanzar un alto nivel de rendimiento.

La diferencia viene en el nivel de control frente al nivel de automatización que las dos arquitecturas ofrecen a una organización. Las tecnologías sin servidor permiten escalar automáticamente las funciones individuales en base a eventos desencadenantes, mientras que los microservicios permiten escalar cada servicio de forma independiente, bajo demanda. Aunque el enfoque de microservicios requiere una configuración más manual, también ofrece a los desarrolladores un mayor control.

Desarrollo

Una vez más, cuando se trata de desarrollo, la diferencia entre la implementación de servicios sin servidor y microservicios se reduce al nivel de control que requiere su organización.

Los microservicios necesitan que cada servicio y función se cree, pruebe e implemente de forma independiente utilizando un contenedor como los creados por Docker y/o una plataforma de orquestación de contenedores como Kubernetes. Aunque este enfoque ofrece más capacidad de personalización que el sin servidor, también requiere más coordinación, tiempo y supervisión por parte de los desarrolladores.

Por otro lado, la tecnología sin servidor está pensada para ciclos de desarrollo e implementación rápidos con una gran agilidad y una complejidad reducida. En una arquitectura sin servidor, la gestión de la infraestructura subyacente (como la instalación y configuración de un sistema operativo, la gestión del servidor y la actualización del software) se subcontrata a un CSP. Esto permite que las funciones de la aplicación se empaqueten, implementen y escalen de forma automática.

Gestión de la infraestructura

En una arquitectura sin servidor, todo el aprovisionamiento, la gestión y el escalado de la infraestructura son gestionados por un tercero (normalmente un CSP), lo que permite a los desarrolladores centrarse exclusivamente en la lógica empresarial y en escribir e implementar el código.

Además, en un modelo sin servidor, el código se ejecuta más cerca del usuario, lo que disminuye su latencia y mejora la velocidad y el rendimiento. Sin embargo, aunque los desarrolladores pueden centrarse más en escribir código en un modelo sin servidor, tienen poco o ningún control sobre la infraestructura subyacente, como el sistema operativo o el aprovisionamiento de servidores.

En una arquitectura de microservicios, los desarrolladores deben gestionar la pila que soporta cada microservicio que planean implementar. Esto incluye cualquier infraestructura aplicable, procesos de desarrollo y configuraciones de red. Aunque los microservicios ofrecen un mayor control sobre el entorno de desarrollo, también exigen un mayor nivel de experiencia a los desarrolladores en lo que respecta a DevOps, la metodología que permite el desarrollo de aplicaciones.

Granularidad y arquitectura monolítica

La granularidad se refiere al grado de descomposición de un sistema en partes más pequeñas. Tanto los microservicios como los sistemas sin servidor se consideran de granularidad más fina que su predecesora, la arquitectura monolítica.

La arquitectura monolítica combina todas las funcionalidades de una aplicación, como la interfaz de usuario, la lógica y las operaciones de base de datos, que los servicios sin servidor y los microservicios desglosan. La simplicidad de la arquitectura monolítica era (y sigue siendo) atractiva para algunas empresas que necesitan desarrollar aplicaciones sencillas con un enfoque singular.

La arquitectura basada en microservicios es de grano más fino que la arquitectura monolítica, pero no tan fino como la sin servidor. La arquitectura de microservicios descompone las aplicaciones monolíticas en servicios más pequeños e independientes que pueden implementarse por separado. La arquitectura sin servidor tiene un grano aún más fino. Los modelos sin servidor descomponen cada aplicación en funciones individuales que son aún más pequeñas que los servicios. En una arquitectura sin servidor, cada función representa un fragmento de lógica empresarial y solo se ejecuta cuando la desencadena un evento específico.

Tiempo de ejecución

En un entorno sin servidor, la gestión de la infraestructura crítica necesaria para desarrollar e implementar el código se subcontrata a un CSP, incluido el tiempo de ejecución, es decir, el entorno en el que una aplicación o servicio está programado para ejecutarse. Esto significa que los datos que se almacenan mientras se ejecuta una función se pierden en el instante en que esta finaliza.

Por otro lado, las arquitecturas de microservicios suelen ejecutarse en máquinas virtuales (VM) dedicadas, lo que les permite almacenar su estado.

Coste

Las arquitecturas de microservicios suelen ser menos rentables que las sin servidor debido a sus modelos de facturación. Mientras que las funciones sin servidor se facturan en base al número de eventos que desencadenan la implementación del código, los microservicios requieren que los costes se paguen por adelantado en función del aprovisionamiento de infraestructura y otros recursos.

Con una arquitectura de microservicios, las organizaciones pagan por los recursos independientemente de si se van a utilizar o no, mientras que en una arquitectura sin servidor, a los usuarios solo se les factura por uso.

Microservicios sin servidor

Dependiendo de las necesidades de una organización, es posible combinar lo mejor de las arquitecturas sin servidor y de microservicios en un modelo conocido como “microservicios sin servidor”.

Los microservicios sin servidor son un marco arquitectónico híbrido en el que los microservicios se crean como una función sin servidor. Las funciones sin servidor se adaptan bien a los microservicios por su gran escalabilidad, y pueden combinarse fácilmente con servicios gestionados, lo que a veces reduce el coste de una operación de microservicios.

Este enfoque permite a los desarrolladores concentrarse en la creación de funciones más especializadas que son típicas de un entorno sin servidor (pero sin el dolor de cabeza que supone la gestión de la infraestructura). La combinación de arquitecturas sin servidor y de microservicios produce muchos de los mismos beneficios que el uso de las arquitecturas de forma independiente, incluyendo la escalabilidad, la eficiencia de costes y la flexibilidad. Sin embargo, también existen algunos retos que merece la pena tener en cuenta.

Retos de los microservicios sin servidor

  1. Límites de las funciones: definir los límites de las funciones puede ser problemático en un entorno de microservicios sin servidor, y los equipos de desarrollo a menudo luchan por definir los roles de cada función. A veces, esto hace que extiendan la lógica a través de demasiadas funciones hasta que deja de tener sentido.
  2. Rendimiento: es difícil asegurar que el rendimiento de la aplicación se mantendrá alto en cualquier entorno sin servidor debido a varios problemas; el más notable, un problema llamado “arranques en frío”. Los arranques en frío se producen cuando una función se activa tras un periodo de inactividad. Puede provocar retrasos de dos o tres segundos cuando se necesita una nueva instancia de contenedor y no hay contenedores calientes disponibles.
  3. Monitorización: puede ser difícil monitorizar aplicaciones en arquitecturas de microservicios sin servidor y averiguar dónde está la causa raíz de un problema. Las aplicaciones pueden crearse a partir de numerosos microservicios y funciones, lo que dificulta el rastreo de las solicitudes a través del entorno, necesario para comprender muchos problemas comunes.

Casos de uso de la arquitectura sin servidor y los microservicios

A medida que el uso del cloud computing sigue creciendo y las empresas buscan nuevas formas de aprovechar la tecnología para crear un nuevo valor empresarial, se amplían los casos de uso tanto de los microservicios como de la tecnología sin servidor.

Casos de uso sin servidor

Inteligencia artificial (IA) y machine learning (ML)

En los últimos años se ha producido un crecimiento masivo de los casos de uso empresarial de las aplicaciones de inteligencia artificial (IA) y machine learning (ML), especialmente en la IA generativa. En concreto, la tecnología sin servidor ayuda a hacer posible lo que se denomina IA impulsada por eventos, en la que un flujo constante de inteligencia informa las capacidades de toma de decisiones en tiempo real.

Cloud híbrido

El cloud híbrido combina la nube pública, la nube privada y la infraestructura on-premises para crear una infraestructura de TI única, flexible y rentable. La tecnología sin servidor ayuda a respaldar a las empresas que están adoptando una estrategia de cloud híbrido proporcionándoles la agilidad, flexibilidad y escalabilidad que la tecnología necesita.

Análisis de big data

La tecnología sin servidor reduce drásticamente el coste y la complejidad de escribir e implementar código para aplicaciones de datos. Los entornos sin servidor permiten a los desarrolladores centrarse en su código y en la lógica empresarial, en lugar de en todas las tareas rutinarias de gestión de la infraestructura.

Caso de uso de microservicios

Computación en la nube

Aunque los microservicios no son necesarios para los entornos de cloud computing, sus arquitecturas los convierten en un ajuste excelente debido a sus componentes de aplicación distribuidos. Las arquitecturas de microservicios permiten que el servicio y las funciones trabajen de forma independiente y se implementen para dar soporte a una aplicación. Además, la alta escalabilidad de los microservicios significa que pueden ejecutar múltiples instancias en un servidor, otra ventaja para los entornos de cloud computing.

Procesamiento de datos en tiempo real

Las aplicaciones que necesitan que los datos se procesen casi en tiempo real, como las que admiten vehículos autónomos o vídeo en streaming, se adaptan especialmente bien a los microservicios. Los microservicios permiten que las operaciones se ejecuten en tiempo real para que puedan ofrecer resultados inmediatos, lo que hace posible el funcionamiento de este tipo de aplicaciones.

Refactorización

La refactorización (cuando una empresa decide rediseñar sus capacidades de TI) es un caso de uso común para las arquitecturas de microservicios. A menudo, los departamentos de TI buscan refactorizar desde un modelo monolítico hacia algo más flexible y eficiente, que los microservicios pueden ofrecer.

Sin servidor o microservicios: ¿qué es lo más adecuado para su empresa?

Elegir la arquitectura adecuada para su aplicación es una de las decisiones más importantes que puede tomar su empresa. He aquí algunas preguntas que le ayudarán a determinar si las arquitecturas sin servidor o de microservicios son una buena opción:

  • ¿Qué tipo de aplicación está creando?
  • ¿Con qué rapidez debe hacerlo?
  • ¿Cuánto está dispuesto a gastar?
  • ¿Cuánto control necesita tener sobre la infraestructura subyacente?
  • ¿Cómo de complejo espera que sea el proceso?
  • ¿Planea realizar múltiples iteraciones?

Aunque estas son solo una muestra de las preguntas que puede considerar, deberían ayudarle a crear un marco para tomar su decisión.

Por lo general, las empresas que buscan moverse con rapidez e iterar suelen elegir una arquitectura sin servidores, mientras que las empresas con aplicaciones más complejas y exigentes (y a las que no les importa un ciclo de desarrollo más largo) optan por los microservicios. Pero se trata de grandes generalizaciones, y debe considerar los puntos fuertes y débiles de ambas tecnologías antes de tomar una decisión.

Empiece ahora

La informática serverless ofrece una forma más sencilla y rentable de crear y operar aplicaciones en la nube. Obtenga información sobre IBM Cloud Code Engine, una plataforma sin servidor de pago por uso que permite a los desarrolladores implementar aplicaciones y flujos de trabajo sin servidor sin necesidad de tener habilidades en Kubernetes.

Autor

Mesh Flinders

Staff Writer

IBM Think

Vista aérea de un hombre de negocios usando un móvil en el patio de una oficina

Conocimientos que no debe perderse. Suscríbase a nuestros boletines.

Vaya más allá de las expectativas con noticias de expertos sobre inteligencia artificial, computación cuántica, nube, seguridad y mucho más.

Suscríbase hoy