Desplegar un servicio backend HTTP en C4c7us

Introducción

En este breve post, te ofreceremos una guía práctica para desplegar de manera rápida y sencilla un proyecto backend HTTP utilizando nuestra plataforma c4c7us.

A modo de ilustración, tomaremos como ejemplo un proyecto escrito en el lenguaje Go, el cual se encuentra funcionando localmente en el puerto 8080. (El código fuente del proyecto que utilizaremos como ejemplo está disponible en el siguiente repositorio https://github.com/c4c7us-cloud/backend-demo)

image1

Requisitos

Como requisitos de nuestro proyecto este debe contar con al menos un endpoint que nos sirva de health check indicándonos que la aplicación se levanto correctamente, este nos debe responder con un status code 200, para el ejemplo particular el endpoint de health check se encontrara en /api/demo/health-check ; Cuando lo consultamos de forma local nos responde lo siguiente:

image2

Adicional tendremos otro endpoint (/api/demo/hello-world) como demostración de cualquier otra ruta que se puede configurar dentro de nuestro código.

image3

Si deseamos exponer el servicio anterior utilizando nuestra plataforma, debemos realizar el inicio de sesión correspondiente y asegurarnos de haber realizado las configuraciones previas necesarias; estas configuraciones incluyen la configuración de las claves de API de nuestro proveedor de servicios en la nube, haber creado un dominio y un entorno, así como haber registrado las claves de Git en nuestro administrador de repositorios en línea, ya sea GitHub, GitLab o Bitbucket.

Configuración

Una vez que hayamos cumplido con las configuraciones descritas anteriormente, desplegar nuestro servicio es un proceso sencillo y amigable. Primero, nos dirigimos a la sección de microservicios en el menú principal. Luego, seleccionamos create y procedemos a registrar los parámetros del servicio que crearemos, utilizando como base nuestro proyecto. A continuación, se describen los parámetros a tener en cuenta:

  • Nombre con el que vamos a distinguir el servicio dentro c4c7us.
  • El repositorio donde se encuentra alojado nuestro código en internet en nuestro caso como el repositorio se esta en Github luce de la siguiente manera:

image4

Tipo de servicio, en nuestro caso sera un service, pero existen diferentes opciones como lo son workers, schedule tasks o lambdas. Build perteneciente al servicio en cuestión (lenguaje/framework y versión). Tipo de acceso que va a tener el servicio ya sea publico o privado, si escogemos privado el servicio solo es accesible por otros servicios que se encuentren desplegados en la misma red vpc. El prefix path bajo el cual van a estar los endpoint de nuestra aplicación. La ruta del health check (tema tratado en un punto anterior). Una vez configurado debe lucir similar a la siguiente imagen, entonces pulsamos el botón “Save”.

image5

Verificamos que se creo exitosamente.

Es crucial configurar algunas variables antes de intentar realizar cualquier despliegue de un nuevo servicio en cualquier ambiente. Por lo tanto, ingresamos a la sección de settings del ambiente seleccionado. En esta sección, encontraremos la posibilidad de configurar las variables necesarias para que el despliegue sea exitoso.

Una vez que estemos en la sección de settings, podemos configurar los parámetros con los cuales se ejecutará el servicio. Estos parámetros incluyen:

  • Cpu units: Aquí podemos asignar la cantidad de unidades de CPU que se destinarán al servicio. Esto puede ser útil para ajustar el rendimiento en función de la intensidad de procesamiento de nuestra aplicación.
  • Memory: Aquí podemos establecer la cantidad de memoria asignada al servicio. Dependiendo de las necesidades de nuestra aplicación, podemos aumentar o disminuir la cantidad de memoria asignada para garantizar un rendimiento óptimo.
  • Minimum and maximum of instances: Podemos especificar la cantidad mínima y máxima de instancias del servicio que deseamos que se ejecuten simultáneamente. Esto nos permite controlar la escalabilidad horizontal del servicio y adaptarlo a la carga esperada.
  • Health check grace period in seconds: Este parámetro que se configura en numero de segundos para determinar cual es el tiempo máximo de espera para obtener una respuesta del endpoint que se configura como health check.
  • CPU percentage to scale: El porcentaje de uso de CPU lo configuramos para controlar el rendimiento de las instancias. Si se alcanza ese porcentaje, y la configuración lo permite, se inicia una nueva instancia para distribuir la carga de trabajo y evitar la sobrecarga.
  • Memory percentage to scale: Este parámetro lo configuramos para controlar el rendimiento de las instancias. Si se alcanza ese porcentaje, y la configuración lo permite, se inicia una nueva instancia.
  • Spot instance percentage: Este parametro lo configuramos para determinar el porcentaje de las instancias del servicio que van seran de tipo spot, recordando que una instancia de tipo spot son instancias mas económicas pero a su vez mas inestables.

Recuerda que es importante ajustar estos parámetros de manera adecuada para lograr un equilibrio óptimo entre el rendimiento y los recursos asignados.

Después de seleccionar los valores deseados los guardamos, adicionalmente si nuestro proyecto requiere variables de entorno para su funcionamiento o configuración, estas las podemos agregar en la pestaña llamada environment variables.

image6

Despliegue

Una vez que hayamos designado los recursos y configurado las variables de entorno, podemos proceder con el despliegue del proyecto en el ambiente deseado. Para ello, nos dirigimos a la opción de deploys en el menú, y al seleccionar create, ingresamos el nombre de la etiqueta (tag), rama o commit que queremos desplegar del código fuente. En el caso de nuestro ejemplo, utilizaremos la rama main/master.

Al ingresar el nombre de la etiqueta o rama, la plataforma iniciará el proceso de despliegue utilizando el código fuente correspondiente. Esto implica la compilación, construcción y ejecución del proyecto utilizando los recursos y variables de entorno previamente configurados.

Al presionar el botón create se inicIara el lanzamiento del proyecto y solo queda aguardar que el mismo se realice de forma exitosa, de igual manera podemos ver la etapa y el estado en el que se encuentra el deploy, que de ser exitoso lucirá como la siguiente imagen.

image7

Durante el proceso de despliegue, podemos visualizar en detalle las instancias que se crean para alojar el servicio. La cantidad de instancias se determina por el valor asignado a la variable de configuración minimum of instances. En la imagen anterior, se puede ver el estado de la instancia, su identificación (ID) y a qué despliegue pertenece.

Verificación

Finalmente con nuestro servicio desplegado podemos acceder a los endpoints que este expone mediante de internet, esto apuntando al dominio que tenga asociado el ambiente donde se desplegó el servicio, y respetando el prefix path que se configuro al momento de la creación, como ejemplo de ellos a continuación se muestran los resultados de consultarlos endpoints que teníamos de manera local, una vez finalizado el despliegue.

image8

Resumen

En resumen, a lo largo de este post logramos realizar el despliegue de un servicio backend HTTP que inicialmente se encontraba corriendo de forma local. Mediante nuestra plataforma c4c7us, logramos exponer este servicio a internet. Los pasos clave que seguimos fueron:

  1. Creación y configuración del nuevo microservicio: Definimos el tipo de microservicio, el lenguaje de programación utilizado y el repositorio donde se encuentra alojado.
  2. Configuración de variables de instancia: Establecimos las variables que describen el comportamiento de las instancias donde se ejecutará el servicio. Esto incluye aspectos como el número mínimo de instancias requeridas.
  3. Despliegue del servicio en un entorno específico: Lanzamos el despliegue del servicio en el entorno deseado. Esto resultó en que nuestro servicio quedara expuesto y accesible para el público que deseamos alcanzar.

En resumen, logramos migrar exitosamente nuestro servicio backend local a un entorno en línea, permitiendo que esté disponible públicamente usando nuestra plataforma c4c7us.

We use cookies to enhance your experience on our site and tailor content to your needs. By clicking "Accept," you agree. Read our Cookie Policy and Privacy and Data Policy, and our Terms and conditions for more information.