¿Cuál es la relación entre la informática sin servidor y los microservicios?

Ambos estilos de arquitectura tienen como objetivo reducir el tiempo de comercialización [1] [2], permitir manejar los requisitos cambiantes con menos esfuerzo y reducir los costos de operación en entornos con mayor carga .

¿Qué son los microservicios?

Los microservicios son una forma específica de construir arquitecturas orientadas a servicios: los servicios tienden a ser más pequeños y los protocolos son livianos. REST + JSON, por ejemplo, son protocolos muy comunes en una arquitectura de microservicio, pero también AMQP.

¿Qué es sin servidor?

Las arquitecturas sin servidor consisten en dos conceptos diferentes [3] [4]

  • Función como servicio (FaaS)
  • Backend como servicio (BaaS)

Ver, Propósitos del estilo de arquitectura sin servidor:

Cuando utiliza un BaaS, ya no está creando API con las que habla su aplicación cliente. En cambio, su aplicación cliente se comunica con la base de datos directamente con una capa de autenticación ligera y genérica frente a la base de datos.

A menudo, el backend de una aplicación debe realizar tareas asincrónicas de larga ejecución, aquí es donde entra FaaS . Una función como solución de servicio le brinda la posibilidad de cargar un código que debe ejecutarse en un evento específico. Por ejemplo, cuando se ha insertado un registro en BaaS.

Las arquitecturas sin servidor son más eficientes para compartir recursos. Por ejemplo: una aplicación del cliente A podría usar el mismo BaaS multitienda que la aplicación del cliente B, C y D. Posteriormente, todos estos clientes compartirán los costos de operación del BaaS . Además, los clientes de FaaS pagan por el recuento de ejecución de una función en contraste con los microservicios en los que usted paga por los procesos en ejecución, independientemente de si hay alguna carga o no.

En mi opinión, existe el riesgo de que arruines tu arquitectura con un conjunto de funciones que no se pueden mantener (cuando usas FaaS) y que termines sin un pegamento cuyas funciones dependen unas de otras.

Notas al pie

[1] Propósitos del estilo de arquitectura sin servidor

[2] Propósitos y compensaciones del estilo de arquitectura de microservicios

[3] Propósitos del estilo de arquitectura sin servidor

[4] Arquitecturas sin servidor

Microservicios es un término técnico y la informática sin servidor es más un término de marketing como la nube .

En una arquitectura de microservicio, las soluciones proporcionadas por un sistema se dividen en aplicaciones de servicio de pequeño tamaño en lugar de servicios monolíticos y más grandes con API complejas. Por ejemplo, supongamos que está creando un back-end de comercio electrónico. Puede crear un servicio que tendrá una API con todas las funciones necesarias, desde el procesamiento de pagos hasta el seguimiento de envíos. También puede abordar el mismo problema diseñando varios servicios de tamaño pequeño, como un servicio de autenticación / autorización, un servicio de pago, un servicio de inventario, etc.

Al dividir los módulos en un gran servicio en servicios separados, tiene una arquitectura de sistema con componentes escalables de forma independiente que se ejecutan como servicios separados.

La computación sin servidor no es realmente un término técnico. Se refiere a un sistema donde la implementación de un servicio de software se realiza en una plataforma nublada , donde las personas que desarrollan e implementan un servicio no están realmente interesadas en la infraestructura subyacente. Esto es en realidad de lo que se trata la nube. Si bien inicialmente era solo la capacidad de ejecutar máquinas virtuales en lugar de hardware físico. Con la informática sin servidor, los proveedores de la nube están vendiendo a los desarrolladores una plataforma informática más homogénea donde los desarrolladores compran potencia informática en lugar de servidores individuales.

Si bien llamo a la informática sin servidor más como un término de marketing que como un término técnico, no pretendo subestimar el enfoque. De hecho, me parece el camino a seguir. La mayoría de las veces los desarrolladores no tienen la mejor experiencia y conocimiento sobre implementación. Sus costosas horas de trabajo también deberían dedicarse al desarrollo, no a la implementación. A medida que estas ofertas en la nube se vuelven cada vez más uniformes, la implementación de software se vuelve mucho más fácil. La implementación es algo que funciona mejor cuando se automatiza. Los proveedores de la nube dedican mucho tiempo experto a estas automatizaciones.

En cuanto a la relación entre la computación sin servidor y la arquitectura de microservicios, la arquitectura de microservicios permite que pequeños equipos de desarrolladores se centren en servicios separados, cada uno de los cuales proporciona una tarea específica, y la computación sin servidor les ayuda a poner en funcionamiento estos microservicios con el menor esfuerzo.

En un nivel puramente técnico, se refieren a dos ideas diferentes en el mundo de la arquitectura que no tienen que estar relacionadas.

La informática sin servidor es el proceso de utilizar servicios en la nube de terceros como AWS Lambda, DynamoDB y API Gateway para no mantener sus propios servidores. Una arquitectura verdaderamente sin servidor nunca necesitaría su propio servidor dedicado en la pila.

Un microservicio es un servicio pequeño y modular que se puede unir y conectar con otros servicios pequeños y modulares para crear una pila de tecnología. En lugar de implementar una aplicación grande, puede implementar 12 microservicios más pequeños escritos en diferentes idiomas.

