Serverless: qué es y por qué es diferente
Publicado: 2019-01-11¿Qué es la informática sin servidor?
Es posible que haya visto toda la exageración reciente en torno a la tecnología sin servidor en la comunidad de desarrolladores. Entonces, ¿qué es esto exactamente? Quiero decir que el código aún debe ejecutarse en algún lugar, ¿cómo es que realmente no tiene servidor?
Todo lo que significa es que el desarrollador y el equipo de operaciones no tienen que supervisar, administrar o incluso preocuparse por los servidores reales. Esto puede sonar muy similar a la computación en la nube, pero hay algunas diferencias clave. Y estas diferencias radican principalmente en lo que no sabes frente a otros modelos.
Sistema operativo desconocido!?!?
Una de las formas sencillas de diferenciar la tecnología sin servidor de alguna forma de organización en la nube elegante como Kubernetes es que nadie en su empresa sabe qué sistema operativo está usando el servidor que ejecuta su código. Puede creer que, dado que está ejecutando algún código .Net, es Windows, o que debido a que es Ruby está en Linux, pero al final, no está seguro y no tiene consecuencias para su desarrollo.
Puede escribir código utilizando un lenguaje compatible con el proveedor sin servidor y, siempre que se mantenga dentro de los límites de la caja que proporcionan, está bien sin ningún conocimiento de qué sistema operativo, versiones, etc. que potencia eso.
Y, de hecho, uno de los puntos fuertes de serverless es que, en un momento dado, su aplicación puede estar ejecutándose en múltiples sistemas operativos diferentes. Todo esto es administrado y operado por su proveedor para usted.
¿Cuántos servidores necesita para manejar su tráfico?
Si puede responder a esta pregunta con algún tipo de conjetura sobre los servidores X o si necesitamos CPU Y, entonces no está haciendo un desarrollo sin servidor.
El contrato sin servidor implica que la cantidad y la fuerza de cualquier computación que se necesite para impulsar su aplicación no serán de ninguna preocupación para el desarrollador. No significa que no se le esté cobrando por ello, solo que no es algo que usted o su equipo administrarán o que les importará. Los buenos proveedores manejan automáticamente la gestión de su servicio para que mantenga una alta disponibilidad y capacidad de respuesta.
Modelo de facturación basado en computación, almacenamiento y red. No servidores, CPU y discos duros
Al ver que no está al tanto de qué hardware real se ejecuta debajo de su aplicación, viene con una nueva forma de facturar. Los proveedores de plataformas en la nube sin servidor facturan por el uso medido de computación, almacenamiento y transferencia de red. Esto reemplaza otros modelos de facturación que cobran por CPU, unidades de disco y conexiones de red. En un mundo sin servidor, ellos tienen el control de esa pieza y solo se le factura por el uso exacto de la misma para su aplicación.
Esto acerca la computación mucho más al modelo de la electricidad. Su compañía eléctrica le factura por KWH, que es el uso medido de electricidad. El poder en sí es creado por carbón, nuclear, gas, lo que sea. Pero la facturación se mide de la misma manera sin importar la fuente.
inactivo en cero
El otro cambio importante en serverless es que cuando su aplicación no se usa, se escala automáticamente a cero. Dado que no se le factura por la CPU, sino por el uso de la computación, entonces, cuando no la está usando, su factura es cero.
El proveedor siempre está listo para medir el cálculo según sea necesario, pero no es necesario que pague por un servidor para que esté listo cuando se use. Es simplemente un cálculo de pagar por el segundo de cómputo realmente consumido cuando su aplicación se está ejecutando.
Puedes pensar en ello un poco como una tienda de comestibles. Es su trabajo mantener la tienda abastecida de leche para que cuando usted, como cliente, tenga sed, pueda entrar, comprar la leche para beber y luego irse. No pagas antes de necesitar la leche, y no pagas si tienen leche que se echa a perder porque nadie la compró. Todo el negocio de la tienda de comestibles es asegurarse de que tengan un inventario disponible y tener cuidado de no excederse y desperdiciar leche en mal estado. Todo lo que sabe es que tienen lo que quiere cuando lo quiere, y el resto se simplifica lejos de su preocupación.
Compensaciones para serverless
Así que toda esta simplificación suena bastante bien. ¿Por qué una persona no querría todas estas cosas: facturación más simple, menos responsabilidad operativa, fácil escalado? Bueno, como con todas las cosas, esto viene con algunas compensaciones. Así que hablemos de ellos.
Reemplace el bloqueo del sistema operativo con el bloqueo del proveedor de la nube
En otros modelos, tenía varias compensaciones y limitaciones debido a los sistemas operativos o servidores en los que se ejecutaba su código. Ahora que los marcos sin servidor descargan esta responsabilidad al proveedor, existen nuevas restricciones con las que debe vivir.
Hasta el momento, no existe un conjunto acordado de estándares que definan las restricciones y garantías entre los proveedores de servicios. Eso significa que es similar a lo difícil que sería en el pasado mover aplicaciones de Windows a Linux, por ejemplo. Ahora se enfrentará a eso cuando intente mover sus aplicaciones sin servidor de la nube de Google a la de Amazon.
Estas empresas aún no proporcionan ningún marco común que permita a los clientes mover fácilmente cargas de trabajo sin servidor entre ellas. Y, francamente, no les conviene hacerlo en este momento, ya que preferirían encerrarte en sus ofertas tanto como sea posible. Por lo tanto, debe tener muy en cuenta que las primeras ofertas sin servidor tienen muchos puntos conflictivos de propiedad que dificultan que se salga de ellas.
Menos visibilidad sobre el rendimiento y los costos
Las herramientas para profundizar en el rendimiento del código están muy bien establecidas para los modelos de programación anteriores. Cosas como averiguar cuánta CPU o RAM está usando un programa dado son comunes.
Con el modelo sin servidor, las optimizaciones cambian según la cantidad de cómputo, red y llamadas API que usa su código. Para ser justos, estos están relacionados con la CPU y la RAM del pasado. Pero a medida que se abstraen aún más, impedirá que estas herramientas sean tan útiles.
Estoy completamente convencido de que aparecerán nuevas herramientas de código abierto para la depuración y la optimización del rendimiento al servicio de este mercado. Pero requerirán una mejor comprensión de cómo los proveedores están implementando la arquitectura sin servidor. Podría significar que los proveedores de la nube son los únicos capaces de brindar una visión lo suficientemente profunda para que estas herramientas sean efectivas. Y no les interesa ayudarlo a usar menos recursos, ya que facturan esos recursos, ya sea que los haya usado de manera eficiente o no.
Las aplicaciones de ejecución prolongada no son el punto óptimo
Para obtener toda la flexibilidad que brinda serverless, generalmente limita al desarrollador de aplicaciones a limitaciones basadas en el tiempo en estas funciones como servicio. Esto significa que se optimiza para permitir que su código responda a una solicitud web en la que tiene un máximo de 1 minuto para responder.
Estos máximos de tiempo fijos ayudan al proveedor a poder cumplir con las promesas sin servidor que le ha hecho. Esperan poder mover la carga de trabajo entre las CPU físicas reales y las ubicaciones según sea necesario para proporcionar a los equipos de desarrollo un servicio que escala automáticamente y repara las fallas del equipo. Las cargas de trabajo de ejecución prolongada rompen esta suposición. De hecho, esto suele figurar como uno de los requisitos de su oferta. Donde el código debe completarse dentro de X tiempo o ser cancelado.
Para cosas como solicitudes web o API de aplicaciones móviles, estas limitaciones no son un gran problema. Pero para otros casos de uso, como la codificación de video, la operación de servidores de juegos en tiempo real o las soluciones de videoconferencia, estas limitaciones no son factibles. En muchos casos, puede operar alrededor de estos límites mediante el uso creativo de los recursos sin servidor, pero por lo general está calzando una solución que le costará más y operará mucho más lentamente. Los proveedores de la nube estarán encantados de ayudarle a hacer esto, ya que más uso es más dinero para ellos. Así que asegúrese de usar serverless para aplicaciones web y sistemas donde sea más adecuado.