Sin servidor

El modelo de computación sin servidor es el servicio en la nube totalmente gestionado en el que el proveedor de la nube gestiona la infraestructura subyacente y asigna y anula automáticamente la asignación de recursos para ejecutar y escalar la demanda inmediata de la aplicación. Esto significa que los desarrolladores no tienen que preocuparse por cómo se aprovisiona la infraestructura informática subyacente. En su lugar, pueden centrarse en la implantación de funciones y funcionalidades de negocio en la aplicación. En resumen, los desarrolladores deben centrarse en escribir código para su lógica de aplicación, que se desplegará en funciones y se ejecutará en eventos disparados por la aplicación o el usuario. El modelo informático sin servidor se factura por uso y se factura en consecuencia, lo que lo convierte en una opción más rentable cuando se producen cambios inesperados en la carga de la aplicación con frecuencia.

La informática sin servidor es un desarrollo reciente en la computación en la nube, que ha ganado una popularidad significativa en los últimos años. Es popular para el concepto subyacente de ejecutar código sin gestionar ni aprovisionar servidores. Las funciones de Oracle Cloud Infrastructure (OCI) para la implantación de plataformas sin servidor se basan en el proyecto Fn de código abierto, que es de código abierto, nativo de contenedor y sin servidor, con la capacidad de ejecutarse en cualquier nube y local.

Ventajas

Serverless proporciona múltiples ventajas sobre otros servicios disponibles en la nube y tiene un perímetro debido a:

  • Reducción de la sobrecarga operativa: la computación sin servidor eliminó la sobrecarga de la gestión de infraestructura, servidores y redes, y mantiene a los equipos de desarrollo centrados en escribir código y desarrollar nuevas funcionalidades de negocio.
  • Tiempo de comercialización más rápido: la computación sin servidor permite un tiempo de comercialización más rápido, ya que las aplicaciones se pueden desplegar más rápido que otros servicios informáticos ofrecidos en la nube.
  • Mayor escalabilidad: la computación sin servidor se escala automáticamente en función de las demandas de carga de trabajo tanto para escalar verticalmente como para reducir verticalmente. Cualquier pico de carga se cuida de sí mismo.
  • Rentabilidad: la computación sin servidor es rentable porque solo necesita pagar por el tiempo que se ejecuta el código de la aplicación, lo que resulta en un ahorro de costos con respecto a los modelos informáticos tradicionales.
  • Fiabilidad mejorada: la computación sin servidor tiene mecanismos integrados de redundancia y failover, lo que mejora la fiabilidad de las aplicaciones.
  • Mayor flexibilidad: la informática sin servidor soporta varios lenguajes de programación populares para proporcionar flexibilidad a los desarrolladores. También soporta modelos de despliegue como contenedores y escritura de código desplegado en computación sin servidor.

Cómo Funciona

La informática sin servidor, a menudo conocida como función como servicio, permite a los desarrolladores centrarse en escribir código y desplegar código sin preocuparse por la infraestructura subyacente necesaria para ejecutar el código de aplicación. Utilice los siguientes pasos para ejecutar código en implantaciones sin servidor, como funciones de OCI.

  1. Escriba el código en el lenguaje de programación preferido y envíelo a una imagen de contenedor desde la función.
  2. Proporcione la definición de función en func.yaml, incluido el tiempo de ejecución máximo y el consumo de memoria.
  3. Transfiera la imagen de contenedor al registro de contenedor desde el que extraer antes de la ejecución.
  4. Cargue metadatos de función (restricciones de memoria y tiempo) en el servidor de Fn.
  5. Agregue la función a la lista de funciones de la consola.
  6. Disparador del comando de la CLI o disparador externo, como solicitud http, programa y servicio Event
  7. En la función de disparador, identifique la imagen de contenedor y extráigala del registro de contenedor.
  8. Ejecute la lógica definida en la imagen de contenedor en una instancia de una subred asociada a la aplicación a la que pertenece la función.
  9. Después de la ejecución o del período de inactividad, se elimina la imagen del contenedor y se liberan los recursos.

Plataformas

OCI soporta sin servidor como función como servicio, conocido como OCI Functions y OCI Container Instances.

  • Functions: Functions es una plataforma de funciones como servicio totalmente gestionada, multiinquilino, altamente escalable y a petición, incorporada en una infraestructura empresarial y basada en la Tecnología del Motor de Código Abierto Fn Project (Fn Project). Con las funciones puede escribir código en Java, Python, Node, Go, Ruby y C#.
  • Instancias de contenedor: Container Instances es un servicio de cálculo sin servidor que permite ejecutar contenedores de forma rápida y sencilla sin gestionar ningún servidor. Proporciona el mismo nivel de aislamiento que las máquinas virtuales.

