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.
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
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
- Distribución de relaciones públicas y contenido potenciado por SEO. Consiga amplificado hoy.
- PlatoData.Network Vertical Generativo Ai. Empodérate. Accede Aquí.
- PlatoAiStream. Inteligencia Web3. Conocimiento amplificado. Accede Aquí.
- PlatoESG. Carbón, tecnología limpia, Energía, Ambiente, Solar, Gestión de residuos. Accede Aquí.
- PlatoSalud. Inteligencia en Biotecnología y Ensayos Clínicos. Accede Aquí.
- Fuente: https://www.ibm.com/blog/how-to-move-from-ibm-cloud-functions-to-ibm-code-engine/