Cargas de trabajo de función
Una función es un fragmento de código sin estado que realiza tareas cuando es invocada por solicitudes de HTTP. Con las funciones de IBM Code Engine, puedes ejecutar tu lógica de negocio de forma escalable y sin servidor. IBM Code Engine Las funciones proporcionan un entorno de ejecución optimizado para dar respuesta a escenarios que requieren baja latencia y una rápida escalabilidad horizontal. El código de tu función se puede escribir en un entorno de ejecución gestionado que incluya versiones específicas de Node.js o Python.
Un paquete de códigos es una colección de archivos que representa el código de función. Este paquete de código se inyecta en el contenedor de tiempo de ejecución. El paquete de código lo crea Code Engine y se almacena en el registro de contenedor o en línea con la función. Un paquete de códigos no es una imagen de contenedor estándar de Open Container Initiative (OCI).
Ciclo de vida de una instancia de función
Cuando se invoca (inicia) una función, la instancia de función correspondiente se inicializa con el contenedor de tiempo de ejecución y los parámetros de recurso configurados. El proceso de la primera inicialización se conoce como inicio en frío.
Para reducir la latencia de inicio en frío, Code Engine optimiza la invocación precalentando determinados tiempos de ejecución con configuraciones de CPU y memoria específicas. Las combinaciones precalentadas para funciones incluyen los tiempos de ejecución Node.js y Python, así como la combinación predeterminada de CPU y memoria para Funciones, que es 0.25 vCPU x 1 GB de memoria. Además, el sistema está diseñado para mejorar la reutilización de instancias de función que ya están inicializadas. Por lo tanto, una instancia de función se mantiene activa una vez finalizada la invocación para permitir invocaciones posteriores reutilizando la misma instancia y reutilizando el estado de la instancia cuando se completó la última invocación. No se garantiza la reutilización de una instancia de función.
¿Cuáles son las características clave del trabajo con funciones?
Revise los temas siguientes para obtener más información sobre cómo trabajar con IBM Code Engine Functions.
- Aislamiento
- Registro
- Tiempos de ejecución
- Funciones en ejecución
- Seguridad
- Simultaneidad de invocación y escalado de instancias de función
- Empaquetado del código fuente para una función
Aislamiento
Code Engine es un servicio regional multiarrendatario en el que los arrendatarios comparten la misma infraestructura de cálculo y red. En particular, la red y la infraestructura de cálculo son recursos compartidos y algunos componentes de gestión son comunes a todos los arrendatarios. Sin embargo, los arrendatarios y sus cargas de trabajo se aíslan entre sí utilizando proyectos Code Engine. Code Engine impide la comunicación entre proyectos, proporcionando aislamiento a las aplicaciones dentro de un entorno de varios arrendatarios, que puede incluir aplicaciones, trabajos por lotes y funciones. Además, hay controles de acceso que se realizan en un nivel de recurso para permitir que solo los usuarios autorizados realicen determinadas operaciones en recursos de proyecto, como por ejemplo funciones u otras cargas de trabajo de Code Engine.
Para obtener más información sobre el aislamiento de carga de trabajo, consulte Aislamiento de carga de trabajo deCode Engine.
Registro
El código de función puede escribir registros ' stdout y ' stderr ' que se capturan y reenvían a una instancia IBM Cloud Logs. IBM Cloud Logs es una Plataforma de instancias de registro que puede configurar para indexar
sus registros. Para obtener más información, consulte Visualización de registros.
Entornos de ejecución
Code Engine incluye Tiempos de ejecución gestionados que puede utilizar para sus funciones.
Los tiempos de ejecución gestionados incluyen las versiones Node.js y Python y combinaciones específicas de CPU y memoria. Estos tiempos de ejecución están optimizados para un inicio rápido. Estos tiempos de ejecución están precalentados, lo que evita la sobrecarga de extraer imágenes de contenedor e iniciar contenedores y procesos. El código se inyecta en un contenedor que ya está en ejecución.
Para obtener más información, consulte Tiempos de ejecución.
Ejecución de funciones
Tanto si tu código se encuentra en formato fuente en un archivo local o en un repositorio de Git, como si se trata de una imagen de contenedor alojada en un registro público o privado, Code Engine te ofrece una forma sencilla de ejecutar tu código como una función.
Puede crear e invocar la función en Code Engine de las maneras siguientes:
-
Ejecutar desde un paquete de código existente.
-
Ejecutar desde código fuente existente. Si está empezando con el código fuente que se encuentra en un repositorio Git o en la estación de trabajo local, puede apuntar a la ubicación del origen y Code Engine se encarga de crear la imagen.
Para obtener más información sobre cómo crear e invocar funciones, consulte Trabajar con funciones en Code Engine.
Seguridad
Code Engine Ofrece protección inmediata contra ataques DDoS para tu función. La protección contra ataques DDoS de Code Engine la proporciona Cloud Internet Services (CIS) sin ningún coste adicional para ti. DDoS La protección abarca los ataques a los protocolos de las capas 3 y 4 del Modelo de Interconexión de Sistemas (OSI) ( TCP/IP ), pero no los ataques a la capa 7 ( HTTP ). Véase « DDoS protection ».
Code Engine Además, ofrece una malla de servicios para utilizar su capa de red, lo que permite el tráfico recíproco mediante el protocolo Transport Layer Security ( TLS ) entre las funciones, garantizando así la seguridad de las comunicaciones entre servicios y entre usuarios y servicios.
Para obtener más información sobre la seguridad, consulte Code Engine y seguridad.
Simultaneidad de invocación y escalado de instancias de función
Cuando se invocan varias funciones al mismo tiempo, Code Engine inicializa nuevas instancias de función para cada invocación, pero al mismo tiempo, intenta maximizar la reutilización. Una instancia de función sólo maneja una invocación de
función en un único punto en el tiempo. Para Node.js, la función se puede configurar con concurrency > 0 para permitir que se manejen varias invocaciones en una sola instancia de función.
Empaquetado del código fuente para una función
Las funciones se pueden empaquetar de tres maneras diferentes.
- como un único archivo
- como varios archivos (con una estructura de carpetas y módulos dependientes)
- como imagen de contenedor
¿Cómo puedo empezar con las funciones?
Para desplegar una aplicación Code Engine simple con una imagen de ejemplo de hello-world, consulte la guía de aprendizaje Ejecución de IBM Code Engine Functions.
Para profundizar en el trabajo con funciones, consulte Trabajar con funciones en Code Engine.