La traducción del artículo ha sido preparada especialmente para los estudiantes del curso .
¿Te interesa desarrollarte en esta dirección? Vea la grabación del taller profesional , que fue dirigido por Egor Zuev — Team Lead en InBit y autor del programa educativo en OTUS.

Google Cloud Platform (GCP) ofrece numerosos servicios, especialmente una pila de computación que incluye Google Compute Engine (GCE), Google Kubernetes Engine (anteriormente conocido como Container Engine) (GKE), Google App Engine (GAE) y Google Cloud Functions (GCF). Todos estos servicios tienen nombres interesantes, pero pueden no ser del todo evidentes en cuanto a sus funciones y lo que los hace únicos entre sí. Este artículo está destinado a aquellos que están comenzando a familiarizarse con los conceptos de la nube, en particular con los servicios en la nube y GCP.

1. Pila de computación
La pila de computación se puede considerar como una abstracción multinivel sobre lo que puede proporcionar un sistema informático. Esta pila asciende (sube) de "hardware en crudo" (bare metal), que se refiere a los componentes físicos reales del ordenador, hasta las funciones (funciones), que son la unidad más pequeña de computación. Lo importante a señalar con respecto a la pila es que los servicios se agregan al moverse hacia arriba en la pila; por ejemplo, la sección de "aplicaciones" (apps), mostrada en la figura 1 a continuación, debe contener todos los componentes básicos de los contenedores (contenedores), máquinas virtuales (máquinas virtuales) y hardware. De manera similar, el componente de máquinas virtuales debe contener el hardware interno necesario para funcionar.

Figura 1: Pila de computación | Imagen obtenida de
Este modelo, mostrado en la figura 1, es la base para describir las ofertas de los proveedores de nube. Por lo tanto, algunos proveedores pueden ofrecer solo, por ejemplo, contenedores y servicios de calidad inferior a lo largo de la pila, mientras que otros ofrecen todo lo que se muestra en la figura 1.
— Si ya está familiarizado con los servicios en la nube, pase a la sección 3, para conocer el equivalente de GCP
— Si solo necesita un resumen de los servicios en la nube, pase a la sección 2.4
2. Servicios en la nube
El mundo de la computación en la nube es muy diverso. Los proveedores de nube ofrecen una amplia gama de servicios adaptados a los distintos requisitos de los clientes. Es posible que haya oído hablar de términos como IaaS, PaaS, SaaS, FaaS, KaaS, etc., con todas las letras del alfabeto seguidas de «aaS». A pesar de esta extraña convención de nomenclatura, forman un conjunto de servicios de proveedores de nube. Puedo afirmar que hay 3 ofertas principales «como servicio» (as a Service) que los proveedores de nube casi siempre ofrecen.
Estos son IaaS, PaaS y SaaS, que significan respectivamente infraestructura como servicio (Infrastructure as a Service), plataforma como servicio (Platform as a Service) y software como servicio (Software as a Service). Es importante visualizar los servicios en la nube como niveles de servicios proporcionados. Esto implica que cuando sube o baja de nivel, como cliente, atraviesa diferentes opciones de servicio que se añaden o eliminan de la oferta principal. Es mejor considerar esto como una pirámide, como se muestra en la figura 2.

