Materias · 🏛️ Universidad y trabajo
Google Cloud
Ejercicios resueltos de Google Cloud paso a paso, con el error que más se comete en cada uno: BigQuery, Cloud Run y más. Gratis y en español.
Preguntarle al tutor de Google CloudSin instalar nada. Puedes probar antes de crear cuenta.
Ejercicios resueltos de Google Cloud
Resueltos paso a paso, como te los explicaría el tutor, y con el error que más se comete.
BigQuery
Una cadena de droguerías guarda dos años de ventas en BigQuery: una tabla de 2 TB (2.048 GB) con 40 columnas de tamaño parecido, particionada por la columna fecha. Un analista corre «SELECT * FROM ventas LIMIT 10» para echarle un ojo, y después «SELECT producto, valor FROM ventas WHERE fecha BETWEEN ...» acotado a un mes. ¿Cuántos datos lee cada consulta?
Cómo se resuelve
- 1En BigQuery bajo demanda no se paga por las filas que salen sino por los bytes que se leen, y el almacenamiento es por columnas: solo se lee la columna que se nombra.
- 2Primera consulta. El asterisco nombra las 40 columnas, así que no se puede saltar ninguna. Y no hay filtro sobre la columna de partición, así que tampoco se puede saltar ninguna partición: lee los 2.048 GB completos.
- 3El LIMIT 10 no cambia nada. LIMIT recorta lo que se MUESTRA, después de leer; el trabajo de lectura, y la factura, son los mismos que si no estuviera.
- 4Segunda consulta. Hay que contar TODAS las columnas que la consulta nombra, no solo las del SELECT: producto y valor, más fecha, que aparece en el WHERE. Son 3 de las 40: 2.048 × (3 ÷ 40) = 2.048 × 0,075 = 153,6 GB.
- 5Encima el filtro cae sobre la columna de partición, así que solo se leen las particiones del mes pedido, 1 de los 24 meses guardados: 153,6 ÷ 24 = 6,4 GB.
- 6La diferencia entre las dos es de 2.048 ÷ 6,4 = 320 veces. Las dos consultas responden parecido de rápido para el analista; lo que cambia es que una cuesta trescientas veces más que la otra.
Respuesta: La primera lee los 2.048 GB completos. La segunda lee unos 6,4 GB: 320 veces menos.
El error de siempre: Creer que poner LIMIT abarata la consulta. No la abarata en nada: se lee todo y después se recorta. Para asomarse a una tabla está la pestaña de vista previa de la consola, que no lee ni cobra un byte. El otro descuido cuesta igual de caro: filtrar por una columna de fecha que NO es la columna de partición de la tabla. El resultado sale correcto, pero para saber qué filas cumplen hay que leer todas las particiones, así que se paga la tabla entera. Antes de escribir el WHERE hay que mirar por cuál columna está particionada la tabla.
Cloud Run
El backend de una aplicación de domicilios de Bogotá corre en Cloud Run. En hora pico recibe 600 peticiones por segundo y cada petición tarda 200 milisegundos en responder. ¿Cuántas instancias hacen falta con la concurrencia por instancia en 80? ¿Y si alguien la baja a 1 «para que las peticiones no se pisen»?
Cómo se resuelve
- 1Lo que hay que sostener no son las 600 peticiones por segundo, sino cuántas están abiertas AL MISMO TIEMPO. Eso se calcula multiplicando el ritmo de llegada por lo que dura cada una.
- 2600 peticiones por segundo × 0,2 segundos = 120 peticiones en vuelo en cualquier instante.
- 3La concurrencia es cuántas peticiones simultáneas atiende una instancia. Con 80: 120 ÷ 80 = 1,5, que redondeado hacia arriba son 2 instancias.
- 4Con la concurrencia en 1 cada instancia atiende una sola petición a la vez, así que hacen falta tantas instancias como peticiones simultáneas: 120 ÷ 1 = 120 instancias.
- 5Cloud Run cobra por tiempo de instancia, no por petición atendida. Pasar de 2 a 120 instancias es multiplicar esa parte de la factura por 60 sin que la aplicación responda un milisegundo más rápido.
- 6La concurrencia 1 solo se justifica si el código no es seguro para hilos (variables globales que se pisan entre peticiones) o si cada petición consume tanta memoria que dos no caben juntas. Si no es ninguno de los dos casos, bajarla es pagar de más por miedo.
- 7Aparte queda el arranque en frío: si la aplicación tarda en levantar, se fija un mínimo de instancias para que en hora pico siempre haya algunas calientes.
Respuesta: Con concurrencia 80 hacen falta 2 instancias. Con concurrencia 1 hacen falta 120: sesenta veces más máquinas y sesenta veces más costo, sin ganar nada de velocidad.
El error de siempre: Confundir «600 peticiones por segundo» con «600 peticiones al mismo tiempo». Lo que se dimensiona es el producto del ritmo por la duración; con respuestas de 200 ms esas 600 por segundo son apenas 120 simultáneas. Por el mismo camino, acelerar la respuesta reduce las instancias: si la petición baja de 200 a 100 ms, las simultáneas pasan de 120 a 60 y hace falta la mitad de infraestructura. Optimizar la consulta lenta suele salir más barato que subir el máximo de instancias.
¿Y si tu ejercicio no es ninguno de estos?
No hace falta buscar el ejercicio exacto en internet. Trae el tuyo, o pide los que te falten.
Todo esto es gratis y sin instalar nada. Puedes probar antes de crear cuenta.
Preguntas que le puedes hacer
- BigQueryExplícame «BigQuery» con un ejemplo práctico y dime en qué suele equivocarse la gente.
- Cloud RunExplícame «Cloud Run» con un ejemplo práctico y dime en qué suele equivocarse la gente.
Cómo enseña este tutor
Es riguroso y completo: justifica cada paso y nombra el teorema, la norma o la buena práctica que está aplicando, para que puedas citarla en tu trabajo o en el parcial.
- · Te muestra el camino completo, no solo el resultado.
- · Si algo no te cuadra, te lo explica otra vez de otra manera.
- · Con una foto de tu cuaderno te dice dónde está el error.
- · Te arma quizzes de lo que acabas de ver para saber si de verdad quedó.
Otras materias de Universidad y trabajo