Skip to content

Compute Services

🧠 Servicios de Cómputo

Compute Engine (VM)

  • IaaS - MV bajo demanda
  • IP address - doc
  • Para localizar la IP externa (e interna) de la MV, se debe utilizar: gcloud compute instances list
  • Si la MV está autorizada, puede recibir una dirección IP externa y mapearla a su dirección interna

  • ⭐ Cuotas doc

  • Hay dos tipos de Cuotas: proyecto o regional
  • Proyecto:
    • Puestas para un proyecto especifico, se puede saber con: gcloud compute project-info describe --project ID_PROYECTO
  • Regional:

    • Las cuotas de las MV son gestionada a nivel regional: gcloud compute regions describe REGION
  • Note:

  • “Las cuotas no garantizan que los recursos estén disponibles siempre”

  • Almacenamiento:

  • SSDs Local - doc
    • Mejor rendimiento: están fisicamente conectados al servidor que hospeda la instancia de MV
    • 375 GB de capacidad
    • Pueden ser conectados 24 discos para un total máximo de 9 TB
  • scripts de apagado - doc
  • tienen una limitada cantidad de tiempo para finalizar los procesos corriendo (Instancias descartables: 30s)script desde la Consola usando la clave de metadatos shutdown-script
  • Instance groups
  • colección de MV que pueden ser gestionados como una simple entidad - doc
  • Hay dos Tipos de IG:
    • Grupo de Instancias Gestionadas (MIGs)
    • ⭐ Múltiples e identicas MV, escalables y altamente disponibles.
    • crea MV desde un template de instancias y configuración Stateful opcional (por ejemplo, discos)
    • Hay dos tipos de MIG:
      • MIG Zonal
      • despliga instancia en una zona
      • MIG Regional
      • despliga instancias a través de multiples zonas de la misma Región
    • Grupo de Instancias No Gestionadas
    • pueden contener instancias heterogeneas, necesita ser gestionado por un humano
    • no ofrecen autoescalado, autosanado, soporte a actualizaciones rolling ni soporte multi-zone
    • ⭐ "Usa grupo de instancias no gestionadas cuando se necesiten aplicar equilibrio de carga a grupos de instancias heterogeneas, o si se necesita gestionar las instancias por un humano" - doc
  • Ahorra Costos
  • Instancias de MV Interrumpibles (Preemptible)
    • ⭐ Instancias de MV Interrumpibles no pueden ser migradas a una instancia de MV regular - doc
  • Descuentos por Comprometimiento de Uso
    • Si hubiere una carga de trabajo que siempre (o la mayor parte de las veces) sea requerida, se puede comprometer a utilizar una MV de 1 a 3 años y recibir un descuento.
  • MV Protegida - doc
  • ⭐ ofrece integridad verificable de tus instancias de VM de Compute Engine, para que puedas estar seguro de que las instancias no se expusieron a software malicioso o rootkits de nivel de inicio y kernel
  • uso del Inicio seguro, el inicio medido habilitado para el módulo de plataforma segura virtual (vTPM) y el monitoreo de integridad.
  • Cloud Console
  • ⭐ Para reiniciar una MV, se debe utilizar el botón reset
  • Se pueden ordenar las instancias de MV por Etiquetas, estatus, zonas, usado por, IP, etc.
  • ⭐ Se puede filtrar una instancia por You can filter VM instances by Etiquetas, estatus, Miebro del Grupo de Instancias Gestionadas, IP, Propiedades de la MV.
  • GPU
  • ⭐ Se debe configurar las instancias de GPU para que se detengan durante los eventos de mantenimiento del host - doc
  • Snapshot
  • ⭐ Compute Engine usar instantaneas incrementales por lo que cada instantea contiene solo los datos que han sufrido cambios desde la instantanea previa. - doc
  • Para tomar una instantanea se debe tener el rol de Compute Storage Admin - doc
    • Permisos para crear, modificar y eliminar discos, imagenes e instantaneas.
  • Discos
  • Los discos están a nivel regional, por lo que se puede habilitar replicación regional
    • Regional: el disco será reolicado sincronicamente a través de dos zonas dentro de una Región
  • Caso de Uso: Copiar una MV desde una zona a otra en la misma Región
    • gcloud para copiar el disco a una nueva zona, para entonces crear una MV a partir de ese disco
    • Otros: Mover una instancia entre zonas - doc

GKE - Google Kubernetes Engine

  • Ejecuta aplicaciones contenereizas en un entorno gestionado
  • construido sobre Compute engine
  • Clúster Regional
  • Se puede especificar un clúster, y GCP replica las configuraciones a todas las demás zonas
  • Problema: se paga por recursos multiplicando el número de zonas disponibles
  • Clúster Multizona
  • Se puede escoger mas de una zona de una Región
  • Se reducen costos (por ejemplo se pueden seleccionar 2 zonas en lugar de 3)
    • Y no es necesario mantener los mismos nodos en ambas zonas, en caso de fallas en una zona, esto puede ser un potencial
  • Problema: el nodo maestro está solo en la zona principal Si la zona muere, el nodo maestro muere
  • Aprovisionamiento Automático - doc
  • GCP tratará de entender los recursos requeridos por un pod, y creará un pool de nodos bajo demanda con los suficientes recursos para alojar ese pod
  • Adapta el pool de nodos de acuerdo a los requisitos que necesite el pod
  • Binary Authorization
  • Despliega solo contenedores verificados en Google Kubernetes Engine.

