Spin es un marco para crear, implementar y ejecutar microservicios en la nube rápidos, seguros y componibles con WebAssembly.
Spin es un marco de código abierto para crear y ejecutar microservicios en la nube rápidos, seguros y componibles con WebAssembly. Su objetivo es ser la forma más sencilla de comenzar con los microservicios de WebAssembly y aprovecha los últimos desarrollos en el modelo de componentes de WebAssembly y el tiempo de ejecución de Wasmtime.
Spin ofrece una CLI sencilla que le ayuda a crear, distribuir y ejecutar aplicaciones, y en las siguientes secciones aprenderemos más sobre las aplicaciones de Spin y cómo empezar.
Consulte la página Instalar Spin de la documentación de Spin para obtener una guía detallada sobre cómo instalar y configurar Spin, pero en breve ejecute los siguientes comandos:
curl -fsSL https://developer.fermyon.com/downloads/install.sh | intento sudo mv ./spin /usr/local/bin/spin
Alternativamente, puedes compilar Spin desde la fuente.
Para comenzar a escribir aplicaciones, siga la guía de inicio rápido y luego siga las guías de lenguaje Rust, JavaScript, Python o Go y la guía sobre cómo escribir aplicaciones Spin.
A continuación se muestra un ejemplo del uso de la CLI spin
para crear una nueva aplicación de Spin. Para ejecutar el ejemplo, deberá instalar el destino wasm32-wasi
para Rust.
$ objetivo de oxidación agregar wasm32-wasi
Primero, ejecute el comando spin new
para crear una aplicación Spin a partir de una plantilla.
# Cree una nueva aplicación Spin llamada 'hello-rust' basada en la plantilla http de Rust, aceptando todos los valores predeterminados$ spin new --accept-defaults -t http-rust hello-rust
Al ejecutar el comando spin new
se creó un directorio hello-rust
con todos los archivos necesarios para su aplicación. Cambie al directorio hello-rust
y cree la aplicación con spin build
, luego ejecútela localmente con spin up
:
# Compile en Wasm ejecutando el comando `build`.$ spin build Ejecutando el comando de compilación para el componente hello-rust: cargo build --target wasm32-wasi --release Objetivo(s) [optimizado] de lanzamiento finalizado en 0,03 s Ejecutó con éxito el comando de compilación para los componentes de Spin.# Ejecute la aplicación localmente.$ spin up Componente de registro stdio en ".spin/logs/" Sirviendo http://127.0.0.1:3000 Rutas disponibles: hola-óxido: http://127.0.0.1:3000 (comodín)
¡Eso es todo! Ahora que la aplicación se está ejecutando, use su navegador o cURL en otro shell para probarla:
# Enviar una solicitud a la aplicación.$ curl -i 127.0.0.1:3000 HTTP/1.1 200 correcto foo: barra longitud del contenido: 14 fecha: jueves, 13 de abril de 2023 17:47:24 GMT Hola, Fermyon.
Puedes hacer que la aplicación haga más editando el archivo src/lib.rs
en el directorio hello-rust
usando tu editor o IDE favorito. Para obtener más información sobre cómo escribir aplicaciones de Spin, consulte Escritura de aplicaciones en la documentación de Spin. Para saber cómo publicar y distribuir su aplicación, consulte la guía de Publicación y Distribución en la documentación de Spin.
Para obtener más información sobre los comandos y subcomandos de CLI, consulte la Referencia de CLI.
La siguiente tabla resume la compatibilidad con funciones en cada uno de los SDK de idiomas.
Característica | ¿Se admite el SDK de Rust? | ¿Se admite el SDK de TypeScript? | ¿Se admite el SDK de Python? | ¿Se admite el SDK de Tiny Go? | ¿Se admite el SDK de C#? |
---|---|---|---|---|---|
Desencadenantes | |||||
HTTP | Apoyado | Apoyado | Apoyado | Apoyado | Apoyado |
Redis | Apoyado | Apoyado | Apoyado | Apoyado | No compatible |
API | |||||
HTTP saliente | Apoyado | Apoyado | Apoyado | Apoyado | Apoyado |
Variables de configuración | Apoyado | Apoyado | Apoyado | Apoyado | Apoyado |
Almacenamiento de valores clave | Apoyado | Apoyado | Apoyado | Apoyado | No compatible |
Almacenamiento SQLite | Apoyado | Apoyado | Apoyado | Apoyado | No compatible |
mysql | Apoyado | Apoyado | No compatible | Apoyado | No compatible |
PostgreSQL | Apoyado | Apoyado | No compatible | Apoyado | Apoyado |
Redis saliente | Apoyado | Apoyado | Apoyado | Apoyado | Apoyado |
IA sin servidor | Apoyado | Apoyado | Apoyado | Apoyado | No compatible |
Extensibilidad | |||||
Creación de desencadenadores personalizados | Apoyado | No compatible | No compatible | No compatible | No compatible |
¡Estamos encantados de que esté interesado en mejorar Spin! ¡Gracias!
Cada lunes a las 2:30 p. m. UTC y a las 9:00 p. m. UTC (alternando), nos reunimos para discutir problemas, hojas de ruta e ideas de Spin en nuestras reuniones del proyecto Spin. Suscríbase a este Google Calendar para conocer las fechas de las reuniones.
La agenda de la reunión del Proyecto Spin es un documento público. El documento contiene una agenda continua con la fecha y hora de cada reunión, el enlace de Zoom y los temas de discusión del día. También encontrará las actas de cada reunión y el enlace a la grabación. Si tiene algo que le gustaría demostrar o discutir en la reunión del proyecto, le recomendamos que lo agregue a la agenda.
Puede encontrar la guía de contribución aquí.
Fermyon también alberga un servidor Discord, donde discutimos cualquier cosa sobre Spin: servidor Discord.
Síguenos en Twitter: @spinframework
¡Puedes unirte a la comunidad de Spin en nuestro servidor de Discord, donde puedes hacer preguntas, obtener ayuda y mostrar las cosas interesantes que estás haciendo con Spin!