Figura 2: Pirámide «aaS» | Imagen obtenida de
2.1 Infraestructura como servicio (IaaS)
Este es el nivel más bajo que un proveedor de servicios en la nube puede ofrecer, y abarca un proveedor de computación en la nube que suministra infraestructura «desnuda», que incluye software intermedio, cables de red, procesadores, GPU, memoria RAM, almacenamiento externo, servidores e imágenes de sistemas operativos base, como Debian Linux, CentOS, Windows, etc.
Si solicita una oferta IaaS de un proveedor de servicios en la nube, esto es lo que debe esperar recibir. Le corresponde a usted, como cliente, ensamblar estas partes para llevar a cabo su negocio. El grado de lo que tendrá que trabajar puede variar de proveedor a proveedor, pero en general, solo recibe el hardware y el sistema operativo, y lo demás es su responsabilidad. Ejemplos de IaaS incluyen AWS Elastic Compute, Microsoft Azure y GCE.
A algunas personas puede no gustarles el hecho de tener que instalar imágenes de sistema operativo y encargarse de la red, el balanceo de carga o preocuparse por qué tipo de procesador es ideal para su carga de trabajo. Aquí es donde ascendemos por la pirámide hacia PaaS.
2.2 Plataforma como Servicio (PaaS)
PaaS incluye únicamente el proveedor de servicios en la nube que ofrece una plataforma específica sobre la cual los usuarios pueden crear aplicaciones. Esta es una abstracción sobre IaaS, lo que significa que el proveedor de la nube se encarga de todos los detalles de los tipos de CPU, memoria, RAM, almacenamiento, redes, etc. Como se muestra en la figura 2, usted, como cliente, tiene un control limitado sobre la plataforma real, ya que el proveedor de la nube se encarga de todos los detalles de la infraestructura por usted. Solicita la plataforma elegida y construye su proyecto sobre ella. Ejemplos de PaaS son Heroku.
Para algunos, este puede ser un nivel demasiado alto, ya que no necesariamente quieren construir un proyecto en la plataforma indicada, sino que más bien necesitan un conjunto de servicios directamente del proveedor de servicios en la nube. Aquí es donde entra SaaS.
2.3 Software como Servicio (SaaS)
SaaS representa los servicios más comunes ofrecidos por los proveedores de servicios en la nube. Están destinados a los usuarios finales y están disponibles principalmente a través de sitios web, como Gmail, Google Docs, Dropbox, etc. En lo que respecta a Google Cloud, hay varias ofertas fuera de su pila de computación que son SaaS. Incluyen Data Studio, Big Query, etc.
2.4 Resumen de servicios en la nube
Componentes
IaaS
PaaS
SaaS
Lo que obtiene
Obtiene la infraestructura y paga en consecuencia. La libertad de usar o instalar cualquier software, sistema operativo o su composición.
Aquí obtiene lo que solicita. Software, hardware, sistema operativo, entorno web. Obtiene una plataforma lista para usar y paga en consecuencia.
Aquí no necesita preocuparse por nada. Se le proporciona un paquete preconfigurado de acuerdo con sus requisitos y solo le queda pagar en consecuencia.
Valor
Nivel básico de computación
Cima de IaaS
Es esencialmente un paquete completo de servicios
Complejidades técnicas
Se requieren conocimientos técnicos
Se le da una configuración básica, pero aún se requieren conocimientos de la materia.
No hay necesidad de preocuparse por los detalles técnicos. El proveedor de SaaS proporciona todo.
Con lo que trabaja
Máquinas virtuales, almacenamiento, servidores, red, balanceadores de carga, etc.
Entornos de ejecución (como java runtime), bases de datos (como mySQL, Oracle), servidores web (como tomcat, etc.)
Aplicaciones como servicios de correo electrónico (Gmail, Yahoo mail, etc.), sitios de redes sociales (Facebook, etc.)
Gráfico de popularidad
Popular entre desarrolladores altamente calificados, investigadores que requieren personalización de acuerdo a sus necesidades o áreas de estudio
Más popular entre desarrolladores, ya que pueden concentrarse en el desarrollo de sus aplicaciones o scripts. No necesitan preocuparse por la carga de tráfico o la gestión del servidor, etc.
Más popular entre consumidores comunes o empresas que utilizan software como correo electrónico, intercambiadores de archivos, redes sociales, ya que no necesitan preocuparse por los detalles técnicos
Figura 3: Resumen de las principales ofertas en la nube | Imagen proporcionada
3. Paquete de computación Google Cloud Platform
Al revisar las ofertas típicas de proveedores de nube en la sección 2, podemos compararlas con las ofertas de Google Cloud.
3.1 Google Compute Engine (GCE) — IaaS

Figura 4: Icono de Google Compute Engine (GCE)
GCE es una oferta de IaaS de Google. Con GCE puedes crear máquinas virtuales libremente, asignar recursos de CPU y memoria, elegir el tipo de almacenamiento, como SSD o HDD, así como la capacidad de memoria. Es casi como si estuvieras construyendo tu propio ordenador/estación de trabajo y manejando todos los detalles de su funcionamiento.
En GCE puedes elegir desde instancias micro con procesadores de 0.3 núcleos y 1 GB de RAM, hasta monstruos de 96 núcleos con más de 300 GB de RAM. También puedes crear máquinas virtuales de tamaño personalizado para tus cargas de trabajo. Para aquellos interesados, estas son máquinas virtuales que puedes ensamblar.
3.2. Google Kubernetes Engine (GKE) — (Caas / Kaas)

Figura 5: Icono de Google Kubernetes Engine (GKE)
GKE es una oferta de computación única de GCP que representa una abstracción sobre Compute Engine. En un sentido más general, GKE se puede clasificar como "Contenedor como Servicio" (CaaS), a veces llamado "Kubernetes como Servicio" (KaaS), que permite a los clientes ejecutar fácilmente sus contenedores Docker en un entorno Kubernetes completamente gestionado. Para aquellos que no están familiarizados con los contenedores, estos ayudan a modularizar servicios/aplicaciones, por lo que diferentes contenedores pueden contener diferentes servicios; por ejemplo, un contenedor puede alojar la interfaz de tu aplicación web, mientras que otro puede contener su parte del servidor. Kubernetes se encarga de la automatización, coordinación, gestión y despliegue de tus contenedores. Más información aquí.
3.3 Google App Engine (GAE) — (PaaS)

