
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Create a GKE Cluster
/ 20
Deploy Existing Monolith
/ 20
Migrate Orders to a microservice
/ 20
Migrate Products to microservice
/ 20
Migrate Frontend to microservice
/ 20
¿Por qué migrar una aplicación monolítica a una arquitectura de microservicios? Desglosar una aplicación en microservicios tiene las siguientes ventajas, cuya mayoría se debe a que los microservicios están vinculados de manera flexible:
Estas son algunas desventajas en comparación con las aplicaciones monolíticas:
En este lab, implementarás una aplicación monolítica existente en un clúster de Google Kubernetes Engine y, luego, la desglosarás en microservicios. Kubernetes es una plataforma para administrar, alojar, implementar y escalar contenedores. Los contenedores son una forma portátil de empaquetar y ejecutar código. Son adecuados para el patrón de microservicios, en el que cada microservicio puede ejecutarse en su propio contenedor.
Comienza por desglosar la aplicación monolítica en tres microservicios, uno a la vez. Los microservicios incluyen Pedidos, Productos y Frontend. Compila una imagen de Docker para cada microservicio con Cloud Build, luego implementa y expón los microservicios en Google Kubernetes Engine (GKE) con un tipo de servicio LoadBalancer de Kubernetes. Harás esto para cada servicio mientras los refactorizas, en simultáneo, fuera de la aplicación monolítica. Durante el proceso, tendrás en ejecución tanto la aplicación monolítica como los microservicios hasta el final, cuando puedas borrar la aplicación monolítica.
Lee estas instrucciones. Los labs son cronometrados y no se pueden pausar. El cronómetro, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.
Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.
Para completar este lab, necesitarás lo siguiente:
Haga clic en el botón Comenzar lab. Si debe pagar por el lab, se abrirá una ventana emergente para que seleccione su forma de pago. A la izquierda, se encuentra el panel Detalles del lab, que tiene estos elementos:
Haz clic en Abrir la consola de Google Cloud (o haz clic con el botón derecho y selecciona Abrir el vínculo en una ventana de incógnito si ejecutas el navegador Chrome).
El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.
Sugerencia: Ordene las pestañas en ventanas separadas, una junto a la otra.
De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.
También puedes encontrar el nombre de usuario en el panel Detalles del lab.
Haz clic en Siguiente.
Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.
También puedes encontrar la contraseña en el panel Detalles del lab.
Haz clic en Siguiente.
Haga clic para avanzar por las páginas siguientes:
Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.
Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud. Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.
Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu PROJECT_ID. El resultado contiene una línea que declara el PROJECT_ID para esta sesión:
gcloud
es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con la función de autocompletado con tabulador.
Haz clic en Autorizar.
Ahora, el resultado debería verse de la siguiente manera:
Resultado:
Resultado:
Resultado de ejemplo:
gcloud
, consulta la guía con la descripción general de gcloud CLI en Google Cloud.
Establece la zona predeterminada y la configuración del proyecto:
Usarás una aplicación monolítica existente de un sitio web de comercio electrónico imaginario, con una página de bienvenida simple, una página de productos y una página de historial de pedidos. Solo tendremos que clonar el origen de nuestro repo de Git, así podremos enfocarnos en desglosarlo en microservicios para implementarlos en Google Kubernetes Engine (GKE).
Es posible que la ejecución de esta secuencia de comandos tarde unos minutos.
Ahora que tienes tu entorno de desarrollo activo, necesitas un clúster de Kubernetes para implementar primero tu aplicación monolítica y, luego, los microservicios también. Antes de crear un clúster, asegúrate de que estén habilitadas las APIs correspondientes.
La creación del clúster puede demorar varios minutos.
Resultado:
También, puedes ver tu clúster de Kubernetes y la información relacionada en la consola de Cloud. En Menú de navegación, desplázate hacia abajo hasta Kubernetes Engine y haz clic en Clústeres.
Deberías ver tu clúster llamado fancy-cluster.
¡Felicitaciones! Acabas de crear tu primer clúster de Kubernetes.
Haz clic en Revisar mi progreso para verificar el objetivo.
Debido a que este lab se enfoca en el desglose de una aplicación monolítica en microservicios, necesitas tener una aplicación monolítica en funcionamiento.
Deberías ver un resultado similar al siguiente:
Si tu resultado muestra la IP externa como <pending>
, espera un minuto y vuelve a ejecutar el comando.
Una vez que hayas determinado la dirección IP externa para tu aplicación monolítica, cópiala y escribe esta URL (como http://203.0.113.0) en tu navegador para verificar si se puede acceder a ella.
Deberías ver la página de bienvenida del sitio web monolítico. La Página de bienvenida es una página estática que será entregada por el microservicio Frontend más adelante. Tu aplicación monolítica ya se está ejecutando por completo en Kubernetes.
Haz clic en Revisar mi progreso para verificar el objetivo.
Ahora que tienes un sitio web monolítico ejecutándose en GKE, comienza a desglosar cada servicio en un microservicio. Por lo general, tendrás que planificar qué servicios separar en partes más pequeñas, normalmente en torno a partes específicas de la aplicación, como el dominio de la empresa.
Para este lab, crearás un ejemplo y separarás cada servicio en torno al dominio de la empresa: Pedidos, Productos y Frontend. Como el código ya se migró, puedes enfocarte en compilar e implementar los servicios en Google Kubernetes Engine (GKE).
El primer servicio que desglosarás será Pedidos. Usa la base de código separada que se proporciona y crea otro contenedor de Docker para este servicio.
Como la base de código ya está disponible, tu primer paso será crear un contenedor de Docker para tu servicio Pedidos con Cloud Build.
En situaciones normales, esto se hace mediante un proceso de dos pasos que implica compilar un contenedor de Docker y enviarlo a un registro para almacenar la imagen que extraerá GKE. Cloud Build se puede usar para compilar el contenedor de Docker y colocar la imagen en Container Registry con un único comando. Esto te permite ejecutar un solo comando para compilar tu imagen y moverla a Container Registry. Para obtener información sobre el proceso manual de creación de un archivo Docker y su envío, puedes ir a la documentación de Google Cloud Container Registry y ver la Guía de inicio rápido para Container Registry.
Google Cloud Build comprimirá los archivos del directorio y los moverá a un bucket de Cloud Storage. Luego, el proceso de compilación tomará todos los archivos del bucket y usará el Dockerfile para ejecutar el proceso de compilación de Docker. Como la marca --tag
se especifica con el host como gcr.io para la imagen de Docker, se enviará la imagen de Docker resultante a Google Cloud Container Registry.
Este proceso tardará un minuto en completarse, pero cuando haya finalizado, se mostrará un resultado similar al siguiente en la terminal:
Si haces clic en el ID de compilación, puedes ver todos sus detalles, incluida la salida del registro.
Para ver la imagen del contenedor que se creó, dirígete a la página de detalles de compilación, haz clic en la pestaña Detalles de la ejecución, en la sección derecha, y mira en Imagen.
Ahora que alojaste el sitio web en contenedores y lo enviaste a Google Container Registry, es hora de implementarlo en Kubernetes.
Kubernetes representa aplicaciones como Pods, que son unidades que representan un contenedor (o grupo de contenedores estrechamente vinculados). Un Pod es la unidad más pequeña que se puede implementar en Kubernetes. En este instructivo, cada Pod contiene solo tu contenedor de microservicios.
Para implementar y administrar aplicaciones en un clúster de GKE, debes comunicarte con el sistema de administración de clústeres de Kubernetes. Normalmente, esto se hace con la herramienta de línea de comandos kubectl desde Cloud Shell.
Primero, crea un recurso Deployment. Este recurso administra varias copias de tu aplicación, que se llaman réplicas, y las programa para que se ejecuten en los nodos individuales de tu clúster. En este caso, Deployment ejecutará solo un Pod de tu aplicación. Los recursos Deployment crean un ReplicaSet para garantizar esto. El ReplicaSet debe asegurarse de que la cantidad especificada de réplicas siempre esté en ejecución.
El comando kubectl create deployment
que figura a continuación hace que Kubernetes cree un Deployment, llamado Pedidos en tu clúster con 1 réplica.
El estado del Pod puede tardar unos minutos en cambiar a “Running”.
Resultado:
Puedes ver tu recurso Deployment actual (CURRENT), el replicaset
con el recuento de Pods deseado (DESIRED) de 1 y el Pod en ejecución (Running). Todo indica que la creación se realizó correctamente.
También, puedes ver tus recursos Deployment de Kubernetes en la consola de Cloud desde Menú de navegación > Kubernetes Engine > Cargas de trabajo.
Ya implementamos nuestra aplicación en GKE, pero no tenemos manera de acceder a ella desde fuera del clúster. Según la configuración predeterminada, los contenedores que ejecutas en GKE no son accesibles desde Internet, ya que no tienen direcciones IP externas. Debes exponer tu aplicación al tráfico de Internet de forma explícita mediante un recurso Service. Este recurso proporciona herramientas de redes y compatibilidad con IP a los Pods de tu aplicación. GKE crea una IP externa y un balanceador de cargas (sujeto a la facturación del sitio web de Google Cloud; revisa los precios de Compute Engine) para tu aplicación.
Para los fines de este lab, se simplificó la exposición del servicio. Por lo general, usarías una puerta de enlace de API para proteger los extremos públicos. En el Centro de Arquitectura de Google Cloud, lee más sobre las prácticas recomendadas para los microservicios.
Cuando implementaste el servicio Pedidos, lo expusiste en el puerto 8081 de forma interna a través de un recurso Deployment de Kubernetes. Para exponer este servicio de forma externa, debes crear un servicio Kubernetes del tipo LoadBalancer
para enrutar el tráfico desde el puerto 80 de forma externa al puerto interno 8081.
GKE asigna la dirección IP externa al recurso Service, no a Deployment.
kubectl get service
:Resultado:
Una vez que hayas determinado la dirección IP externa para tu aplicación, cópiala y guárdala para el próximo paso, en el que cambiarás tu aplicación monolítica con el objetivo de que apunte al servicio nuevo Pedidos.
Como quitaste el servicio Pedidos de la aplicación monolítica, deberás modificar la aplicación monolítica para que apunte al nuevo microservicio externo Pedidos.
Al desglosar una aplicación monolítica, quitas piezas de código de una base de código única, las ubicas en varios microservicios y las implementas por separado. Como los microservicios se ejecutan en un servidor diferente, ya no puedes referenciar las URL de tu servicio como rutas absolutas. Necesitas una ruta a la dirección del servidor del microservicio Pedidos. Esto requerirá que la aplicación monolítica tenga cierto tiempo de inactividad para actualizar la URL de cada servicio que se separó. Debes tener en cuenta esto al planificar la migración de tus microservicios y su aplicación monolítica al entorno de producción durante el proceso de migración de microservicios.
Debes actualizar tu archivo de configuración en la aplicación monolítica para que apunte a la dirección IP del nuevo microservicio Pedidos.
nano
para reemplazar la URL local por la dirección IP del microservicio Pedidos:Cuando se abra el editor, tu archivo debería verse de esta forma:
REACT_APP_ORDERS_URL
por el formato nuevo y, a la vez, reemplaza por la dirección IP de tu microservicio Pedidos para que coincida con lo que se muestra a continuación:Presiona CTRL + O
, luego INTRO
y, por último, CTRL + X
para guardar el archivo en el editor nano.
Navega por la URL que acabas de establecer en el archivo para probar el microservicio nuevo. La página web debería devolver una respuesta JSON de tu microservicio Pedidos.
Luego, vuelve a compilar el frontend de la aplicación monolítica y repite el proceso de compilación del contenedor en la aplicación y vuelve a implementarlo en el clúster de GKE:
Continúa la separación de los servicios con la migración del servicio Productos. Sigue el mismo proceso que antes. Ejecuta los siguientes comandos para compilar un contenedor de Docker, implementa tu contenedor y expónlo mediante un servicio de Kubernetes.
Resultado:
Usarás la dirección IP en el próximo paso cuando reconfigures la aplicación monolítica para que apunte a tu nuevo microservicio Productos.
nano
para reemplazar la URL local por la dirección IP del nuevo microservicio Productos:Cuando se abra el editor, tu archivo debería verse de esta forma:
REACT_APP_PRODUCTS_URL
por el formato nuevo y, a la vez, reemplaza por la dirección IP de tu microservicio Productos para que coincida con lo que se muestra a continuación:Presiona CTRL + O
, luego INTRO
y, por último, CTRL + X
para guardar el archivo.
Navega por la URL que acabas de establecer en el archivo para probar el microservicio nuevo. La página web debería mostrar una respuesta JSON de tu microservicio Productos.
Luego, vuelve a compilar el frontend de la aplicación monolítica y repite el proceso de compilación del contenedor en la aplicación y vuelve a implementarlo en el clúster de GKE. Ejecuta los siguientes comandos para completar estos pasos:
Compila nuevamente los archivos de configuración de la aplicación monolítica:
El último paso del proceso de migración consiste en mover el código Frontend a un microservicio y cerrar la aplicación monolítica. Cuando se complete este paso, habremos migrado con éxito nuestra aplicación monolítica a una arquitectura de microservicios.
Sigue el mismo procedimiento que en los últimos dos pasos para crear un nuevo microservicio Frontend.
Anteriormente, cuando compilaste nuevamente la aplicación monolítica, actualizaste la configuración para que apunte a ella. Ahora, debes usar la misma configuración para el microservicio Frontend.
Cuando se complete la ejecución de los comandos, sigue el mismo proceso que en los pasos anteriores. Ejecuta los siguientes comandos para compilar un contenedor de Docker, implementa tu contenedor y expónlo mediante un servicio de Kubernetes.
Crea un contenedor de Docker con Google Cloud Build:
Ahora que todos los servicios se ejecutan como microservicios, puedes borrar la aplicación monolítica. Ten en cuenta que, en una migración real, esto implicaría también cambios de DNS, entre otros, para lograr que nuestros nombres de dominio apunten a los microservicios nuevos Frontend de nuestra aplicación.
Para verificar que todo está en funcionamiento, la dirección IP anterior de tu servicio de aplicación monolítica no debería funcionar ahora, y la nueva dirección IP de tu servicio Frontend debería alojar la nueva aplicación.
El resultado debería ser similar al siguiente:
Cuando hayas determinado la dirección IP externa para tu microservicio Frontend, cópiala y escribe esta URL (como http://203.0.113.0) en tu navegador para verificar si se puede acceder a tu Frontend. Tu sitio web debería verse de la misma forma que se veía antes del desglose de la aplicación monolítica en microservicios.
Desglosaste tu aplicación monolítica en microservicios y los implementaste en Google Kubernetes Engine con éxito.
Este lab de autoaprendizaje forma parte de la Quest Website on Google Cloud. Una Quest es una serie de labs relacionados que forman una ruta de aprendizaje. Inscríbete en esta Quest y obtén un crédito inmediato de finalización si realizaste este lab. Consulta el catálogo de Google Cloud Skills Boost para ver otras Quests disponibles.
¿Estás buscando un Lab de desafío práctico para demostrar tus habilidades y validar tu conocimiento? Cuando completes esta Quest, finaliza este Lab de desafío adicional.
Continúa aprendiendo con este video sobre un caso de éxito Hosting Scalable Web Apps on Google Cloud o bien revisa estas sugerencias:
Recibe la formación que necesitas para aprovechar al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarte a avanzar rápidamente y a seguir aprendiendo. Para que puedas realizar nuestros cursos cuando más te convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: a pedido, presenciales y virtuales. Las certificaciones te ayudan a validar y demostrar tus habilidades y tu conocimiento técnico respecto a las tecnologías de Google Cloud.
Actualización más reciente del manual: 20 de septiembre de 2023
Prueba más reciente del lab: 20 de septiembre de 2023
Copyright 2025 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.
Este contenido no está disponible en este momento
Te enviaremos una notificación por correo electrónico cuando esté disponible
¡Genial!
Nos comunicaremos contigo por correo electrónico si está disponible
One lab at a time
Confirm to end all existing labs and start this one