Puede tener un marco de microservicio que no use Arquitectura sin servidor. Una empresa puede decidir ejecutar sus microservicios en una flota de instancias EC2, por ejemplo. Y, en teoría, podría tener una arquitectura sin servidor que no sea un microservicio (es decir, implementar sin servidores, pero su aplicación es mucho más grande de lo que se consideraría un ‘microservicio’).

Dicho esto, Microservices y Serverless Architecture son buenos cumplidos entre sí. En particular, con AWS Lambda, puede crear diferentes microservicios en una variedad de idiomas y simplemente hacer que se comuniquen a través de una API Rest. Entonces, a pesar de sus diferentes ideas técnicas, a menudo se habla de ellos juntos debido a esto.

En términos de arquitectura y el patrón arquitectónico. Son muy diferentes En un patrón de microservicios, debe tratar cómo va a servir su servicio ‘micro’ y el nivel inferior.

En sin servidor, todo lo que tiene que hacer es dar la funcionalidad central del servicio ‘micro’ y el resto, las responsabilidades del lado del servidor son manejadas por el proveedor de servicios sin servidor.

Explico la arquitectura de software en una serie de videos, he explicado qué es la arquitectura de software en general y brevemente hablé sobre microservicios . También expliqué el modelo sin servidor aquí:

Aquí está el de Arquitectura:

Publicaré uno detallado sobre microservicios en un futuro próximo.

El microservicio es un estilo de arquitectura en el que desarrolla un conjunto de operaciones múltiples específicas para una lógica de negocios, que se comunican entre sí mediante las colas de mensajería o las API REST.

Sin servidor podría ser útil para escalar automáticamente el número de instancias de todos estos microservicios y equilibrar la carga de forma orquestal para proporcionar un mayor tiempo de actividad.

La informática sin servidor IMO facilita a los desarrolladores centrarse en escribir código que en tareas de infraestructura.

Los dos están íntimamente vinculados.

(Algunas notas principales … Diré al principio que no me gusta este título “Computación sin servidor” que surgió recientemente: prefiero “Computación oculta”, ya que todavía hay un servidor, simplemente no lo está administrando. Ah, y me concentraré en los servicios de AWS aquí, ya que estoy más familiarizado con ellos y es más probable que los lectores también los conozcan).

El objetivo de los microservicios es que deconstruye su aplicación monolítica en una serie de “cajas negras”, definidas por sus entradas, sus salidas, las transformaciones entre los dos, los efectos secundarios (posiblemente parte de las salidas) y las limitaciones de tiempo . Si un microservicio dado no funciona como debería, puede reemplazarlo de manera aislada a los demás, y todos deberían continuar funcionando. No necesita usar el mismo lenguaje de programación en todos sus microservicios: para cada uno, use el que mejor se ajuste o el que prefiera el desarrollador.

Entonces, ¿dónde encaja la “informática oculta” en todo esto? Resulta bastante natural, aunque resulta que, dado que los servicios de computación oculta tienden a ser de naturaleza propietaria, debe comprometerse hasta cierto punto con el principio de sustitución: dejarse caer en una nueva “caja negra” no es trivial cuando usted ” Está utilizando API propietarias.

Mi ejemplo favorito de una arquitectura basada en microservicios que usa solo servicios de computación oculta es una aplicación IoT, digamos un sistema de ciudades inteligentes:

  • El lado del dispositivo / back-office:
  • Las “cosas” (dispositivos conectados) se comunican mediante el protocolo MQTT a la API de IoT de AWS.
  • La API de IoT mantiene estados para las “cosas” individuales y:
  • provoca disparos de Lambda en los mensajes recibidos;
  • almacena mensajes en una tabla DynamoDB;
  • Los cambios en DynamoDB también hacen que los disparadores de Lambda realicen el procesamiento de Big Data en la tabla;
  • El lado del usuario (ya sea la vista de la empresa o la vista del usuario final):
    • La autenticación usa IAM o Cognito;
    • Los elementos estáticos del sitio web se sirven desde S3;
    • Lambda proporciona elementos dinámicos a través de API Gateway:
    • Usando datos de / a DynamoDB y / o S3;
    • La actualización de la “cosa” oculta indica en la API de IoT si el usuario lo requiere.

    ¡No hay un servidor EC2 o un contenedor Docker a la vista!

    El matrimonio es siempre una relación, pero una relación no siempre es un matrimonio.

    IMO Microservices (API’s) es una forma de computación sin servidor (desde el punto de vista del consumidor). Entonces, al consumir un microservidor, no tiene que lidiar con la administración de los servidores, la red y la infraestructura en torno a este microservicio.

    La informática sin servidor, un término sin protección, significa que puede hacer cosas sin administrar el servidor. Esto es más amplio que los microservicios solos. Algunos ejemplos son AWS RDS está ejecutando una base de datos sin tener que administrar los servidores.

    La OMI con Office Online o Google G Suite también es una forma de computación sin servidor.

    Entonces, Microservices es “solo” una API, Serverless Computing es un súper conjunto de servicios Micro.

    Puede encontrar una buena descripción de esta pregunta aquí: ¿Qué viene después de los microservicios? Sin servidor