Presentación Introducción a Cloud Foundry
En este tutorial se va a desarrollar un ejemplo para aprender como correr, modificar e implementar una aplicación con una base de datos Cloudant en la nube. Se explorarán dos metodos diferentes para lograrlo, y una vez sean finalizadas, la aplicación será accesible desde internet.
Despues de teminar este pattern usted entenderá como:
- Usar el CLI de IBM Cloud
- Crear un servicio en IBM Cloud
- Usar un Toolchain para CI/CD
- IBM Cloud - Cloud Foundry: Ejecuta código en una plataforma como servicio (PaaS) en un ambiente stateless y altamente escalable.
- IBM Cloud - DevOps: Herramientas de integración para realizar despliegues continuos.
- Cloudant: Una base de datos No-SQL completamente manejada diseñada para aplicaciones web y mobile modernas que usan documentos como JSON.
- Cuenta activa de IBM Cloud
- IBM Cloud CLI: CLI para desplegar servicios y aplicaciones desde la terminal.
Este repositorio cubre los videos del 1 al 6 del siguiente listado
Descarga o clona el repositorio nodejs-cloudant
localmente.
En una terminal, puedes ejecutar:
$ git clone https://github.com/libardolara/nodejs-cloudant
- Inicia una terminal y posiciónate en la carpeta raíz del repositorio, allí debes encontrar los archivos
package.json
ymanifest.yml
- Inicia sesión en IBM Cloud según la región que desees usando CLI, para ello utiliza uno de los siguientes comandos y sigue las instrucciones:
$ ibmcloud login
Sigue las instrucciones interactivas del CLI
Si deseas cambiar la región puedes usar alguna de los siguientes comandos:
$ ibmcloud login -a https://api.ng.bluemix.net // US South
$ ibmcloud login -a https://api.us-east.bluemix.net // US East
$ ibmcloud login -a https://api.eu-gb.bluemix.net // UK
$ ibmcloud login -a https://api.eu-de.bluemix.net // Germany
$ ibmcloud login -a https://api.au-syd.bluemix.net // Sydney
Donde
-a
indica que se va a seleccionar una región de API específica.
- Observa el resultado del proceso anterior, tu organización y espacio están vacíos. Para configurar la organización y espacio que deseas usar en Cloud Foundry debes ejecutar el siguiente comando.
$ ibmcloud target -–cf
Selecciona usando los menús, la organización y espacio que deseas utilizar.
Si deseas cambiar de Organización y de espacio puedes usar el comando
$ ibmcloud target -o <organization name> -s <spacename>
- Crea el servicio Cloudant escogiendo
Use both legacy credentials and IAM
para la opción Available authentication method. - Copia el nombre del servicio.
- Para que desde cualquier aplicación en la organización y espacio de Cloud Foundry se pueda utilizar la base de datos debes crear un Alias para tu servicio de Cloudant. Para esto debes ejecutar el siguiente comando:
$ ibmcloud resource service-alias-create <nombre-del-alias> --instance-name <nombre-del-servicio>
<nombre-del-alias> es el nombre del alias a utilizar dentro de la aplicación de Cloud Foundry
<nombre-del-servicio> es el nombre de la base de datos creada al principio de este numeral.
- En la carpeta raíz del proyecto, edita el archivo manifest.yml según necesites.
- Es imporante cambiar el
name
por un nombre unico ya que un subdominio sera asignado con este nombre. - En el campo
service
cambia el nombre del servicio por el nombre del alias creado en el punto anterior. - Sube la aplicación a IBM Cloud, teniendo en cuenta dicho archivo, mediante:
$ ibmcloud app push
- Ahora puedes acceder mediante la interfaz Web, a la vista general de la nueva aplicación y notar como tiene las configuraciones que le especificaste en el
manifest
están aplicadas.
Para más información sobre las posibilidades de manejo del archivo manifest
Auto-scaling es una funcionalidad soportada para Cloud Foundry basada en el proyecto Open-source App-Autoscaler y permite ajustar automaticamente la cantidad de instancias de la aplicación que se encuentran desplegada a través de metricas operacionales o periodos de tiempo
- En la interfaz web de la vista general de tu aplicación, haz click en el menú de la izquierda Autoscaling
- En la nueva pestaña de policy, haz click en el botón Create Auto-scaling policy
- Define los minimos y maximos en numeros de instancias para tu aplicación. Por ejemplo minimo 1 y maximo 3.
- En las reglas de escalamiento (Scaling Rules) vamos a definir cuando y como escala la aplicación.
Existen tipos de metricas que puedes usar en estas reglas dinamicas de escalamiento:
Memory used, representa el valor absoluto de la memoria utilizada de su aplicación.
La unidad de unidad de utilización de memoria es "MB".
Memory utilization, es la memoria utilizada de la memoria total asignada a la aplicación en porcentaje.
Por ejemplo, si el uso de memoria de la aplicación es de 100 MB y la cuota de memoria es de 200 MB,
el valor de memory utlization es del 50%.
CPU , es el porcentaje de CPU utilizado por la aplicación. La unidad de la CPU es "%".
Response time representa el tiempo promedio que tarda la aplicación en responder a una
solicitud en un período de tiempo determinado. La unidad de tiempo es "ms" (milisegundos).
Throughput es el número total de solicitudes procesadas en un período de tiempo determinado.
La unidad de rendimiento es "rps" (solicitudes por segundo).
- Define una regla que agregue una instancia cuando el Memory utilization sea mayor o igual al 70% por 120 segundos con un periodo de espera entre escalamientos de 120 segundos
- Define otra regla que agregue una instancia cuando el Response time sea mayor o igual a 40ms por 120 segundos con un periodo de espera entre escalamientos de 120 segundos
- Añade una regla de horario (Schedule) en donde de lunes a viernes, en horario de oficina se incrementen el minimo de instancias a 2 y el maximo a 10.
- Finalmente haz click en el botón Save (Se encuentra en la parte superior de las politicas de auto-scaling)
- Abre la aplicación
- En la sección de Autoscaling, ve a la pestaña de Metrics, observa como se ha comportado la aplicación.
Parece que la regla de Response Time estaba mal dimensionada, por lo cual la vamos a corregir.
- Modifica la regla de Response Time para que incremente cuando el tiempo de respuesta sea mayor a 400ms. Recuerda siempre guardar los cambios a las reglas.
- Crea dos reglas para disminur el nuemero de instancias, usando el operador <(Menor que)
Para mayor información sobre la funcionalidad de autoscaling para Cloud Foundry puedes revisar la documentación
Antes de avanzar al siguiente punto de este taller, asegurate que la aplicación con la que venimos trabajando tenga solo una instancia.
Ahora vamos a desplegar la misma aplicación pero utilizando la herammienta de despliegue continuo e integración continua de IBM Cloud, llamadas Toolchains
- Ve al catalogo de IBM Cloud y busca el servicio para Cloud Foundry
- Haz click en el servicio Cloud Foundry.
- Haz click en el botón Create para una aplicación publica.
- Selecciona el runtime para Node.Js
- Configura tu aplicación según tus preferencias, teniendo en cuenta que su nombre debe ser único dentro de IBM Cloud, y hacer click en crear con el plan predeterminado.
Recuerda que la región y el espacio que seleccionados permiten la segmentación lógica de las aplicaciones, así que no los olvides.
- Ahora selecciona en el menú lateral visión general (o Overview) de tu aplicación, allí puedes observar y modificar la configuración y servicios que tiene tu aplicación.
- En la sección de Entrega Continua elige habilitar. En este caso buscamos usar un código fuente ya creado en GitHub usando una cadena de entrega continua.
- En la sección integraciones de herramientas selecciona la pestaña “Git Repos y Isue tracking”, y Clona el repositorio: https://github.com/libardolara/nodejs-cloudant
- En la pestaña de “Delivery Pipeline” crea la llave de seguridad para la seguridad de nuestro ToolChain
- Haz click en Create para crear el Toolchain
Recuerda como estaba configurado el archivo manifest del repositorio original, es muy importante que cambiemos el manifest dentro del Git que acabamos de clonar en IBM Cloud
- Dentro del ToolChain haz click en la etapa de Git
- Navega hacia abajo hasta encontrar el archivo
manifest.yml
, haz click enmanifest.yml
- Haz click en editar y copia y pega el contendio del manifest que tienes en tu computador para que queden iguales.
- Haz click en “Commit changes”
- Regresando a la cadena de entrega continua, selecciona Delivery Pipeline y encontraras que se ha ejecutado automáticamente, ya que se genero un nuevo commit en Git con los cambios al manifest.
Cloud Foundry soporta muchas tecnicas de despliegue, una muy util es el Blue Green Deployment
Sigue los siguientes pasos para configurar el Blue-Green Deployment en tu Toolchain
- Modifica en el Delivery Pipeline en el Stage “Deploy”. Para esto haz click en la rueda en la esquina del stage.
- Copia y pega el contendo del archivo blue-green.txt en el campo “Deploy Script” y guarde.
Ahora el Toolchain correrá usando la estrategia de deploy “Blue-Green deployment” la cual asegura que el servicio siempre estará corriendo aun cuando se hacen despliegues en caliente.
- ToolChain más información: Toolchain Getting Started
- Documentación de Cloud Foundry: https://docs.cloudfoundry.org/
- Documentación de IBM Cloud: https://cloud.ibm.com/docs