Todos los proveedores de la nube están comercializando sus soluciones "sin servidor". La promesa es que sin servidor reemplazará la forma en que los desarrolladores actualmente desarrollan su software, y las operaciones lo administran en producción.
¿Qué es "sin servidor"? ¿Dónde se puede aprender más al respecto y cómo se puede usar hoy?
terminology
serverless
Evgeny
fuente
fuente
Respuestas:
El artículo de Wikipedia sobre computación sin servidor proporciona una introducción decente al tema:
La idea es que un desarrollador no debería preocuparse por la infraestructura del servidor . El proveedor de la nube gestiona los servidores físicos, el sistema operativo utilizado y todas las dificultades tradicionales relacionadas con la ejecución de un servidor.
La informática sin servidor cambia su arquitectura de pensar en lo que están haciendo las máquinas a qué funciones están haciendo. AWS Lambda es el ejemplo que me viene a la mente: usted paga y ejecuta funciones , sin mencionar el tipo de infraestructura física que se ejecuta a continuación. También hay hosts sin servidor de la competencia, como Azure Functions (o simplemente puede buscar si no está interesado en ninguno de esos).
Hay bastantes ventajas para sin servidor (aunque en algunos casos necesita escribir de una manera ligeramente diferente a la que está acostumbrado, porque es una arquitectura totalmente diferente):
La escalabilidad es esencialmente gratuita: debido a que solo está pagando para ejecutar una función, el proveedor de la nube puede dedicar fácilmente más hardware según sea necesario para ejecutar su código. También puede escalar potencialmente a medida que aumenta la demanda, en lugar de pagar una tarifa fija si su aplicación se usa una o un millón de veces.
El software y el hardware del servidor ya no necesitan ser administrados por un desarrollador; el proveedor de la nube se encarga de eso. Si alguna vez has usado algo como Arch en un servidor, ¡sabrás lo fácil que es borrar un paquete crítico y romper todo!
Libera a los desarrolladores para centrarse en lo que son buenos: el código . La mayoría de los desarrolladores probablemente no serán buenos tanto en la infraestructura del servidor como en la programación: sin servidor solo elimina un problema de la ecuación.
fuente
Martin Fowler tiene una buena descripción general:
https://martinfowler.com/articles/serverless.html
TL; DR
"Serverless" describe el desarrollo de aplicaciones y la arquitectura que diseña aplicaciones en las que la infraestructura es efímera , lo que significa que tienden a estar basadas en contenedores y pueden "ir y venir" en función de un mecanismo de escala dinámica. Esto prescribe el uso de arquitecturas sin estado que dependen de tecnologías distribuidas (como almacenes de clave / valor).
fuente
'Sin servidor', como muchas cosas en nuestro espacio, se está convirtiendo en un término sobrecargado ... pero en general lo que significa es "Funcionalmente, nuestra arquitectura no depende del aprovisionamiento o mantenimiento continuo de un servidor"
La primera instancia que viene a la mente es una aplicación de JavaScript de una sola página, que usa almacenamiento local, y se almacena en algo como Amazon S # o Github Pages (o cualquier sitio estático, esos son solo ejemplos comunes). Imagine algo como una aplicación de estilo 'todo' o 'hacer las cosas' que se ejecuta completamente en su navegador. Su navegador accede a un servicio como S3 para descargar el código, y los elementos que almacena se almacenan en el almacenamiento local en su navegador. No hay un servidor que mantengas para esto.
La segunda instancia, y es un poco más complicada (y también la que popularizó el término 'sin servidor'), utiliza un servicio como AWS Lambda. Permítanme explicar esto presentando el problema que resuelve:
Muchas veces en mi carrera he resuelto un problema de negocios para un cliente con poco más que un código ruby que realizaba una extracción, transformación y carga periódicas (generalmente escrito como una tarea de rastrillo). Una vez resuelto, normalmente lo automatizo con cron. Entonces el problema se convierte en "¿Dónde alojo esta cosa que se ejecuta una vez cada hora?" Para algunos clientes, configuraríamos un servidor en su infraestructura existente. Para otros, configuraríamos una instancia EC2, aunque estuviera inactiva el 99% del tiempo. En cualquiera de esas circunstancias, hay un servidor que requiere aprovisionamiento, parches, monitoreo, actualización, etc.
Con Amazon Lambda, puedo tomar esa tarea de rastrillo y ejecutarla en su servicio como una 'función' pura. Incluso puedo programarlo. Ese cliente ya no necesitaría una infraestructura para una cosa tan simple de una vez por hora.
Con 'sin servidor' todavía hay un servidor, al igual que con 'nube' todavía hay una computadora. Solo hay un nivel de abstracción que asume algunas de las responsabilidades ambientales para usted.
fuente
Todas excelentes respuestas ya. Estaba revisando la publicación del blog Thinking Serverless: cómo los nuevos enfoques abordan las necesidades modernas de procesamiento de datos en HighScalability, donde he encontrado esta excelente explicación de lo que significa sin servidor:
Y, un aprendizaje más de mi experiencia personal en la construcción de infraestructura sin servidor es:
Como por ejemplo: Almacene los archivos en una cola AWS SQS. Una vez que el número de mensajes en la cola llega a 10, dispara un evento a Lambda.
fuente
Además de explicar simplemente la definición del término sin servidor, los orígenes del término y su historia también dan una idea de su significado. El concepto se originó con el JAWS marco por Austen Collins , que consiguió más tarde renombrado como sin servidor . Lo aprendí primero en la sesión AWS re: Invent 2015 , que se puede ayudar a fechar el concepto. Esto es lo que en realidad acuñó el término sin servidor, que luego se extendió rápidamente a otros sistemas en la nube:
fuente