Al llarg d'aquest mòdul hem desplegat el catàleg d'AlpinaShop de quatre maneres diferents: en màquines virtuals amb un grup gestionat, a App Engine amb un app.yaml, en contenidors sobre GKE Autopilot, i hem esmentat Cloud Run i Cloud Functions com a opcions que s'estudien més endavant. Totes funcionen. Totes serveixen la mateixa pàgina. I totes tenen implicacions molt diferents en cost, en esforç operatiu, en velocitat de desplegament i en la llibertat que tindràs d'aquí a tres anys.

Aquesta lliçó és la síntesi del mòdul. No introdueix serveis nous: et dóna el criteri per triar entre els que ja coneixes, amb una taula comparativa completa, preguntes de decisió que pots aplicar demà a la teva feina, un càlcul de cost transparent sobre el mateix escenari de trànsit, els patrons de migració habituals i, al final, l'arquitectura definitiva d'AlpinaShop, documentada i raonada, que sostindrà la resta del curs.

Contingut

  1. El continu d'abstracció
  2. Què guanyes i què perds en pujar de nivell
  3. Taula comparativa completa
  4. Les sis preguntes de decisió
  5. Cost comparat sobre un mateix escenari
  6. Patrons de migració: lift-and-shift, replatform, refactor
  7. Arquitectures híbrides: gairebé ningú no en tria un de sol
  8. L'arquitectura d'AlpinaShop en tancar el mòdul
  9. El que falta: la xarxa

  1. El continu d'abstracció

Els serveis de còmput de Google Cloud no són una llista d'opcions soltes: formen un continu. A cada esglaó cedeixes control a la plataforma i reps a canvi menys feina operativa.

graph LR
    A["Compute Engine<br/>VM<br/><i>gestiones el SO</i>"]
    B["GKE Standard<br/>Contenidors + nodes<br/><i>gestiones els nodes</i>"]
    C["GKE Autopilot<br/>Contenidors<br/><i>gestiones els pods</i>"]
    D["App Engine<br/>Codi + app.yaml<br/><i>gestiones el codi</i>"]
    E["Cloud Run<br/>Contenidor serverless<br/><i>gestiones el contenidor</i>"]
    F["Cloud Functions<br/>Funcio<br/><i>gestiones una funcio</i>"]

    A --> B --> C --> E --> F
    C --> D --> E

    style A fill:#e8eaf6,stroke:#3f51b5,color:#000
    style B fill:#e3f2fd,stroke:#1976d2,color:#000
    style C fill:#e0f7fa,stroke:#0097a7,color:#000
    style D fill:#e8f5e9,stroke:#388e3c,color:#000
    style E fill:#f1f8e9,stroke:#689f38,color:#000
    style F fill:#fffde7,stroke:#fbc02d,color:#000

Llegit d'esquerra a dreta:

  • Compute Engine. Tu dónes una imatge de disc i Google et dóna una màquina. Tota la resta —sistema operatiu, pedaços, runtime, servidor web, escalat, desplegament— és teva.
  • GKE Standard. Tu dónes contenidors i decideixes la mida i el nombre de nodes. Kubernetes col·loca els contenidors; tu mantens la flota de VM.
  • GKE Autopilot. Tu dónes contenidors i declares quants recursos demanen. Els nodes desapareixen de la teva vista.
  • App Engine. Tu dónes codi i un app.yaml. Desapareixen també els contenidors.
  • Cloud Run. Tu dónes un contenidor i una configuració mínima. Escala a zero, es factura per ús i no hi ha infraestructura visible.
  • Cloud Functions. Tu dónes una funció i un disparador. És la unitat de desplegament més petita possible.

Fixa't que hi ha dos camins cap a Cloud Run: des de contenidors (GKE) i des de codi (App Engine). Aquesta convergència no és casual, i explica per què Cloud Run s'ha convertit en el punt de trobada de tots dos mons.

  1. Què guanyes i què perds en pujar de nivell

En pujar de nivell... Guanyes Perds
Operació Menys feina de manteniment Menys capacitat de diagnòstic profund
Desplegament Més ràpid i amb menys passos Menys control sobre el procés
Escalat Automàtic i més fi Menys previsibilitat del comportament
Cost Pagues només el que utilitzes Pitjor preu per unitat amb ús molt alt i constant
Seguretat Superfície d'atac menor, pedaços inclosos Menys capacitat d'aplicar controls propis
Arrencada (empitjora) Apareixen les arrencades en fred
Estat Disc local, processos llargs, sessions en memòria
Portabilitat Depèn: contenidors sí, formats propis no Risc d'acoblament al proveïdor

Dos matisos que eviten conclusions simplistes:

Més abstracció no sempre és més barat. Una càrrega constant 24×7 surt més barata a Compute Engine amb descompte per ús compromès que en un servei serverless facturat per petició. El serverless guanya amb trànsit intermitent o molt variable, que és precisament el cas d'AlpinaShop.

