Logotipo de Zephyrnet

Cómo pasar de IBM Cloud Functions a IBM Code Engine – Blog de IBM

Fecha:


Río que se mueve a través del campo

Al migrar desde IBM Cloud Functions, IBM Cloud Code Engine es uno de los posibles objetivos de implementación. Code Engine ofrece aplicaciones, trabajos y (funciones recientes) entre las que puede (o necesita) elegir. En esta publicación, proporcionamos algunos puntos de discusión y compartimos consejos y trucos sobre cómo trabajar con las funciones de Code Engine.

Motor de código de IBM Cloud es una plataforma sin servidor totalmente administrada para (no solo) ejecutar sus cargas de trabajo en contenedores. Tiene evolucionó mucho desde marzo de 2021, cuando publiqué la entrada del blog “Migración del código de funciones de nube a Code Engine.” En 2021, solo había aplicaciones y trabajos de Code Engine. A principios de este año, Code Engine agregó soporte para funciones (Funciones como servicio o FaaS).

En esta publicación, voy a dar una nueva mirada a ese tema y discutiré las opciones sobre cómo pasar de Funciones de IBM Cloud al motor de código.

Utilice variables de entorno de Code Engine.

Aplicaciones, trabajos y funciones

Características de IBM Cloud Code Engine tres formas diferentes de ejecutar su lógica empresarial:

  • An applicación Es un proceso que se ejecuta continuamente y responde a solicitudes HTTP.
  • A trabajo se ejecuta para manejar una tarea y luego finaliza.
  • A función es un fragmento de código sin estado que se invoca mediante una solicitud HTTP y, después de producir una respuesta, finaliza. Además, los trabajos suelen durar mucho más que las funciones (“procesamiento por lotes”).

Hay muchos más Características que ayudan a distinguir entre aplicaciones y trabajos. y funciones. En resumen, las aplicaciones son una buena opción si desea crear una API REST o implementar una aplicación web con funcionalidad backend/frontend. Tienes control total sobre el servidor HTTP y sus recursos.

Los trabajos, por otro lado, son procesos de larga duración que no requieren ninguna interacción del usuario. Podrían ser actividades por lotes típicas, procesamiento analítico o incluso entrenamiento de modelos de IA.

Por último, las funciones pueden reaccionar a las solicitudes HTTP entrantes muy rápidamente. Sirven bien para casos de uso de baja latencia, como integraciones de chatbot o webhooks. A diferencia de las aplicaciones, usted no define ni puede configurar el servidor HTTP.

Al venir de Cloud Functions, es posible que hayas experimentado que hay muchos casos de uso compatibles con Cloud Functions. De igual forma una función puede tener diferentes atributos que son importantes según el caso:

  • El tiempo de invocación o inicio (arranque en frío) puede ser importante, lo que lleva a un tiempo de respuesta corto en general.
  • En otros casos, el costo (facturación) podría haber sido el factor competitivo.
  • La simplicidad y agilidad que provoca una función como unidad de desarrollo y despliegue en un proceso DevSecOps lleva a algunos proyectos a optar por funciones.

A menudo, es una combinación de lo anterior lo que lleva a que las personas prefieran las funciones (FaaS) a otras opciones de tiempo de ejecución o de computación.

De las funciones en la nube al motor de código

Al pasar de Cloud Functions a Code Engine, se deben tener en cuenta las siguientes características de la función al decidir sobre una aplicación, un trabajo o una función de Code Engine:

  • ¿Se necesita un punto final http para invocar el código?
  • ¿El procesamiento se desencadena por un evento?
  • ¿Qué lenguaje de programación se utiliza para la función existente y qué tamaño tienen las bibliotecas necesarias?
  • ¿Cuánto tiempo lleva el procesamiento, qué recursos informáticos se necesitan? ¿Se desea el procesamiento paralelo?

La guía Migración de funciones de IBM Cloud a Code Engine tiene una descripción detallada de las características de la aplicación, el trabajo y la función de Code Engine. Le ayudan a seleccionar la mejor entidad para su carga de trabajo existente. Además, la actual Limitaciones de la función del motor de código y el general límites y cuotas para Code Engine hay que tenerlo en cuenta. La sección Preguntas frecuentes sobre la migración de acciones de IBM Cloud Functions a Code Engine Functions podría ayudarle a decidir cómo migrar.

Consejos y trucos para las funciones de Code Engine

Los siguientes consejos y trucos se basan en mis experiencias al mover código existente de Cloud Functions a funciones de Code Engine. Ayudan a reducir los ciclos de implementación utilizando primero pruebas locales para implementar una funcionalidad similar al combinar funciones y trabajos de Code Engine y diseñar API integradas mediante el uso de variables del sistema Code Engine.

Pruebas locales de funciones.

Las aplicaciones son aplicaciones web normales, los trabajos son como scripts y ambos se pueden probar localmente de varias maneras. Debido a que las funciones son fragmentos de código, se necesita algún contenedor para convertirlas en programas. El siguiente enfoque me ha resultado muy útil hasta ahora.

Con el código de función en un subdirectorio "func", utilizo el código contenedor de Python o Node.js que se muestra a continuación y lo coloco en el directorio principal. Allí también mantengo archivos con configuraciones de prueba como objetos JSON, similar a lo que pasa Code Engine a la función en la invocación. Para realizar pruebas, ejecuto el contenedor junto con el archivo de configuración como parámetro. Los contenedores para Python y Node.js se muestran a continuación:

# syntax: python wrapper.py params.json

# import the Code Engine function: func/__main__.py
from func.__main__ import main
import sys, json

