¿Qué es sin servidor?

42

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?

Evgeny
fuente
la informática sin servidor es "sin servidor", ya que una "hamburguesa de pollo" es vegana ya que no conociste personalmente al pollo
Sai Addanki

Respuestas:

43

El artículo de Wikipedia sobre computación sin servidor proporciona una introducción decente al tema:

La informática sin servidor, también conocida como función como servicio (FaaS), es un modelo de ejecución de código de computación en la nube en el que el proveedor de la nube gestiona completamente el inicio y la detención de la plataforma de contenedor de una función como servicio (PaaS) según sea necesario para atender solicitudes y solicitudes se facturan mediante una medida abstracta de los recursos necesarios para satisfacer la solicitud, en lugar de por máquina virtual, por hora.

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.

Aurora0001
fuente
"No debería tener que preocuparse por la infraestructura del servidor en absoluto". Eso es algo realmente bueno porque, en mi experiencia, ¡demasiados de ellos ya / no /, con consecuencias desastrosas!
Phill W.
15

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).

Dave Swersky
fuente
2
No solo efímero, sino abstraído por completo. En muchas configuraciones modernas sin servidor (como AWS EC2 ASG), la infraestructura también es efímera; una instancia de EC2 en un ASG se puede terminar en cualquier momento.
Adrian
14

'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.

David Bock
fuente
Mi voto a favor por el ejemplo de la vida real del trabajo de una vez en una hora que generalmente necesitaba un EC2. ¡Ahora solo necesitas una función Lambda!
HopeKing
10

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:

La frase "sin servidor" no significa que los servidores ya no estén involucrados. Simplemente significa que los desarrolladores ya no tienen que pensar tanto en ellos. Los recursos informáticos se utilizan como servicios sin tener que gestionar alrededor de las capacidades físicas o los límites. Los proveedores de servicios asumen cada vez más la responsabilidad de administrar servidores, almacenes de datos y otros recursos de infraestructura ... Al ir sin servidor, los desarrolladores pueden cambiar su enfoque del nivel del servidor al nivel de la tarea. Las soluciones sin servidor permiten a los desarrolladores centrarse en lo que su aplicación o sistema necesita hacer al eliminar la complejidad de la infraestructura de back-end.

Y, un aprendizaje más de mi experiencia personal en la construcción de infraestructura sin servidor es:

  • Las canalizaciones de datos sin servidor realmente no necesitan ser solo en tiempo real. Uno puede construir tuberías sin servidor de procesamiento por lotes eficientes a través de los mecanismos de alerta CloudWatch de AWS, lo que le permite a uno monitorear las herramientas y generar alertas para que Lambda (AWS) lo compute.

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.

Dawny33
fuente
6

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:

Jiri Klouda
fuente