Més abstracció no sempre és menys portable. Un contenidor a Cloud Run és tan portable com a GKE: la mateixa imatge corre a tots dos, al teu portàtil i en un altre núvol. El que lliga no és el nivell d'abstracció, sinó el format propietari: l'app.yaml d'App Engine o les signatures específiques de Cloud Functions.

  1. Taula comparativa completa

Criteri Compute Engine GKE Standard GKE Autopilot App Engine estàndard App Engine flexible Cloud Run Cloud Functions
Unitat de desplegament Imatge de disc / VM Contenidor Contenidor Codi + app.yaml Contenidor Contenidor Funció
Escalat a zero No No No (mínim 1 pod) No
Arrencada en fred No (sempre encesa) No No Sí (1–3 s) No Sí (100 ms–2 s) Sí (100 ms–3 s)
Model de facturació Per VM/hora Per nodes + pla de control Per recursos sol·licitats pels pods Per hores d'instància Per VM/hora Per CPU-segon, memòria-segon i peticions Per invocació, GB-s i GHz-s
Portabilitat Mitjana (imatge de VM) Alta Alta Baixa Mitjana Alta Baixa
Temps màx. d'execució Il·limitat Il·limitat Il·limitat 10 min (auto) / 24 h 60 min 60 min (HTTP) / 24 h (jobs) 60 min
Esforç operatiu Alt Alt Mitjà Baix Mitjà Molt baix Molt baix
Control del SO Total Alt (nodes) Baix Cap Mitjà Cap (imatge sí) Cap
Estat al disc local Sí (persistent) Sí (volums) Sí (volums) Només /tmp Sí (efímer) Només /tmp (memòria) Només /tmp (memòria)
Concurrència per instància La que configuris La que configuris La que configuris Configurable Configurable Fins a 1000 1 (per defecte)
GPU / maquinari especial Limitat No No Sí (amb restriccions) No
Corba d'aprenentatge Baixa Alta Mitjana Baixa Mitjana Baixa Molt baixa
Millor per a Lift-and-shift, control total, càrregues 24×7 Microserveis complexos, multinúvol Microserveis sense equip de plataforma Web senzill en llenguatge suportat Llegat que necessita contenidor API i web amb trànsit variable Esdeveniments, integracions, tasques curtes

Dues files mereixen un comentari addicional.

Concurrència per instància. És el paràmetre més mal interpretat i el que més diners mou. Cloud Run pot atendre fins a 1000 peticions simultànies en una mateixa instància; Cloud Functions n'atén una de sola per defecte. Per a una aplicació que passa el temps esperant la base de dades, una concurrència alta significa moltes menys instàncies i una factura molt menor. Per a una aplicació que consumeix CPU, pujar-la degrada la latència de tothom.

Arrencada en fred. Existeix sempre que es pugui escalar a zero. Es mitiga amb instàncies mínimes, però això elimina precisament l'avantatge de l'escalat a zero. És un compromís, no un problema amb solució.

  1. Les sis preguntes de decisió

A la pràctica, l'elecció es resol responent sis preguntes en ordre.

1. Necessites control del sistema operatiu o maquinari especial? Kernel concret, controladors, GPU, programari amb llicència lligada a maquinari, agents de seguretat corporatius, processos que han de veure l'amfitrió. Si la resposta és sí → Compute Engine (o GKE Standard si a més vols contenidors). Si no, continua.

2. Tens contenidors, o estàs disposat a tenir-ne? Si no i no vols aprendre'n ara → App Engine estàndard o Compute Engine. Si sí → continua, s'obre tota la resta. Val la pena insistir-hi: contenidoritzar és la inversió amb millor retorn de tot el mòdul, perquè la mateixa imatge funciona a Cloud Run, a GKE, al teu portàtil i en un altre núvol.

3. Necessites estat local persistent o processos molt llargs? Sessions en memòria, disc local amb dades, processos d'hores, servidors amb connexions de llarga durada. Si sí → Compute Engine o GKE. Si no → continua.

4. El trànsit és intermitent o molt variable? Si el trànsit cau a gairebé zero de nit o té pics estacionals de deu a un → Cloud Run (escala a zero, es paga per ús). Si és constant i elevat 24×7 → Compute Engine o GKE amb descomptes per ús compromès surten millor.

5. És una unitat de treball petita disparada per un esdeveniment? Un fitxer que arriba a un bucket, un missatge a Pub/Sub, un webhook, una tasca programada → Cloud Functions. Si és un servei amb diverses rutes i una API → Cloud Run.

6. Et preocupa la dependència del proveïdor? Si és un criteri real de la teva organització → contenidors (Cloud Run o GKE), que s'executen a qualsevol lloc. Evita app.yaml i les signatures propietàries de funcions.

I una regla transversal que resumeix l'estat de l'art el 2026: si tens una aplicació web o una API contenidoritzable i cap de les restriccions anteriors no s'aplica, Cloud Run és la resposta per defecte. És el consell que dóna el mateix Google, i aquest curs el subscriu.

  1. Cost comparat sobre un mateix escenari

