---
title: "¿Cómo utilizar el módulo Serverless Manager?"
canonical: "https://onesaitplatform-es.refined.site/space/OP/2255618096/%C2%BFC%C3%B3mo%20utilizar%20el%20m%C3%B3dulo%20Serverless%20Manager%3F"
format: markdown
---
> ℹ️ Disponible desde la versión 3.2.0

> Macro (toc)

# Introducción

En esta guía explicaremos cómo utilizar el módulo Serverless de plataforma, para poder desplegar funciones de manera similar a la funcionalidad de los [microservicios](https://onesaitplatform.atlassian.net/wiki/spaces/PT/pages/1701773313).

Recomendamos echar un vistazo a [esta guía](https://onesaitplatform.atlassian.net/wiki/spaces/OP/pages/2255388733) para comprender los distintos conceptos que implica esta funcionalidad.

# Aplicaciones

## Listado

Si nos dirigimos dentro del menú de Desarrollo a Mis aplicaciones Serverless/ Gestión de aplicaciones Serverless (dependiendo del role que tengamos), iremos a un listado donde se mostrarán todas nuestras aplicaciones creadas.

![image](media://313c6f07-47a6-4c68-9c42-4b148e7b9875)

![image](media://208cb489-5eeb-4c4a-a98f-6355d53f0e18)

Para cada función se mostraran datos en la tabla como: **propietario, repositorio de Git, nº de funciones en la aplicación…**

## Creación

Para crear una nueva aplicación, tendremos que darle dentro del listado al icono del ‘+'.  

A la hora de crear una nueva aplicaciones, se nos pedirán las credenciales de Git (**GitHub o GitLab**), y se nos preguntará si queremos crear un proyecto nuevo asociado a dicha aplicación, en caso negativo tendremos que especificar también la URL del repositorio Git existente.

![image](media://a95c1f36-7f00-4462-9ce0-9f626b8fdfa2)

 

Este repositorio Git creado o ya existente, será el repositorio de trabajo donde desarrollaremos las funciones de la aplicación.

***NOTA: próximamente se incorporará una funcionalidad que permitirá crear las aplicaciones con varios arquetipos a modo de ejemplo sobre los que empezar a desarrollar las funciones.***

## Modificación

En la pantalla de modificación de aplicación, accesible desde el listado a través del icono del lápiz, podremos únicamente modificar la información relativa al nombre y la configuración de Git.

![image](media://cdc2ca30-aad9-491b-ab15-481f9c81df03)

## Borrado

La aplicación podrá ser borrada tanto desde el listado como desde las páginas de edición y vista.

Lo único que hay que tener en cuenta, es que aunque se borre tanto la aplicación como sus funciones, **el** **repositorio de Git no se borrará.**


## Vista

Desde la página de vista podremos ver tanto la información general de la aplicación como el listado de funciones de la misma.

<u>Información general:</u>

Aquí encontraremos la información relativa al Git, así como l**as variables de entorno definidas en la aplicación.**

Estas variables de entorno serán accesibles desde todas y cada una de las funciones de la aplicación, no obstante podrán ser sobrescritas a nivel de función.

![image](media://e6ed578d-5ba2-4717-91b2-0cb21ffc7bd9)

<u>Listado de funciones:</u>

En la segunda pestaña de la vista, podremos ver un listado de funciones con datos relevantes como: **versión de la función, memoria asignada, nombre, ruta relativa dentro del proyecto Git, endpoints de invocación**…

![image](media://91a4263f-5dc4-4014-901f-2e8db5dc8f6a)

Además desde este listado, podremos **crear, editar, borrar y desplegar funciones.**


# Funciones

## Creación

Desde la vista de una aplicación podemos crear nuevas funciones.

A la hora de crear una función se nos pedirá únicamente el nombre de la función y el path relativo dentro del repositorio Git. **En el momento de la creación no es necesario que exista el código asociado a la función dentro del repositorio, pero sí tendrá que existir a la hora de desplegarla**.

![image](media://b452ba7c-0606-49bb-a63d-d8fff8168659)

<u>Estructura de código de una función</u>

La estructura de la función vendrá dada por el lenguaje de programación que se vaya a utilizar, podrá ser un proyecto maven, java, go, python… [Aquí](https://docs.oracle.com/en-us/iaas/Content/Functions/Tasks/languagessupportedbyfunctions.htm) hay una lista de los lenguajes soportados.

Sea cual sea el lenguaje, será necesario incluir en el directorio raíz de la función un fichero ‘**func.yaml**’, donde vendrá la información necesaria para la compilación, despliegue y ejecución de la función.

A continuación se muestra un ejemplo de estructura con una función *maven* y otra *python*.

![image](media://5030f8a6-6d17-4714-a858-3e6e9b80bf4a)

Para completar el fichero func.yaml, recomendamos ver [este documento](https://github.com/fnproject/docs/blob/master/fn/develop/func-file.md) dónde se explica cada propiedad.

<u>Func.yaml de una función java</u>


```
schema_version: 20180708
name: ontology
version: 0.0.26
runtime: java11
build_image: fnproject/fn-java-fdk-build:jdk11-1.0.124
run_image: fnproject/fn-java-fdk:jre11-1.0.124
cmd: com.minsait.onesait.OntologyCalculationFn::handleRequest
config:
  API_KEY: 26104876616f40908e3643ed1f6357d1
  GRAYLOG_HOST: log-centralizer
  GRAYLOG_PORT: "12201"
triggers:
- name: endpoint
  type: http
  source: /calculate

```


<u>Func.yaml de una función python</u>


```
schema_version: 20180708
name: pythonfn
version: 0.0.1
runtime: python
entrypoint: /python/bin/fdk /function/func.py handler
memory: 256
config:
  API_KEY: 26104876616f40908e3643ed1f6357d1
triggers:
- name: endpoint
  type: http
  source: /pythonfn

```


A continuación dejamos un zip con 3 ejemplos de funciones.


## Modificación

En la pantalla de modificación de una función podremos actualizar tanto el nombre de nuestra función como la ruta relativa dentro del repositorio.

## Borrado

Podremos borrar una función (pero no el código del repositorio) desde el listado de funciones de una aplicación o desde la pantalla de modificación.

## Despliegue

Cuando tengamos lista nuestra función, podremos desplegarla desde el icono del cohete, en el listado de funciones.

![image](media://90a06010-ec3e-46eb-9bca-ad34301cba4a)

Este podrá tardar hasta 1 minuto. Una vez finalizado el despliegue, se recargará la página y veremos como se incrementa la versión de la función desplegada (quedará reflejado en el func.yaml del repositorio con un commit).

![image](media://ea69aa98-ba51-48fc-93e5-3dfb5bf0ea5e)

![image](media://23d6ad61-b44b-4b54-939d-efd64ca3cb74)


## Invocación HTTP

Una vez desplegada la función, podremos invocarla via HTTP para ejecutarla/probarla. Existen dos tipos de endpoints invocables: auto-generados y triggers HTTP.

Los primeros los genera automáticamente el gestor de fn, y los segundos se definen desde el func.yaml

![image](media://6b348422-243f-4cf2-8741-2013a54b8492)

Los auto-generados siempre tienen la forma de /fn/invoke/{UUID} , y serán siempre peticiones POST.

Los triggers pueden ser invocados con el verbo GET o POST, en función de si nuestra función necesita recibir algún payload o no.

![image](media://f307a3e5-4291-44d0-a388-b4d9f73737c4)