Cloud Run

  • En una frase: el usuario le proporcionará a Google Cloud Run un contenedor Docker que contebga un servidor web.
  • Google ejecutará este contenedor y creará un endpoint HTTP. - medium
  • ⭐ Puede ser facilmente confundido con App engine (particularmente con App Engine Flex)
  • [aquí] hay algunos comentarios utiles:
    • “AppEngine solo puede ser desplegado en una sola Región.”
    • Cloud run permite desplegar un servicio a cualquier Región dentro de un proyecto haciendo su API realmente global, todo dentro del mismo proyecto.

App Engine

  • ⭐ Definiciones:
  • Una aplicación por proyecto
  • La aplicación puede tener multiples Servicios:
    • Los componentes lógicos pueden compartir de forma segura las funciones de App Engine y comunicarse
  • Cada cambio en el Servicio crea una nueva Versión
  • Cada Versión se ejecuta en una máquina llamada Instancia
    • Instancias Residentes:
    • Cada vez que es escalado a 0, esas están siguen igual en linea o vivas. - medium
    • Instancias Dinámicas:
    • crea instancias con escalado automático - doc
  • PaaS - Ejecuta codigo en la nube sin preocuparnos por la insfraestructura
  • Se le indica a Google como la aplicación debe ser ejecutada.
  • App Engine creará y ejecutará un contenedor con esas instrucciones.
  • Por ejemplo, especificar un app.yml con:

    • runtime: nodejs12
    • entrypoint: node build/server.js
  • Caracteristicas Básicas

  • No se puede escribir en el disco local, se debe probar la aplicación localmente, para que encaje bien con la arquitectura de microservicios
  • ⭐ Solo una App Engine por Proyecto - doc
  • ⭐ Limites - doc
  • Servicios máximos por aplicación: 5
  • Versiones máximas por aplicación: 5
  • Instancias máximas por versión con escalado manual: 20
  • Entornos - docs
  • Entorno Estandar
    • código en una versión especifica en un lenguaje de programación especifico, inicio rápido (sec)
  • Entorno Flexible
    • ofrece docker, inicio más lento (min)
  • ⭐ Localizaciones
  • App Engine es un servicio regional, No se pueden trasladar aplicaciones de Región. - doc
  • Servicios
  • Se pueden desplegar multiples servicios en un solo App Engine dentro del mismo proyecto en que la reside
  • “Una aplicación de App Engine consta de un solo recurso de aplicación que consiste en uno o más servicios.” - doc
  • “Dentro de cada servicio se implementan sus versiones”
  • Limites
  • Cantidad de Servicios máximos por aplicación - App Grátis 5 - App de Pago 105
  • Cantidad de Versiones máximas por aplicación - App Grátis 15 - App de Pago 210

{% gist 7ba177dfdd6aa1f63ffa48c6f5317066 %}

  • Si se desea dividir el tráfico con una cookie, el nombre de la cookie debe ser GOOGAPPUID - doc

  • ⭐ Escalado - doc

  • Escalado Básico:
    • App Engine intenta de mantener bajos los cotos, aún cuando esto resulte en una alta latencia y el volumen de petición se incremente
  • Escalado Automático:

    • Cada instancia en la aplicacion tiene su propia cola para peticiones entrantes. App Engine automáticamente gestiona el incremento en la carga
  • ⭐ Instancia

  • La clase de instancia determina la cantidad de memoria y CPU disponibles para cada instancia - doc (el tipo de MV)

  • ⭐ HTTP url - doc

  • https://ID_PROYECTO.ID_REGION.r.appspot.com

  • app.yaml - doc

  • Se puede configurar la app de App Engine en el archivo app.yaml.
  • Algunas opciones interesentes que deben estar en el archivo yaml son:
    • api_version: Obligatorio
    • default_expiration: Establece un período de caché predeterminado global para todos los controladores de archivos estáticos de una aplicación.
    • env_variables: Se definen variables de entorno
    • includes: permite incluir el archivo de configuración de cualquier biblioteca o servicio en toda la aplicación.
    • instance_class
    • libraries: - Obsoleto, usar requirements.txt para especifiar una biblioteca Python
    • threadsafe: Obligatorio, Configura la aplicación para utilizar peticiones concurrentes
    • version: - mejor configurarlo con la CLI
    • automatic_scaling
    • [min/max]_instances
    • ⭐ max_concurrent_requests: número de peticiones concurrentes que una instancia de escalado automático puede aceptar antes de que el programador genere una nueva instancia (predeterminado: 10, máximo: 80).
    • max_idle_instances: cantidad máxima de instancias inactivas que App Engine debe mantener para esta versión.
    • basic_scaling
    • max_instances: ⭐ Nota: el valor min_instances no existe!
    • idle_timeout: La instancia se cerrará en esta cantidad de tiempo después de recibir su última petición.