<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Jhon Anthony Alvarez Borja</title>
    <description>The latest articles on Forem by Jhon Anthony Alvarez Borja (@jhonalvarez).</description>
    <link>https://forem.com/jhonalvarez</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3404406%2F2963bb8a-f254-4842-a3ad-42fafb927716.jpg</url>
      <title>Forem: Jhon Anthony Alvarez Borja</title>
      <link>https://forem.com/jhonalvarez</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/jhonalvarez"/>
    <language>en</language>
    <item>
      <title>Crear y configurar un proyecto usando Google AppEngine Standard (Español)</title>
      <dc:creator>Jhon Anthony Alvarez Borja</dc:creator>
      <pubDate>Sun, 03 Aug 2025 14:35:57 +0000</pubDate>
      <link>https://forem.com/jhonalvarez/crear-y-configurar-un-proyecto-usando-google-appengine-standard-espanol-4jim</link>
      <guid>https://forem.com/jhonalvarez/crear-y-configurar-un-proyecto-usando-google-appengine-standard-espanol-4jim</guid>
      <description>&lt;p&gt;Google AppEngine Standard es un producto PaaS (Platform as a Service) de Google Cloud que proporciona un entorno administrado que facilita el desarrollo rápido de aplicaciones.&lt;/p&gt;

&lt;p&gt;La version Standard de AppEngine ofrece la posibilidad de crear aplicaciones en los lenguajes de programación más polulares, tal como Python, Node.js, Java, Go, PHP, .NET, Ruby, entre otros.&lt;/p&gt;

&lt;p&gt;En esta oportunidad, nos enfocaremos en cómo configurar un proyecto en un lenguaje de programación disponible en Google AppEngine Standard.&lt;/p&gt;

&lt;p&gt;A continuacion, seleccionamos la opción “Proyecto Nuevo”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpfb38iw2d0gkrjqpvsyv.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpfb38iw2d0gkrjqpvsyv.webp" alt="Proyecto nuevo" width="720" height="254"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Escribimos un nombre para el proyecto. Dejamos los demás campos con sus valores por defecto y hacemos clic sobre el boton “Crear”.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3fczgqfmp6kgdkf5wumv.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3fczgqfmp6kgdkf5wumv.webp" alt="Crear proyecto" width="570" height="220"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Una vez finalizada la creación del proyecto, en la sección “Sin Servidor” accedemos a la opción “AppEngine” y hacemos clic en el boton “Crear Aplicación”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhsuz5sue452wi3f9drvz.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhsuz5sue452wi3f9drvz.webp" alt="Crear aplicacion" width="720" height="273"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Luego seleccionamos la región más adecuada y cercana a los usuarios finales de la aplicación y es por ello que se selecciona la región “southamerica-east1”. Dejamos los demás campos con sus valores por defecto y hacemos clic en el botón “Siguiente”.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmogb2bzmrqu7amcr75h8.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmogb2bzmrqu7amcr75h8.webp" alt="Seleccionar region" width="575" height="740"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Posterior a la generación del proyecto en la región seleccionada en el paso anterior, aparecerá una pantalla en la que se seleccionará el lenguaje de programación y el entorno. Para este ejemplo, seleccionaremos el lenguaje “Python” y el environment “Estandar”.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxcd7orcxaj8ixp54oi69.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxcd7orcxaj8ixp54oi69.webp" alt="Seleccionar Lenguaje" width="720" height="216"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Es importante que podamos conectarnos por linea de comandos mediante el SDK de Google Cloud, para ello hacemos clic en el boton “Descargar el SDK de Google” y seguimos las instrucciones para la instalación y configuración indicadas.&lt;/p&gt;

&lt;p&gt;Por ultimo y no menos importante, es importante que habilitemos la API para poder hacer despliegues en nuestro proyecto AppEngine. Para ello, en el buscador colocamos el término de búsqueda “Cloud Build API” y hacemos clic sobre la opción marcada en la imagen.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2hlln6ydbvfn06iidb4z.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2hlln6ydbvfn06iidb4z.webp" alt="Habilitar API" width="720" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hacemos clic sobre el botón “Habilitar”.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvomvlsv2nai05xtrrob8.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvomvlsv2nai05xtrrob8.webp" alt="Habilitar API" width="720" height="372"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Importante&lt;/strong&gt;: Si bien es cierto gran parte de las cosas que usaremos de Google Cloud son cubiertas por el free-tier que ofrece el servicio, es necesario que tengamos habilitada la facturación como pre-requisito para el uso de los servicios.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>appengine</category>
      <category>gcp</category>
      <category>spanish</category>
    </item>
    <item>
      <title>Publicar un sitio web con angular en GCP AppEngine Standard Free Tier - Español</title>
      <dc:creator>Jhon Anthony Alvarez Borja</dc:creator>
      <pubDate>Fri, 01 Aug 2025 00:37:42 +0000</pubDate>
      <link>https://forem.com/jhonalvarez/publicar-un-sitio-web-con-angular-en-gcp-appengine-standard-29g2</link>
      <guid>https://forem.com/jhonalvarez/publicar-un-sitio-web-con-angular-en-gcp-appengine-standard-29g2</guid>
      <description>&lt;p&gt;Si lo que queremos es desplegar un frontend web (ya sea de forma estática o generado por un framework) de forma rápida y de forma muy económica (incluso cero costo) una opción a tener en cuenta es usar Google Cloud AppEngine Standard.&lt;/p&gt;

