Resumen
El modelo PaaS (Platform as a Service) de cloud computing es un modelo muy cómodo para el desarrollo. En PaaS el proveedor cloud ofrece un entorno o plataforma en el que el equipo de desarrollo puede crear y distribuir aplicaciones sin preocuparse de la infraestructura. El proveedor se encarga del mantenimiento y actualización de la plataforma. Además, ofrece servicios complementarios como bases de datos, monitorización, logging permitiendo centrarse en el desarrollo y despreocupándose de la actualización de versiones del entorno de ejecución, librerías, parches de seguridad y demás.
En este tutorial se realiza una introducción al modo PaaS y se ilustra su funcionamiento desplegando una aplicación sencilla en Vercel y Google App Engine.
-
Conocer las ventajas que propociona PaaS.
-
Distinguir los modelos IaaS y PaaS.
-
Aprender a desplegar aplicaciones en Vercel.
-
Utilizar las opciones de despliegue automático y roll back de Vercel.
-
Aprender a desplegar aplicaciones en Google App Engine.
1. Introducción
Dentro de los modelos de servicio de cloud computing, en PaaS (Plataform as a Service) el proveedor ofrece un entorno o plataforma en el que los usuarios pueden crear y distribuir aplicaciones sin preocuparse de la infraestructura. Es el proveedor el que proporciona el Sistema operativo, software, librerías, gestión de certificados SSL y demás, todo en su sin preocuparnos de las actualizaciones. Es el proveedor el que se encarga de su mantenimiento. De esta forma, el modo PaaS permite a los desarrolladores centrarse en el desarrollo. Es ideal para realizar pruebas y crear prototipos de nuevas aplicaciones
Además los proveedores PaaS suelen ofrecer gran cantidad de servicios que pueden ser consumidos desde las aplicaciones (bases de datos, herramientas de monitorización y logging, almacenamiento, despliegue continuo, y un largo etcétera).
Note
|
En el modo IaaS (Infraestructure as a Service) el proveedor proporciona almacenamiento, redes, máquinas virtuales y otros servicios virtuales. Es el usuario el encargado del matenenimiento del sistema operativo y todo el software, paquetes y librerías que se instalen sobre él |
2. Vercel
Vercel es un PaaS que permite el despliegue de aplicaciones estáticas (HTML, CSS, JavaScript) y aplicaciones de servidor (Node.js, Go, PHP, Python, Ruby, Java, Docker).
Actualmente Vercel ofrece plaforma para desarrollo en:
-
Node.js
-
Edge
-
Go
-
Python
-
Ruby
-
PHP
-
Bash
-
Deno
-
Rust
2.1. Registro en el plan gratuito de Vercel
Vercel ofrece varios planes comerciales y uno gratuito. El gratuito se llama Hobby
y es útil para pruebas de concepto y entre otras cosas ofrece despliegue desde GitHub con despliegue continuo y bases de datos PostgreSQL. Por tanto, es una opción muy atractiva para usarlo aquí.
Regístrate con una cuenta de email seleccionando Sign up
en la esquina superior derecha. Lo primero que debes seleccionar es el tipo de plan. Selecciona Hobby
, introduce tu numbre y pulsa Continue
.
A continuación, puedes utilizar una cuenta de GitHub o GitLab para registrarte o una dirección de email. Selecciona la opción que prefieras y completa el registro.
Por último, se te pedirá que confirmes tu número de teléfono. Introduce tu número de teléfono y pulsa Continue
. Recibirás un SMS con un código que deberás introducir en el campo Code
y pulsar Verify
.
3. Despliegue en Vercel
A continuación vamos a ver cómo desplegar una aplicación PHP desde un repositorio GitHub activando la opción de despliegue continuo. El despliegue continuo permitirá la actualización de la aplicación de forma desastitida tras una subida de cambios (a una rama) a un repositorio.
3.1. Creación de un fork de la aplicación
Desde tu cuenta de usuario GitHub, crea un fork del repositorio GitHub de la aplicación de ejemplo.
Se trata de una aplicación muy sencilla, con el único fin de servir como prueba de concepto de como el modelo PaaS facilita centrarse en el desarrollo, haciendo transparente al equipo de desarrollo la gestión de la plataforma subyacente (en este caso intérprete PHP, servidor web, librerías, almacenamiento y otros detalles de infraestructura).
+
.El descriptor vercel.json
En la pantalla inicial (projects) de Vercel seleccionar Import Git Repository | Continue with GitHub | Install
.
Instala Vercel en tu cuenta de GitHub y selecciona el repositorio diariostic
que acabas de hacer fork.
A continuación, selecciona el repositorio diariostic
y pulsa Import
. La siguiente pantalla muestra información sobre la configuración del proyecto. En este caso solo hay que establecer un nombre para la aplicación y pulsar Deploy
.
Note
|
El nombre elegido para la aplicación ha de ser único ya que es el que usará para componer el nombre DNS de la aplicación. |
Tras realizar el despliegue, se mostrará una preview de la aplicación. Pulsar sobre ella para ver la aplicación desplegada.
La opción de despliegue automático esta activa por defecto y permite actualizar la aplicación tras efectuar push
en la rama indicada del repositorio. En este caso se trata de la rama master
del repositorio.
3.2. Despliegue automático
Realizar un push
sobre el repositorio editando directamente el archivo src/secciones/portada.php
cambiando el título por Portada actualizada
.
<?php
$portada = [
"titulo" => "Portada actualizada", (1)
"autor" => "mtorres",
"resumen" => "Resumen de la portada",
];
?>
-
Cambiar el título
Añade un mensaje al commit (p.e. Cambio del título de la portada
) y realiza el commit.
Tras unos instantes la aplicación quedará actualizada de forma automática con el nuevo título de la portada.
3.3. Roll back
Es posible volver a estados anteriores de la aplicación. Por ejemplo, tras desplegar un cambio comprobamos que la aplicación no funciona correctamente y se necesita volver atrás mientras se resuelve el problema.
La pestaña Deployments
de la aplicación contiene una lista de toda la actividad llevada a cabo en la aplicación (despliegue de commits, operaciones de build, …).
Los despliegues se pueden reconocer porque tienen asociado el hash del commit que tomaron como base. En las opciones de los puntos suspensivos podemos encontrar la opción de Instant Rollback
. Pulsar sobre el que aparece en el primer commit.
Aparecerá un cuadro de mensaje pidiendo la confirmación para volver a la versión anterior. Pulsar Continue
.
Se creará una nueva versión, que aparecerá en el registro de actividad y la aplicación volverá a su estado original tras unos instantes.
3.4. Otras opciones de interés
En las pestañas de la aplicación se pueden encontrar otras opciones de interés como Analytics, Speed Insights, Logs y sobre todo Storage.
En esta última se pueden crear diferentes bases de datos como KV, Postgres o almacenamiento de ficheros Blob.
Note
|
Hay que tener en cuenta que el plan gratuito |
4. Despliegue en Google App Engine
Google App Engine es el PaaS de Google. Permite el desarrollo de aplicaciones en una plataforma totalmente gestionada por Google. Actualmente App Engine ofrece plaforma para desarrollo en:
-
Node.js
-
Ruby
-
Java
-
C#
-
PHP
-
Python
-
Go
Google App Engine permite el escalado de aplicaciones y distribución por todas las regiones sin tener que preocuparnos de la infraestructura. Se trata de un despligue sin configuración de servidor lo que supone gran agilidad.
-
En el Menú de navegación, seleccionar
App Engine
. Aparecerá una pantalla de bienvenida. PulsarCrear Aplicación
. -
Indicar la región de despliegue. Elegiremos
europe-west
y pulsaremos sobreCrear aplicación
. -
Seleccionar el lenguaje en el que está creada la aplicación para que Google App Engine prepare la plataforma de ejecución de la aplicación. En este caso elegiremos PHP.
Tras unos instantes se informa que la aplicación se ha creado con éxito.
Se nos ofrecen recursos para la documentación de App Engine en el lenguaje usado y ejemplos de código en GitHub. A la derecha tenemos los comandos que hay que ejecutar en Cloud Shell y que ejecutaremos en unos instantes. Por ahora, saldremos del asistente pulsando
LO HARÉ MAS ADELANTE
. -
Abrir Cloud Shell
-
Clonar el repositorio de la aplicación
$ git clone https://github.com/ualmtorres/diariostic.git
-
Crear el descriptor
app.yaml
en la carpeta del código de la aplicación$ cd diariostic $ wget https://gist.githubusercontent.com/ualmtorres/5f4c4f4502c9fc9f84c967a59ec4203e/raw/d6b56d37d72c4f3f15eeecfdab2f84f42551eac4/app.yaml
-
Ver la aplicación en modo de prueba
$ php -S localhost:8080 -t api
-
Abrir
Vista previa web
-
Inicializar en Cloud Shell el SDK de Google Cloud
$ gcloud init
Para poder usar el SDK de Google Cloud en Cloud Shell, Google Cloud nos advierte que necesita incluir nuestras credenciales en Cloud Shell. Pulsaremos
Autorizar
. -
Desplegar la aplicación
$ gcloud app deploy
Nos pedirá confirmación de despliegue sobre el descriptor (
app.yaml
) a usar, el origen (carpeta donde se colocó el repositorio) y el proyecto de destino. Tras confirmar, informará que se ha inicializado el Google Cloud SDK y comenzará el despliegue. La aplicación quedará almacenada en Google Cloud Storage.descriptor: [/home/mtorres/diariostic/app.yaml] source: [/home/mtorres/diariostic] target project: [cloud-computing-mtorres] target service: [default] target version: [20201101t062114] target url: [https://cloud-computing-mtorres.ew.r.appspot.com] Do you want to continue (Y/n)?
Unos instantes más tarde podremos ver la aplicación ejecutando
gcloud app browse
. Esto nos proporcionará una URL para acceder a la aplicación si no hay un navegador predeterminado y se obtendrá un resultado como el de la figura.
La aplicación estará disponible en el Panel de control
en el el bloque de App Engine
del Menú de navegación. Mostrará las aplicaciones desplegadas en App Engine con un resumen del tráfico, resumen de las instancias desplegadas, estado de facturación, carga actual, errores y otra información de interés. No se perderán datos, se guardará su estado y posteriormente se podrá volver a habilitar.
Important
|
Para evitar gastos inncesarios en el cupón de la cuenta de la asignatura, una vez hechas las pruebas inhabilitar la aplicación desde el menú |
4.1. Creación de la aplicación en App Engine en modo manual
En lugar de crear la aplicación desde el bloque App Engine del Menú de navegación es posible crear la aplicación directamente desde Cloud Shell con gcloud init
.
Previamente, se habrá descargado el repositorio de código de la aplicación y se habrá incluido el descriptor de despliegue (app.yaml
) en el directorio del código de la aplicación.
Para poder usar el SDK de Google Cloud en Cloud Shell, Google Cloud nos advierte que necesita incluir nuestras credenciales en Cloud Shell.
Como no se ha creado proyecto App Engine para la aplicación, nos pedirá si queremos crear proyecto nuevo o meter en existente. El valor introducido de tomará como ID del proyecto y no podrá ser cambiado posteriormente.
Después se desplegará con gcloud app deploy
. Habrá que indicar una región de despliegue. Seleccionar europe-west
.
Nos pedirá confirmación de despliegue sobre el descriptor (app.yaml
) a usar, el origen (carpeta donde se colocó el repositorio) y el proyecto de destino. Tras confirmar, comenzará el despliegue y lo almacenará en Google Cloud Storage.
Para poder construir la aplicación es necesario que el proyecto tengan configurados permisos de acceso a la API de Cloud Build. Se nos pedirá que demos permiso a través de un enlace de activación de Cloud Build API en el proyecto. Se llegará a una pantalla como la siguiente.
Pulsar sobre Habilitar
. A continuación, pedirá que se indique una cuenta donde vincular la facturación. Indicar la cuenta del cupón de la asignatura.
Una vez configurado el acceso a la API de Cloud Build, volver a Cloud Shell y volver a desplegar con gcloud app deploy
.
4.2. Despliegue continuo
El despliegue automático en App Engine no es tan directo como en Vercel. Para más información, consultar la documentación oficial.