Comparar preus de catàleg no serveix de res; cal comparar el cost d'una càrrega concreta. Fem servir la d'AlpinaShop:

Escenari. El catàleg d'AlpinaShop rep:

  • 500.000 peticions al mes en un mes normal (unes 0,2 peticions/segon de mitjana).
  • Distribució molt desigual: 80 % del trànsit entre les 9:00 i les 23:00; pràcticament res de matinada.
  • Pics de campanya: fins a 20 peticions/segon durant unes 40 hores repartides a la tardor.
  • Cada petició consumeix uns 150 ms de CPU i 300 MiB de memòria.
  • L'aplicació necessita ~0,25 vCPU i 512 MiB per instància.
Opció Configuració Cost mensual orientatiu Comentari
Compute Engine (MIG) 2 × e2-medium 24×7 + balancejador ~50 € (VM) + ~20 € (balancejador) ≈ 70 € Pagues 24 hores al dia per capacitat que de matinada no utilitzes. Amb descompte per ús compromès a 1 any baixaria a ~50 €
GKE Autopilot 3 pods de 0,25 vCPU / 512 MiB + pla de control ~35 € (pods) + ~65 € (pla de control) ≈ 100 € El pla de control domina el cost a aquesta escala. GKE compensa quan hi ha molts serveis compartint el clúster
App Engine estàndard F2, min_instances: 1, max: 10 ~35–45 € Raonable; el mínim d'una instància calenta és gairebé tot el cost
App Engine estàndard F2, min_instances: 0 ~5–10 € Molt barat, a canvi d'arrencades en fred a la primera visita després de cada període d'inactivitat
Cloud Run 0,5 vCPU / 512 MiB, concurrència 80, min-instances: 0 ~5–8 € Escala a zero de matinada; els pics s'absorbeixen sols. L'opció més barata amb diferència
Cloud Run Igual però amb min-instances: 1 ~20–25 € Elimina l'arrencada en fred mantenint un cost baix
Cloud Functions Per invocació ~10–15 € Similar, però pitjor encaix: un web amb diverses rutes no és una funció

Xifres orientatives per a europe-west1 a 2026, arrodonides, amb l'únic fi de mostrar l'ordre de magnitud i la manera de raonar. No inclouen Cloud SQL, Cloud Storage, egress ni CDN, que són comuns a totes les opcions i que en aquest escenari superen el mateix còmput. Verifica sempre a la calculadora oficial de Google Cloud abans de prendre una decisió.

Les conclusions que cal extreure'n, que valen més que els números:

  • L'escalat a zero importa quan el trànsit és desigual. AlpinaShop no té trànsit vuit hores al dia; pagar per capacitat encesa durant aquest temps és pur malbaratament.
  • El pla de control de GKE és un cost fix rellevant a escala petita. No el posis per desplegar un sol servei; sí quan hi hagi deu serveis compartint-lo, moment en què aquest cost es dilueix.
  • La concurrència mana a Cloud Run. Amb concurrència 80, un pic de 20 peticions per segon s'atén amb molt poques instàncies. Si la baixessis a 1, en necessitaries vint vegades més i el cost es multiplicaria.
  • El còmput no sol ser la partida més gran. En aquest escenari, Cloud SQL amb alta disponibilitat costa força més que qualsevol de les opcions de còmput. Optimitzar el còmput abans que la base de dades i l'egress és començar pel lloc equivocat. La disciplina completa d'optimització de costos és a 07-05.

  1. Patrons de migració: lift-and-shift, replatform, refactor

Quan una empresa mou una aplicació existent al núvol, hi ha tres estratègies, i la majoria de migracions reeixides les recorren en ordre.

Patró Què és Esforç Benefici Risc
Lift-and-shift (rehost) Moure tal qual a VM, sense canviar l'aplicació Baix Baix: surts del maquinari propi, guanyes elasticitat bàsica Baix
Replatform Canviar peces d'infraestructura sense tocar la lògica: base de dades gestionada, objectes a Storage, contenidors Mitjà Alt: elimines la major part de la feina operativa Mitjà
Refactor (rearquitectura) Redissenyar l'aplicació: microserveis, esdeveniments, serverless Alt Molt alt a llarg termini Alt

Per què l'ordre importa. Intentar refactoritzar i migrar alhora és la recepta clàssica del projecte que no s'acaba: quan alguna cosa falla, no saps si és pel canvi d'arquitectura o pel canvi de plataforma. Separar les variables redueix el risc dràsticament.