Figura 6: Icono de Google App Engine (GAE)
Como se mencionó en la sección 2.2, PaaS está por encima de IaaS, y en el caso de GCP también se puede considerar como una oferta sobre GKE. GAE es un PaaS especializado de Google, y como ellos mismos se describen mejor — "trae tu código y nosotros nos encargaremos del resto".
Esto garantiza que los clientes que utilizan GAE no tienen que enfrentarse al hardware/software subyacente, y ya pueden tener una plataforma preconfigurada lista para usar; todo lo que necesitan hacer es proporcionar el código necesario para ejecutarlo.
GAE maneja automáticamente el escalado para satisfacer la carga y la demanda de los usuarios, lo que significa que si tu sitio web de venta de flores de repente alcanza un pico porque se acerca el Día de San Valentín, GAE gestionará el escalado de la infraestructura subyacente para satisfacer la demanda y asegurarse de que tu sitio web no se caiga debido al aumento de la demanda. Esto significa que pagas solo por los recursos que necesita tu aplicación en ese momento.
GAE utiliza Kubernetes o su versión incorporada para manejar todo esto, para que no tengas que preocuparte por ello. GAE es ideal para empresas que no están interesadas en la infraestructura subyacente y solo se preocupan por que su aplicación esté disponible de la mejor manera posible.
En mi opinión, GAE es el mejor lugar para comenzar si eres un desarrollador con una gran idea, pero no quieres lidiar con el trabajo rutinario de configurar servidores, equilibrar la carga y todo el trabajo arduo de devops/SRE. Con el tiempo, podrías probar GKE y GCE, pero esa es solo mi opinión.
Descargo de responsabilidad: AppEngine se utiliza para aplicaciones web, no para aplicaciones móviles.
Para más información:
3.4 Google Cloud Functions — (FaaS)

Figura 7: Icono de Google Cloud Functions (GCF)
Espero que hayas notado una tendencia al analizar las propuestas anteriores. Cuanto más alto asciendes en la escalera de soluciones de computación de GCP, menos necesitas preocuparte por las tecnologías subyacentes. Esta pirámide culmina en la unidad de cómputo más pequeña posible, que es la función, como se muestra en la sección 1.
GCF es una oferta relativamente nueva de GCP que aún está en fase beta (en el momento de escribir este artículo). Las funciones en la nube permiten que ciertas funciones escritas por el desarrollador se ejecuten en respuesta a algún evento.
Son gestionadas por eventos y son la base de la palabra de moda 'sin servidor', es decir, no conocen servidores. Las funciones en la nube son muy simples y tienen muchas aplicaciones diferentes que requieren un pensamiento basado en eventos. Por ejemplo, cada vez que un nuevo usuario se registra, puede activarse una función en la nube para alertar a los desarrolladores.
En la fábrica, cuando un sensor específico alcanza un cierto valor, puede activar una función en la nube que realiza algún procesamiento de información o notifica a algún personal de mantenimiento, etc.
Conclusión
En este artículo hemos hablado sobre varias ofertas en la nube, como IaaS, PaaS, etc., y cómo la pila de computación de Google implementa estos diferentes niveles. Hemos visto que los niveles de abstracción al pasar de una categoría de servicio a otra, como de IaaS a PaaS, requieren menos conocimiento sobre lo que hay detrás.
Para las empresas, esto proporciona una flexibilidad crítica que no solo satisface sus objetivos operativos, sino que también aborda otras áreas clave, como la seguridad y el costo. En resumen:
Compute Engine — le permite crear su propia máquina virtual al asignar recursos de hardware específicos, como RAM, CPU y almacenamiento. También es bastante práctico y de bajo nivel.
Kubernetes Engine — es un paso arriba en comparación con Compute Engine, que le permite utilizar Kubernetes y contenedores para gestionar su aplicación, permitiendo escalarla según sea necesario.
App Engine — es un paso arriba en comparación con Kubernetes Engine, permitiéndole centrarse solo en su código, mientras Google se encarga de todos los requisitos de la plataforma base.
Cloud Functions — es la cúspide de la pirámide de computación, permitiendo escribir una función simple que, al ejecutarse, utiliza toda la infraestructura subyacente para calcular y devolver un resultado.
¡Gracias por su atención!
Twitter:
Fuente: habr.com