&lt;p&gt;Como se menciona en la página del &lt;a href="https://cloud.google.com/appengine?hl=es#section-3" rel="noopener noreferrer"&gt;proveedor&lt;/a&gt;, el usar este tipo de soluciones administradas provee de una serie de ventajas, entre las que podemos destacar el uso de lenguajes populares, diagnosticos avanzado de aplicaciones para el monitoreo del estado y el rendimiento de la aplicación, gestion de versiones así como la seguridad, entre otros.&lt;/p&gt;

&lt;p&gt;Sin más preambulos, comencemos con lo necesario para poder desplegar nuestra página web en AppEngine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Paso 1. Configurar un proyecto en AppEngine en Google Cloud
&lt;/h2&gt;

&lt;p&gt;Para ello es necesario haber realizado los pasos indicados en esta &lt;a href="https://dev.to/jhonalvarez/crear-y-configurar-un-proyecto-usando-google-appengine-standard-espanol-4jim"&gt;guía detallada&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Tal como indica la guia, debemos configurar el proyecto con el lenguaje Python con el environment Estandar. De seleccionarse otro lenguaje, los pasos indicados en esta guía no funcionarán correctamente.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fswm4sc30lddwrsltx067.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fswm4sc30lddwrsltx067.webp" alt="Imagen referencial de GCP" width="700" height="210"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Paso 2. Configurar nuestro proyecto local
&lt;/h2&gt;

&lt;p&gt;Para ello es necesario incorporar en la carpeta del proyecto local dos archivos imprescindibles que se requerirán para poder desplegar nuestro frontend creado en Angular.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;app.yaml&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;El archivo app.yaml es un descriptor de implementacion que requiere Google Cloud para poder realizar la publicación en el entorno AppEngine. Para mayor información pueden consultar la referencia del proveedor.&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;runtime: python37
service: default

handlers:
- url: /(.*\.(js|css|svg|png|jpg|eot|ttf|json|pdf|woff|woff2)(|\.map))$
  static_files: dist/\1
  secure: always
  upload: dist/(.*)(|\.map)
- url: /(.*)
  static_files: dist/index.html
  secure: always
  upload: dist/*
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;.gcloudignore&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;El archivo .gcloudignore es usado para especificar que archivos deben excluirse de la carga a Google AppEngine. Para el caso de Angular, por ejemplo, excluimos la carpeta /node_modules/ y demás archivos que no forman parte del compilado que queremos publicar. Para mayor información pueden consultar la referencia del proveedor.&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# This file specifies files that are *not* uploaded to Google Cloud Platform
# using gcloud. It follows the same syntax as .gitignore, with the addition of
# "#!include" directives (which insert the entries of the given .gitignore-style
# file at that point).
#
# For more information, run:
#   $ gcloud topic gcloudignore
#
.gcloudignore
# If you would like to upload your .git directory, .gitignore file or files
# from your .gitignore file, remove the corresponding line
# below:
.git
.gitignore
.angular

# Python pycache:
__pycache__/
# Ignored by the build system
/setup.cfg
# Node.js dependencies:
/node_modules/
*~
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Paso 3: Publicar el sitio web mediante Cloud SDK
&lt;/h2&gt;

&lt;p&gt;Para ello, necesitamos instalar el cliente de Google Cloud en nuestro ordenador. Aquí dejo un enlace del proveedor cloud con las instrucciones.&lt;/p&gt;

&lt;p&gt;Una vez que tenemos el cliente instalado abrimos la shell de Google Cloud SDK, nos ubicamos en la carpeta del proyecto y ejecutamos las siguientes instrucciones:&lt;/p&gt;

&lt;p&gt;Para compilar el proyecto Angular:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install
npm run build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Asegurarse que el CLI esté configurado para desplegar en el proyecto adecuado. Para ello, ejecutar el siguiente comando&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gcloud info
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fev7795p310mpuf6joii4.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fev7795p310mpuf6joii4.webp" alt="Ejemplo de salida de linea de comandos" width="700" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para el ejemplo, se debe verificar que el valor del campo project corresponda con el valor “deployfrontendweb”, el cual es el nombre del proyecto que creé en Google Cloud.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;NOTA: Sólo en caso las configuraciónes no sean las adecuadas o esté referenciando a un proyecto incorrecto, se debe ejecutar el comando gcloud init y seleccionar la opción “Re-Initialize this configuration with new settings”.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwry6xkvp9ysfja6goc1h.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwry6xkvp9ysfja6goc1h.webp" alt="Salida de Consola" width="691" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Una vez que ya compilamos el proyecto y ya verificamos que el CLI de google cloud está referencindo al proyecto adecuado, ejecutamos los siguientes comandos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gcloud app deploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En la shell de Google Cloud SDK confirmaremos con la tecla “Y” y al finalizar el proceso se mostrará la confirmación de que el servicio ha sido deployado correctamente, indicando además las url de acceso.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiu5i6snmtlqpz18z8pxf.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiu5i6snmtlqpz18z8pxf.webp" alt="Salida de Consola" width="625" height="509"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Al ingresar a la consola de Google Cloud, visualizaremos que ya existe una versión instalada con la asignación del 100% del tráfico entrante.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm0lz53sk5k2vltrqwnpn.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm0lz53sk5k2vltrqwnpn.webp" alt="Imagen en GCP" width="700" height="167"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Frontend desplegado en GCP: &lt;a href="https://deployfrontendweb.rj.r.appspot.com" rel="noopener noreferrer"&gt;https://deployfrontendweb.rj.r.appspot.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Código en Github: &lt;a href="https://github.com/jalvarezborja/product-list-component" rel="noopener noreferrer"&gt;https://github.com/jalvarezborja/product-list-component&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gcp</category>
      <category>devops</category>
      <category>appengine</category>
      <category>spanish</category>
    </item>
  </channel>
</rss>