El recorregut d'AlpinaShop en aquest mòdul ha estat exactament aquest:

  1. Lift-and-shift (02-01): el catàleg Flask a una VM alpinashop-web-1 amb un startup script, i després a un grup gestionat amb escalat automàtic. L'aplicació no va canviar ni una línia.
  2. Replatform (02-02, 02-03, 02-06): les imatges van sortir del disc local al bucket alpinashop-catalogo; la base de dades tienda va passar a la instància gestionada alpinashop-pedidos amb alta disponibilitat i còpies; la cistella i les sessions es van moure a Firestore. La lògica de negoci continua sent la mateixa; el que va canviar és on viu cada cosa.
  3. Refactor (en curs): contenidoritzar l'aplicació, que ja vam fer per a GKE a 02-05, i desacoblar la feina asíncrona amb cues i esdeveniments, que vam començar a veure amb Cloud Tasks a 02-04 i completarem amb Pub/Sub a 04-04.

Per què AlpinaShop comença a Compute Engine però es dirigeix cap a contenidors. Començar en VM va ser el correcte: va permetre migrar en un cap de setmana sense reescriure res, amb un risc mínim i amb la possibilitat de tornar enrere. Però el destí són els contenidors, per tres raons que ja hem comprovat al llarg del mòdul:

  • La imatge de contenidor és portable. La mateixa que corre a GKE corre a Cloud Run, al portàtil del Dani i, si algun dia calgués, en un altre proveïdor.
  • El desplegament es torna trivial i reversible. Davant de plantilles d'instància versionades, startup scripts i imatges de disc, un contenidor es desplega i es reverteix amb una comanda.
  • La inversió s'acumula. Aprendre contenidors serveix a tots els serveis i a tota la indústria; aprendre app.yaml serveix a App Engine.

  1. Arquitectures híbrides: gairebé ningú no en tria un de sol

La pregunta "quin servei de còmput utilitzo?" està mal plantejada si es fa una sola vegada per a tot el sistema. Es fa per càrrega de treball, i el normal és acabar amb uns quants.

Una arquitectura completa i realista per a AlpinaShop en combina quatre:

graph TD
    U((Clients)) --> LB[Balancejador HTTPS global<br/>+ Cloud CDN + Cloud Armor<br/><i>modul 3</i>]

    LB --> CR[Cloud Run<br/>alpinashop-web<br/><i>cataleg i checkout</i>]
    LB --> ST[Cloud Storage<br/>alpinashop-catalogo<br/><i>imatges</i>]

    CR --> SQL[(Cloud SQL<br/>alpinashop-pedidos)]
    CR --> FS[(Firestore<br/>cistelles i sessions)]
    CR --> PS[Pub/Sub<br/>pedidos-nuevos]

    PS --> CF[Cloud Functions<br/>correu de confirmacio]
    PS --> CF2[Cloud Functions<br/>miniatures d'imatge]

    SCH[Cloud Scheduler] --> JOB[Cloud Run Job<br/>exportacio nocturna]
    JOB --> BQ[(BigQuery<br/>alpinashop_analitica)]

    GPU[Compute Engine Spot<br/>reprocessament d'imatges] -.-> ST

Repartiment i motiu:

Càrrega Servei Motiu
Catàleg web i checkout Cloud Run Trànsit variable, escala a zero, contenidor portable
Enviament de correus, generació de miniatures Cloud Functions Disparades per esdeveniments, execució curta, codi mínim
Exportació nocturna a BigQuery Cloud Run Jobs + Cloud Scheduler Tasca per lots que acaba; reutilitza la mateixa imatge
Reprocessament massiu de les 60.000 imatges Compute Engine Spot CPU intensiva, tolerant a interrupció, cost mínim
Serveis interns futurs GKE Autopilot Només si arriben a ser molts i compartir clúster compensa

Aquesta barreja no és indecisió: és utilitzar l'eina adequada per a cada feina. El cost de la varietat és haver de conèixer diversos serveis; el benefici és no forçar cap càrrega a un model que no li encaixa.

  1. L'arquitectura d'AlpinaShop en tancar el mòdul

Aquesta és la decisió documentada que tanca el mòdul 2 i que servirà de base per a la resta del curs.

Estat actual (el que s'ha construït en aquest mòdul):

Component Recurs Estat
Jerarquia Organització alpinashop.example, carpetes produccion/desarrollo/compartido En marxa (01-04)
Projectes alpinashop-prod, alpinashop-dev, alpinashop-datos, alpinashop-cicd En marxa (01-04)
Regió europe-west1, zona europe-west1-b Decidida (01-05)
Còmput actual VM alpinashop-web-1 + MIG regional amb escalat automàtic 2–10 Funcionant (02-01)
Imatges Bucket alpinashop-catalogo, regional, accés uniforme, cicle de vida Migrat (02-02)
Base de dades Cloud SQL alpinashop-pedidos, PostgreSQL 16, HA regional, PITR, rèplica de lectura Migrada (02-03)
Cistella i sessions Firestore Native, col·leccions carritos i sesiones amb TTL Dissenyat (02-06)
Contenidor Imatge a Artifact Registry europe-west1-docker.pkg.dev/alpinashop-prod/alpinashop/catalogo Construïda (02-05)
Clúster GKE Autopilot alpinashop-cluster Creat i validat (02-05)

Decisió d'arquitectura objectiu:

  1. El catàleg web (alpinashop-web) anirà a Cloud Run. Trànsit intermitent amb pics estacionals, contenidor ja construït, escala a zero, cost molt inferior a les alternatives i sense acoblament al proveïdor. Es configurarà amb min-instances: 1 en producció per evitar arrencades en fred a la primera visita, i concurrència alta perquè l'aplicació passa la major part del temps esperant la base de dades. Cloud Run s'estudia a 07-02.

  2. El clúster alpinashop-cluster es conserva com a plataforma per als serveis interns que vagin apareixent (tauler d'administració, integració amb l'ERP, processos de sincronització d'estoc). Quan n'hi hagi tres o més, el cost del pla de control quedarà amortitzat. Mentrestant, es manté apagat o reduït al mínim.

  3. Compute Engine es conserva per a feina per lots amb VM Spot: reprocessament d'imatges, proves de càrrega, tasques puntuals de CPU intensiva.

  4. App Engine queda descartat, de manera raonada: funciona bé, però el seu format propi no és portable i la inversió no s'acumula. Es coneix, s'ha provat i es descarta.

  5. Cloud Functions es reserva per a la feina dirigida per esdeveniments: correu de confirmació de comanda, generació de miniatures en pujar una imatge al bucket, webhooks de la passarel·la de pagament (06-03).

  6. Les dades queden com es va decidir a 02-06: Cloud SQL per a productes, comandes i clients; Firestore per a cistella i sessions; Cloud Storage per a imatges; Memorystore com a memòria cau de portada; Pub/Sub i BigQuery per a la telemetria, amb Bigtable descartat per ara.

Ruta de migració acordada amb la Marta, el Dani i la Lucía:

Fase Acció Mòdul del curs
Fet Lift-and-shift a VM, imatges a Storage, base de dades a Cloud SQL Mòdul 2
Següent Xarxa privada, balancejador HTTPS, CDN, IAM i secrets Mòdul 3
Després Analítica a BigQuery, esdeveniments amb Pub/Sub Mòdul 4
Després CI/CD amb Cloud Build, monitoratge, Terraform Mòdul 6
Destí Catàleg a Cloud Run, serveis interns a GKE, SLO definits Mòdul 7

  1. El que falta: la xarxa

Repassa el que s'ha construït en aquest mòdul amb ull crític i hi trobaràs un problema seriós.

La VM alpinashop-web-1 té una IP pública i el port 80 obert a tot internet. Les instàncies del grup gestionat, també. El Service de tipus LoadBalancer de GKE va exposar una IP pública directa, sense HTTPS. La instància de Cloud SQL, si es va crear amb IP pública i xarxes autoritzades, és abastable des de fora. Els buckets estan ben protegits, però les URL signades viatgen per HTTP si algú les utilitza malament. No hi ha cap nom de domini propi, cap certificat TLS, cap protecció davant d'atacs de denegació de servei ni davant d'injecció SQL, i cap separació de xarxa entre el que ha de ser públic (el catàleg) i el que mai no hauria de ser-ho (la base de dades).

Dit sense embuts: hem construït una botiga funcional i l'hem deixada amb la porta oberta i sense rètol a la façana. Tot el d'aquest mòdul estava bé per aprendre i per provar; res d'això no és publicable tal qual.

Això és exactament el que resol el mòdul 3.

Errors habituals i consells

  • Triar el servei abans d'entendre la càrrega. El patró de trànsit, la durada de les peticions i la necessitat d'estat determinen la resposta; el gust personal, no.
  • Triar Kubernetes per defecte. És una eina excel·lent per a molts serveis i equips amb capacitat de plataforma. Per a un servei i una persona, és sobrecàrrega pura.
  • Comparar preus de catàleg en lloc de cost de la càrrega. El preu per vCPU-hora no diu res si no saps quantes hores necessitaràs.
  • Oblidar el cost del pla de control de GKE en comparar amb alternatives serverless a escala petita.
  • Deixar la concurrència de Cloud Run a 1 "per seguretat". Multiplica el nombre d'instàncies i el cost.
  • Refactoritzar i migrar alhora. Quan falli alguna cosa, no sabràs quin canvi ho ha causat.
  • Quedar-se per sempre al lift-and-shift. És un punt de partida legítim i un destí dolent: continues mantenint servidors.
  • Acceptar acoblament al proveïdor sense decidir-ho. Si l'has d'assumir, que sigui una decisió conscient i anotada, no un accident.
  • Consell: contenidoritza encara que no hagis d'utilitzar Kubernetes. És el que més opcions t'obre per menys esforç.
  • Consell: decideix per càrrega de treball, no per sistema. Una arquitectura amb Cloud Run, funcions i VM Spot no és incoherent: és apropiada.
  • Consell: documenta i data cada decisió d'arquitectura, amb les alternatives descartades i el motiu. És el que permet revisar-la amb criteri d'aquí a un any.
  • Consell: mesura abans d'optimitzar. Gairebé sempre la despesa és on no l'esperes, i poques vegades al còmput.

Exercicis

Exercici 1: triar servei per a cinc càrregues

Per a cada càrrega d'AlpinaShop, tria el servei de còmput, indica una alternativa raonable i justifica la decisió aplicant les sis preguntes de l'apartat 4:

  1. Una API REST d'estoc que consulten els proveïdors, amb trànsit irregular i molt baix de nit.
  2. Un procés que, cada vegada que es puja una imatge al bucket, genera la miniatura i la versió web.
  3. Un servidor de sincronització amb l'ERP local que manté una connexió permanent i desa estat al disc.
  4. El tauler intern d'administració, utilitzat per 8 persones en horari d'oficina.
  5. Un reprocessament puntual de les 60.000 imatges que triga 3 hores i es pot reintentar.

Exercici 2: comparativa de cost raonada

Un servei intern d'AlpinaShop rep 100.000 peticions al mes, cadascuna de 200 ms de CPU, necessita 0,5 vCPU i 1 GiB de memòria, i el seu trànsit es concentra en horari d'oficina (unes 9 hores al dia, 22 dies al mes).

  1. Estima el cost a Compute Engine amb una VM encesa 24×7.
  2. Estima el cost si s'apaga fora d'horari.
  3. Estima el cost a Cloud Run amb escalat a zero.
  4. Indica a partir de quin volum de trànsit Compute Engine començaria a ser competitiu.
  5. Enumera quins costos has deixat fora del càlcul i per què poden invertir la conclusió.

Exercici 3: documentar una decisió d'arquitectura

Redacta el document de decisió d'arquitectura del catàleg d'AlpinaShop, amb aquesta estructura:

  1. Context: situació de partida i restriccions.
  2. Opcions considerades: almenys quatre, amb un avantatge i un inconvenient de cadascuna.
  3. Decisió: què es tria i amb quina configuració concreta.
  4. Conseqüències: què millora, què empitjora i què queda pendent.
  5. Criteris de revisió: què hauria de passar per reconsiderar-la.

Solucions

Solució 1

Càrrega Elecció Alternativa Justificació
1. API d'estoc Cloud Run App Engine estàndard P1 no (sense necessitats de SO), P2 sí (contenidoritzable), P3 no (sense estat), P4 (trànsit irregular, gairebé nul de nit), P5 no (és una API amb rutes, no un esdeveniment), P6 sí (contenidor portable). Escalat a zero i facturació per ús
2. Miniatures en pujar imatge Cloud Functions Cloud Run amb disparador d'Eventarc P5 : unitat de treball petita disparada per un esdeveniment de Cloud Storage. Codi mínim, sense servidor per mantenir. Si el processament fos pesat o necessités llibreries del sistema, Cloud Run amb contenidor propi
3. Sincronització amb l'ERP Compute Engine GKE Standard amb volum persistent P3 : connexió permanent i estat al disc local. Els serveis serverless no hi encaixen: reciclen instàncies i només ofereixen /tmp en memòria
4. Tauler intern Cloud Run amb min-instances: 0 App Engine estàndard amb basic_scaling Trànsit baix i concentrat; vuit persones toleren perfectament una arrencada en fred d'un segon. Cost pràcticament nul fora d'horari
5. Reprocessament de 60.000 imatges Compute Engine Spot Cloud Run Jobs amb paral·lelisme P1 no, però P4 i el perfil de la tasca manen: CPU intensiva, tolerant a interrupció, llarga durada. Spot redueix el cost entre un 60 i un 90 % i el resultat va a Cloud Storage, així que perdre la instància només implica reintentar

Solució 2

Dades de l'escenari:
- 100.000 peticions/mes x 0,2 s de CPU = 20.000 s de CPU al mes
- Necessita 0,5 vCPU i 1 GiB
- Activitat: 9 h/dia x 22 dies = 198 h/mes (de 730 h del mes)

1. Compute Engine 24×7. Una e2-small (2 vCPU compartides, 2 GiB) volta els 13–15 €/mes, més uns 2 € del disc balancejat de 20 GB: ≈ 16 €/mes. Es paga la màquina les 730 hores del mes, encara que només s'utilitzi durant 198.

2. Compute Engine apagada fora d'horari. Amb 198 hores encesa de 730, el cost de còmput baixa a un 27 %: uns 4 €. El disc es continua pagant sencer (≈2 €), perquè els discos facturen estiguin o no enceses les màquines. Total: ≈ 6 €/mes, més la feina d'automatitzar l'encesa i l'apagada amb Cloud Scheduler i una funció.

3. Cloud Run amb escalat a zero. Facturació aproximada:

CPU:      20.000 s x 0,5 vCPU = 10.000 vCPU-s
Memoria:  20.000 s x 1 GiB    = 20.000 GiB-s
Peticions: 100.000

Als preus orientatius d'europe-west1, tot això queda a l'entorn d'1–2 €/mes, i una part important pot caure dins del nivell gratuït mensual de Cloud Run. És entre 3 i 10 vegades més barat que les opcions anteriors, sense cap feina d'automatització.

4. Quan comença a compensar Compute Engine? Quan la màquina estigui ocupada de manera sostinguda. El punt d'equilibri arriba aproximadament quan l'ús de CPU facturat a Cloud Run s'acosta a tenir una vCPU ocupada de manera contínua: de l'ordre de diversos milions de peticions al mes amb aquest perfil, o qualsevol càrrega que mantingui la CPU treballant 24 hores al dia. Afegint-hi un descompte per ús compromès a un o tres anys, aquest llindar baixa força. La regla mental és clara: el serverless guanya amb trànsit intermitent; les VM guanyen amb càrrega constant i alta.

5. Costos deixats fora, i per què poden canviar la conclusió:

  • Balancejador de càrrega i IP estàtica (~18–20 €/mes a Compute Engine). Cloud Run inclou endpoint HTTPS gestionat, cosa que amplia encara més el seu avantatge.
  • Egress i CDN, comuns a totes les opcions, però que en una botiga amb imatges superen el còmput.
  • Cloud SQL, que en aquest escenari costa més que qualsevol de les opcions de còmput comparades.
  • El temps de les persones. Mantenir una VM (pedaços, monitoratge, automatització d'encesa) són hores de la Marta. Si es valoren a preu de mercat, l'estalvi de 10 €/mes de l'opció 2 desapareix amb la primera hora de feina al mes.
  • Descomptes per ús compromès i per ús sostingut, que només s'apliquen a Compute Engine i GKE i poden reduir el seu cost entre un 20 i un 55 %.

Aquest últim punt és el més important i el que més s'oblida: el cost d'una arquitectura no és només la seva factura.

Solució 3

DA-001 — Servei de còmput del catàleg web d'AlpinaShop Data: 2026-08-05 · Autors: Marta (infraestructura), Dani (backend) · Estat: acceptada

1. Context. El catàleg web és una aplicació Flask en Python amb PostgreSQL, actualment desplegada en un grup d'instàncies gestionat de Compute Engine després del lift-and-shift. El trànsit és intermitent: pràcticament nul de matinada, amb pics de fins a 20 peticions per segon a les campanyes de tardor. L'equip d'infraestructura és d'una persona. L'aplicació ja està contenidoritzada i la seva imatge publicada a Artifact Registry. No requereix estat al disc local ni accés al sistema operatiu. Restriccions: minimitzar la feina operativa, evitar l'acoblament al proveïdor i contenir el cost fora de campanya.

2. Opcions considerades.

Opció Avantatge Inconvenient
Compute Engine + MIG (situació actual) Control total; ja funciona Cost 24×7; manteniment de SO, plantilles i startup scripts a càrrec d'una sola persona
App Engine estàndard Desplegament molt simple; escala a zero Format propietari no portable; runtimes limitats; la inversió no s'acumula
GKE Autopilot Contenidors portables; base per a futurs serveis Cost fix del pla de control; complexitat injustificada per a un únic servei
Cloud Run Escala a zero; facturació per ús; contenidor portable; HTTPS gestionat; mínim esforç operatiu Arrencades en fred si min-instances: 0; sense estat local; màxim 60 minuts per petició

3. Decisió. Desplegar alpinashop-web a Cloud Run, a europe-west1, amb la imatge europe-west1-docker.pkg.dev/alpinashop-prod/alpinashop/catalogo, etiquetada amb el hash del commit. Configuració: min-instances: 1 i max-instances: 50 en producció; min-instances: 0 en desenvolupament; concurrència 80; 1 vCPU i 512 MiB per instància; connexió a Cloud SQL mitjançant el connector; credencials resoltes pel compte de servei adjunt; secrets a Secret Manager. El clúster alpinashop-cluster es conserva per a futurs serveis interns. Compute Engine es manté únicament per a feina per lots amb VM Spot.

4. Conseqüències. Millora: desapareixen el manteniment del sistema operatiu, les plantilles d'instància i els startup scripts; el cost de còmput baixa aproximadament un ordre de magnitud fora de campanya; els desplegaments i els rollbacks passen a ser immediats amb divisió de trànsit entre revisions; s'obté HTTPS gestionat sense configurar res. Empitjora: es perd el control del sistema operatiu i la capacitat de diagnòstic a baix nivell; apareix la possibilitat d'arrencades en fred en desenvolupament; les tasques de més de 60 minuts s'han d'executar fora de Cloud Run. Pendent: balancejador HTTPS global amb domini propi, Cloud CDN, Cloud Armor i xarxa privada cap a Cloud SQL (mòdul 3); pipeline de desplegament automatitzat (mòdul 6).

5. Criteris de revisió. Es reconsiderarà aquesta decisió si: el nombre de serveis interns supera tres, cas en què GKE Autopilot amortitza el seu pla de control i podria absorbir també el catàleg; el trànsit passa a ser constant i elevat 24×7, escenari en què Compute Engine o GKE amb descomptes per ús compromès resultarien més econòmics; apareix un requisit d'estat local o de processos de més de 60 minuts; o l'arrencada en fred afecta mètriques de negoci malgrat min-instances: 1. Revisió programada: agost de 2027, o abans si es compleix algun dels criteris anteriors.

Conclusió

Tanquem el mòdul 2 amb criteri, que és el que distingeix conèixer una plataforma de saber-la utilitzar. Has vist que els serveis de còmput de Google Cloud formen un continu d'abstracció —de la màquina virtual a la funció— i que a cada esglaó cedeixes control a canvi de feina operativa. Saps què es guanya i què es perd en pujar de nivell, i també els dos matisos que eviten les conclusions fàcils: més abstracció no sempre és més barat, perquè una càrrega constant 24×7 surt millor en VM amb compromís d'ús, i més abstracció no sempre és menys portable, perquè el que lliga no és el nivell sinó el format propietari.

Tens una taula comparativa completa de set opcions amb criteris que es poden mesurar —unitat de desplegament, escalat a zero, arrencada en fred, facturació, portabilitat, temps màxim, esforç operatiu, concurrència— i sis preguntes de decisió que pots aplicar demà a qualsevol càrrega: control del sistema operatiu, contenidors, estat i durada, patró de trànsit, dispar per esdeveniments i dependència del proveïdor. Has fet un càlcul de cost transparent sobre l'escenari real d'AlpinaShop i n'has extret les lliçons que importen més que els números: l'escalat a zero mana quan el trànsit és desigual, el pla de control de GKE és un cost fix rellevant a escala petita, la concurrència governa el cost a Cloud Run, i el còmput poques vegades és la partida més gran de la factura. Has recorregut els tres patrons de migració i has entès per què separar la migració del redisseny redueix el risc, i per què AlpinaShop va començar a Compute Engine però es dirigeix cap a contenidors. I has vist que la pregunta correcta no es fa una vegada per a tot el sistema, sinó una vegada per càrrega de treball: l'arquitectura objectiu combina Cloud Run, Cloud Functions, Cloud Run Jobs, VM Spot i un clúster de GKE en reserva.

Repassant el mòdul sencer: vam crear màquines virtuals amb plantilles, grups gestionats regionals, escalat automàtic i reparació automàtica; vam moure els 60 GB d'imatges al bucket alpinashop-catalogo amb classes d'emmagatzematge, cicle de vida, versionatge i URL signades; vam migrar la base de dades tienda a alpinashop-pedidos amb alta disponibilitat regional, PITR i rèplica de lectura; vam provar App Engine amb el seu app.yaml, la seva divisió de trànsit i el seu cron, i el vam descartar amb arguments; vam contenidoritzar l'aplicació, la vam publicar a Artifact Registry i la vam desplegar a alpinashop-cluster sobre GKE Autopilot amb HPA, sondes, secrets i actualitzacions sense tall; vam repartir les dades entre Cloud SQL, Firestore, Memorystore, Cloud Storage i BigQuery amb un arbre de decisió; i hem acabat documentant i datant l'arquitectura completa. La migració d'AlpinaShop ja no és un pla: és infraestructura que funciona.

I acaba amb un problema evident. Tot el que hem construït està exposat: la VM té el port 80 obert a internet, el Service de GKE va publicar una IP sense HTTPS, la base de dades és abastable des de fora, no hi ha domini propi ni certificat, no hi ha protecció davant d'atacs i no existeix separació de xarxa entre el que ha de ser públic i el que mai no hauria de ser-ho. Al mòdul 3, Xarxes i seguretat, ho arreglem d'arrel: dissenyarem la xarxa VPC d'AlpinaShop amb subxarxes i regles de tallafoc, posarem un balancejador de càrrega HTTPS global davant del catàleg, accelerarem les imatges amb Cloud CDN, repartirem permisos amb IAM aplicant el mínim privilegi a la Marta, el Dani i la Lucía, protegirem la botiga amb Cloud Armor, desarem les credencials a Secret Manager amb xifratge gestionat per Cloud KMS, i publicarem alpinashop.example amb Cloud DNS i certificats TLS gestionats. El que avui funciona passarà a ser, a més, publicable.

Curs de Google Cloud Platform (GCP)

Mòdul 1: Introducció a Google Cloud Platform

Mòdul 2: Serveis principals de GCP

Mòdul 3: Xarxes i seguretat

Mòdul 4: Dades i anàlisi

Mòdul 5: Aprenentatge automàtic i IA

Mòdul 6: DevOps i monitoratge

Mòdul 7: Temes avançats de GCP

Mòdul 8: Projecte final

© Copyright 2026. Tots els drets reservats