Mejores prácticas

Serverless está diseñado para adaptarse a picos impredecibles en la demanda de recursos de carga de trabajo, pero debe diseñarse e implantarse con las mejores prácticas recomendadas para aprovechar una utilización eficiente.

  • Rápido y optimizado: debe implementarse para ejecutarse rápidamente, utilizar recursos de manera eficiente y evitar dependencias innecesarias.
  • Controlado por eventos: Serverless es el más adecuado para que la arquitectura basada en eventos inicie el procesamiento desde el disparador del evento para reducir costos y mejorar la escalabilidad.
  • Implementar con servicios gestionados: la integración de serverless con servicios gestionados reduce la complejidad y las necesidades de escalabilidad. Los servicios gestionados como la base de datos, el almacenamiento y la mensajería suelen interactuar con servicios sin servidor.
  • Supervisión: supervise el rendimiento y el costo de los entornos sin servidor para optimizar las funcionalidades lentas y costosas. Aprovecha la implantación de supervisión recomendada por OCI.
  • Seguridad: los datos estáticos y en tránsito se deben cifrar con acceso al control para minimizar el riesgo de seguridad y los ataques.

Casos de Uso

Serverless tiene varios casos de uso para necesidades funcionales y empresariales individuales. Los casos de uso comunes son:

  • Trabajos por lotes: proceso disparado según el programa y la frecuencia predefinidos.
  • Aplicación controlada por evento: proceso iniciado desde un evento externo, como un mensaje o una solicitud http.
  • Microservicios: implantación de servicios poco independientes.
  • Modelo de aprendizaje automático: despliegue modelos en puntos finales de API rentables y ampliables.

Traslado de la carga de trabajo a sin servidor

Migrar la carga de trabajo existente a un entorno sin servidor puede ayudarle a reducir costos, aumentar la resiliencia y mejorar la escalabilidad. La siguiente información describe los pasos para mover la carga de trabajo del entorno local al entorno sin servidor.

  1. Identifique la carga de trabajo que desea migrar a un entorno sin servidor e identifique el tamaño, la complejidad y las dependencias.
  2. Evalúe la plataforma sin servidor si una función es la más adecuada o si una instancia de contenedor es más adecuada.
  3. Determine las dependencias de servicios externos, como la base de datos, el almacenamiento y los mensajes para la carga de trabajo.
  4. Refactorice el código de la aplicación para optimizar el rendimiento y en contenedores, si es necesario.
  5. Pruebe la aplicación para detectar la funcionalidad esperada en el entorno sin servidor. Utilice el entorno de prueba recomendado o similar.
  6. Despliegue la aplicación en la plataforma sin servidor para su ejecución.
  7. Supervise las métricas de rendimiento de la aplicación y el uso de recursos.
  8. Optimice la aplicación, si es necesario, para mejorar el rendimiento en el futuro en función de las métricas capturadas de la supervisión.
  9. Automatice todo lo posible mediante el pipeline DevOps para la creación y el despliegue.

Desafíos y limitaciones

Serverless tiene ventajas, pero tenga en cuenta los siguientes elementos para el despliegue de cargas de trabajo.

  • Inicio en frío: los servidores sin servidor están diseñados para activarse en función del evento, por lo que no están disponibles para iniciar el procesamiento. A pesar de que requieren cantidades significativamente insignificantes de tiempo para comenzar, considere las demandas de latencia ultrabaja.
  • Timeout de ejecución: Serverless se ha creado para lograr una funcionalidad rápida y la liberación de recursos. Como resultado, hay un timeout asociado para que Serverless maneje escenarios imprevistos de bloqueo inactivo o bucles y terminaciones infinitos. Estos escenarios pueden provocar la pérdida de datos y escenarios de estado inestables.
  • Acceso limitado a la infraestructura: la informática sin servidor tiene acceso mínimo a la infraestructura en la que se está ejecutando, por lo que debe confiar en la gestión de estado externa o en los servicios de almacenamiento para que la información persista.
  • Complejidad: la arquitectura tradicional con flujos de trabajo y dependencias complejas puede aumentar el manejo de la complejidad sin servidor para la depuración y la resolución de problemas.

El futuro de Serverless

El futuro de los servidores sin servidor implica eliminar la necesidad de gestionar infraestructuras complejas y escalar manualmente los desafíos. También implica el manejo de sobrecargas inesperadas en la carga de la aplicación mientras se paga solo por la utilización. Hay varios marcos y soluciones que se están desarrollando y evolucionando sin servidor para minimizar el esfuerzo de los desarrolladores para manejar escenarios empresariales listos para usar. Revise el panorama de CNCF para obtener más herramientas, marcos y plataformas instalables sin servidor.