if __name__ == "__main__":
    # open file, read JSON config
    with open(str(sys.argv[1])) as confFile:
        params=json.load(confFile)
    # invoke the CE function and print the result
    print(main(params))
// syntax: node wrapper.js params.json

// require the Code Engine function: func/main.js
var func=require('./func/main.js')

// read the file with function parameters
const fs = require("fs");
const data = fs.readFileSync(process.argv[2]);

// invoke the CE function and log the result
console.log(func.main(JSON.parse(data)));

Funciones similares al trabajo

A veces, es posible que necesite el punto final HTTP de una función y posiblemente un tiempo de ejecución más largo de un trabajo. En ese caso, cree tanto una función como un trabajo. Luego, utilice el API de Code Engine para crear una ejecución de trabajo desde dentro de la función. En este enfoque híbrido, se puede llamar a la función a través de su punto final HTTP y finaliza después de iniciar la ejecución del trabajo. Un trabajo podría durar hasta 24 horas y beneficiarse de la capacidades de procesamiento de trabajos paralelos en Code Engine. Puede encontrar una implementación de muestra de este patrón en el Ejemplos de código del motor de código.

Variables de entorno y diseño de API.

Para diseñar su API y espacio de nombres de funciones, puede utilizar Variables de entorno inyectadas por Code Engine como __ce_path y __ce_method. El primero contiene el componente de ruta de la URL solicitada como "/objeto", y el segundo tiene el método HTTP como GET o POST. Al activar los valores proporcionados para estas variables, puede ofrecer múltiples funciones API desde la misma función de Code Engine. El beneficio es una URL base única.

Dependiendo de su proyecto y administración de código, es posible que incluso desee combinar este enfoque con la separación de cada implementación de función API en su propio archivo, similar al enfoque contenedor que se muestra arriba.

Conclusiones

Funciones de IBM Cloud tienen muchos casos de uso y propiedades, por lo que no existe una asignación directa a una entidad de Code Engine específica (es decir, aplicación, trabajo o función). Al comparar el atributo de una función existente (Cloud Functions) con los de las entidades de Code Engine, puede elegir la que mejor se ajuste. En muchos casos, una función de Code Engine puede ser una buena opción. Para estos casos, compartimos consejos y trucos que puede utilizar para su proyecto de funciones como servicio con Code Engine.

Utilice la siguiente documentación de IBM Cloud Code Engine para empezar:

Si tiene comentarios, sugerencias o preguntas sobre esta publicación, comuníquese conmigo en Twitter (@datos_henrik), mastodonte (@data_henrik@mastodon.social) o Etiqueta LinkedIn.


Más de la nube




Sensores, señales y sinergia: mejorando la exploración de datos de Downer con IBM

3 min leerEn el ámbito del transporte urbano, la precisión es fundamental. Downer, un proveedor líder de servicios integrados en Australia y Nueva Zelanda, se considera un guardián de la elaborada matriz de transporte y busca continuamente mejorar su eficiencia operativa. Con más de 200 trenes y multitud de sensores, Downer ha acumulado una gran cantidad de datos. Si bien Downer descubre periódicamente información útil a partir de sus datos, su asociación con IBM® Client Engineering tenía como objetivo explorar el potencial adicional de este vasto conjunto de datos,...




Mejores prácticas para una implementación segura y compatible de aplicaciones bancarias en la nube híbrida en IBM Cloud y Satellite

10 min leerLos clientes de servicios financieros buscan cada vez más modernizar sus aplicaciones. Esto incluye la modernización del desarrollo y mantenimiento del código (ayudando con habilidades escasas y permitiendo la innovación y nuevas tecnologías requeridas por los usuarios finales), así como la mejora del despliegue y las operaciones, utilizando técnicas ágiles y DevSecOps. Como parte de su viaje de modernización, los clientes quieren tener flexibilidad para determinar cuál es la mejor ubicación de implementación "adecuada para su propósito" para sus aplicaciones. Esto puede ser en cualquiera de los entornos que Hybrid...




Sube de nivel tus aplicaciones Kafka con esquemas

4 min leerApache Kafka es una conocida plataforma de procesamiento de transmisiones y almacenamiento de eventos de código abierto y ha crecido hasta convertirse en el estándar de facto para la transmisión de datos. En este artículo, el desarrollador Michael Burgess proporciona información sobre el concepto de esquemas y gestión de esquemas como una forma de agregar valor a sus aplicaciones basadas en eventos en el servicio Kafka totalmente administrado, IBM Event Streams en IBM Cloud®. ¿Qué es un esquema? Un esquema describe la estructura de los datos. Por ejemplo: una clase Java simple…




SSD frente a NVMe: ¿Cuál es la diferencia?

7 min leerLos recientes avances tecnológicos en el almacenamiento de datos han impulsado a las empresas y a los consumidores a alejarse de las unidades de disco duro (HDD) tradicionales y adoptar una tecnología de unidades de estado sólido (SSD) más rápida y de menor latencia. En esta publicación, veremos esta nueva tecnología, así como el protocolo más rápido y popular disponible para conectarla a la placa base de una computadora: la memoria no volátil expresa (NVMe). Si bien los términos SSD y NVMe se usan a menudo para describir dos tipos diferentes de unidades, en realidad son almacenamiento de datos diferentes...

Boletines informativos de IBM

Obtenga nuestros boletines y actualizaciones de temas que brindan el liderazgo intelectual más reciente y conocimientos sobre tendencias emergentes.

Subscribirme Ahora

Más boletines

punto_img

Información más reciente

punto_img