Quan crees un recurs a Google Cloud, gairebé sempre has de decidir on viu. Aquesta decisió, que la consola presenta com un simple desplegable, condiciona la latència que pateixen els teus clients, el preu que pagues, quins serveis tens disponibles, si compleixes la normativa de protecció de dades i què passa quan falla un centre de dades. No és un detall de configuració: és una decisió d'arquitectura que després costa molt de revertir.

En aquesta lliçó aprendrem la geografia de Google Cloud i què significa que un servei sigui zonal, regional, multiregional o global; per què la xarxa troncal privada de Google i els seus punts de presència importen per a la latència; quins criteris fer servir per triar regió, aplicats a la decisió real d'AlpinaShop entre europe-west1 i europe-southwest1; què protegeix desplegar en diverses zones i què exigeix el multiregió; i com es reparteix la responsabilitat entre Google i tu segons el tipus de servei, incloent-hi com es llegeixen els SLA i per què un SLA no promet que res falli mai.

Contingut

  1. La geografia de Google Cloud
  2. Abast dels serveis: zonal, regional, multiregional i global
  3. La xarxa troncal privada i els punts de presència
  4. Com triar regió: els cinc criteris
  5. La decisió d'AlpinaShop: europe-west1 davant d'europe-southwest1
  6. Dominis de fallada i disponibilitat
  7. El model de responsabilitat compartida
  8. SLA i crèdits de servei

  1. La geografia de Google Cloud

Google Cloud organitza la seva infraestructura física en tres nivells:

Nivell Què és Exemple Aïllament davant de fallades
Zona Un domini de fallada dins d'una regió. Aproximadament un centre de dades o una part aïllada d'un europe-west1-b Un tall elèctric, una fallada de xarxa o un incendi afecten una zona
Regió Un conjunt de zones (normalment 3, de vegades més) a la mateixa àrea geogràfica, connectades amb molt baixa latència entre si europe-west1 (Saint-Ghislain, Bèlgica) Un desastre natural o un tall regional pot afectar tota la regió
Multiregió Una agrupació àmplia de regions per a serveis que repliquen dades entre elles EU, US, ASIA Sobreviu a la pèrdua completa d'una regió

Detalls importants:

  • Les zones d'una regió són molt a prop les unes de les altres, amb latències de xarxa típicament inferiors al mil·lisegon. Això permet replicació síncrona entre zones sense penalització perceptible: és la base de l'alta disponibilitat regional.
  • Les lletres de zona no són estables entre projectes. La zona europe-west1-b del teu projecte i la d'un altre client poden correspondre a maquinari físic diferent. Google fa aquesta assignació deliberadament per repartir la càrrega.
  • La latència entre regions sí que és significativa. Entre europe-west1 i europe-southwest1 hi ha de l'ordre d'una desena de mil·lisegons; entre Europa i els Estats Units, al voltant de 100 ms. Qualsevol arquitectura que creui regions al camí crític d'una petició ho notarà.

Noms de les regions europees més rellevants per a una empresa espanyola:

Regió Ubicació Notes
europe-west1 Saint-Ghislain (Bèlgica) Una de les més antigues i completes d'Europa; bon preu i catàleg
europe-southwest1 Madrid (Espanya) Menor latència des d'Espanya; dades en territori espanyol
europe-west4 Eemshaven (Països Baixos) Molt completa, popular per a càrregues de dades i IA
europe-west9 París (França) Alternativa amb residència a França
europe-west3 Frankfurt (Alemanya) Habitual per requisits de residència alemanys

  1. Abast dels serveis: zonal, regional, multiregional i global

Cada servei de Google Cloud té un abast que determina on viu i a quines fallades sobreviu. Entendre-ho és imprescindible per dissenyar qualsevol arquitectura.

Abast Què significa Què passa si cau una zona Exemples que veurem al curs
Zonal El recurs existeix en una única zona Es perd el recurs Instància de Compute Engine, disc persistent zonal, node de GKE
Regional El recurs es replica automàticament entre les zones d'una regió Continua funcionant Cloud SQL amb alta disponibilitat, bucket de Cloud Storage regional, grup d'instàncies regional, clúster GKE regional
Multiregional Les dades es repliquen entre diverses regions Continua funcionant fins i tot si cau una regió sencera Bucket Cloud Storage multiregió EU, dataset BigQuery EU
Global No té ubicació: el servei és únic per a tota la teva organització No l'afecta IAM, Cloud DNS, xarxa VPC, balancejador de càrrega global HTTP(S), Artifact Registry (global o regional segons config)

Classificació dels serveis concrets que apareixeran al curs:

Servei Abast Comentari
Compute Engine (instància) Zonal Per sobreviure a una zona, necessites un grup d'instàncies regional
Disc persistent Zonal (o regional amb replicació síncrona) El disc regional costa més i té una mica menys de rendiment
Cloud Storage Regional, biregional o multiregió Es tria en crear el bucket i no es pot canviar després
Cloud SQL Zonal per defecte; regional amb alta disponibilitat La HA replica de manera síncrona a una altra zona de la mateixa regió
GKE Clúster zonal o regional El regional replica el pla de control en tres zones
Cloud Run Regional Es desplega per regió; el balancejador global pot repartir entre diverses
BigQuery Regional o multiregió La ubicació del dataset és immutable
Pub/Sub Global amb emmagatzematge regional configurable El topic és accessible globalment
VPC Global (les subxarxes són regionals) Peculiaritat de Google: en altres proveïdors la xarxa és regional
Balancejador HTTP(S) extern Global Una única IP anycast serveix des del PoP més proper a l'usuari
IAM Global Els permisos no tenen ubicació
Cloud DNS Global

Dos casos mereixen comentari a part:

  • La VPC global és una diferència real respecte d'AWS i Azure, on la xarxa virtual és regional. A Google Cloud una mateixa VPC pot tenir subxarxes a Bèlgica, Madrid i Tòquio, i les màquines de totes elles es comuniquen per IP privada sense configurar peering. Ho estudiarem a la lliçó 03-01.
  • La immutabilitat de la ubicació a Cloud Storage i BigQuery és un detall que atrapa molta gent: si crees el bucket alpinashop-catalogo a la regió equivocada, l'única solució és crear-ne un altre i copiar-hi les dades, pagant el trànsit corresponent.

  1. La xarxa troncal privada i els punts de presència

Google opera una de les xarxes privades més grans del món: fibra pròpia i capacitat contractada que uneix els seus centres de dades entre si i amb més d'un centenar de punts de presència (PoP) repartits pel planeta, inclòs Madrid.

Per què això importa a la pràctica:

  • El trànsit entra aviat a la xarxa de Google. Quan un client d'AlpinaShop a Sevilla demana una pàgina, la seva petició arriba al PoP de Google més proper (Madrid) després d'uns pocs salts per internet, i des d'allà viatja fins a europe-west1 per fibra de Google. La part «impredictible» del trajecte s'escurça.
  • Menys latència i, sobretot, menys variabilitat. L'internet públic té pics de latència impredictibles; una xarxa privada gestionada d'extrem a extrem no.
  • És la base del balancejador global. El balancejador HTTP(S) extern de Google fa servir una única adreça IP anycast anunciada des de tots els PoP. L'usuari es connecta automàticament al punt més proper i des d'allà el trànsit va per la xarxa de Google al backend adequat. S'estudia a la lliçó 03-02.
  • És la base de Cloud CDN. Els continguts estàtics —les imatges de producte d'AlpinaShop, per exemple— es poden emmagatzemar en memòria cau en aquests PoP, servint-se des de a pocs mil·lisegons del client sense arribar a tocar el bucket. Lliçó 03-03.
graph LR
    U1[Client a Sevilla] --> P1[PoP Madrid]
    U2[Client a Berlin] --> P2[PoP Frankfurt]
    P1 --> B[Balancejador global IP anycast]
    P2 --> B
    B --> R1[Backend a europe-west1]
    P1 -.cache.-> C1[Cloud CDN]
    P2 -.cache.-> C2[Cloud CDN]

Una conseqüència arquitectònica que convé retenir des d'ara: amb una CDN i un balancejador global ben configurats, la regió on viu el teu backend importa menys del que sembla per al contingut estàtic, però continua sent decisiva per a tot el que requereixi parlar amb la base de dades.

Hi ha a més dos nivells de servei de xarxa que afecten cost i rendiment:

Nivell Com viatja el trànsit Cost Quan fer-lo servir
Premium (per defecte) Per la xarxa privada de Google d'extrem a extrem Més gran Producció, usuaris finals
Estàndard Surt a internet públic com més aviat millor Menor Càrregues internes, entorns de proves, trànsit poc sensible a la latència

  1. Com triar regió: els cinc criteris

Criteri Pregunta que respon Com avaluar-lo
Latència On són els meus usuaris? Mesurar amb eines de latència per regió; regla general: ~1 ms per cada 100 km de fibra, més el processament
Residència de la dada i normativa On han de ser legalment les meves dades? RGPD, normativa sectorial, polítiques internes de client
Preu Quant costa el mateix aquí i allà? Els preus varien entre regions; consultar la calculadora oficial
Disponibilitat de serveis Existeix aquí el que necessito? No totes les regions ofereixen tots els serveis ni tots els tipus de màquina
Sostenibilitat i proximitat a altres recursos Quina petjada de carboni té? On és la resta del meu sistema? Google publica dades d'energia lliure de carboni per regió

Ampliem els dos que més se subestimen.

Residència de la dada i RGPD

Una confusió molt estesa: el RGPD no obliga, amb caràcter general, que les dades de ciutadans europeus romanguin en un país concret ni tan sols dins de la UE. El que exigeix és que el tractament compleixi la normativa i que les transferències internacionals disposin de garanties adequades.

Dit això, a la pràctica hi ha raons sòlides per mantenir les dades a la UE:

  • Evita per complet la complexitat jurídica de les transferències internacionals.
  • Molts clients corporatius i del sector públic ho exigeixen contractualment, encara que la llei no ho imposi.
  • Determinats sectors (sanitat, banca, administració pública) sí que tenen requisits específics més estrictes.

Google ofereix a més polítiques d'organització per restringir per política en quines regions es poden crear recursos (gcp.resourceLocations), cosa que converteix la residència de la dada en una cosa verificable i no només en una intenció. Es veu a la lliçó 07-07.

Per a AlpinaShop, que ven a consumidors a Espanya i Portugal i tracta dades personals de clients (nom, adreça, historial de comandes), la decisió és clara: tot dins de la UE. El dubte és entre Bèlgica i Madrid.

Disponibilitat de serveis

No totes les regions són iguals. Les regions més antigues i grans tenen catàleg complet; les més noves van incorporant serveis progressivament, i alguns tipus de màquina, acceleradors (GPU, TPU) o serveis de dades triguen a arribar.

# Llistar totes les regions disponibles per a Compute Engine
gcloud compute regions list
# Veure les zones de les regions europees i el seu estat
gcloud compute zones list --filter="region:(europe-west1 europe-southwest1)" \
  --format="table(name, region.basename(), status)"
# Comprovar quins tipus de maquina existeixen en una zona concreta.
# Util abans de decidir regio: no totes ofereixen les mateixes families.
gcloud compute machine-types list \
  --filter="zone:europe-southwest1-a AND name~^n2-" \
  --format="table(name, guestCpus, memoryMb)"

La primera comanda llista les regions amb el seu estat. La segona fa servir --filter per quedar-se només amb les dues regions candidates i --format amb region.basename() per mostrar el nom curt de la regió en lloc de la seva URL completa. La tercera combina dues condicions amb AND i fa servir ~ per expressar «el nom coincideix amb l'expressió regular ^n2-», cosa que permet comprovar si una família de màquines concreta està disponible abans de comprometre's amb una regió.

  1. La decisió d'AlpinaShop: europe-west1 davant d'europe-southwest1

Marta analitza les dues candidates amb dades reals de l'empresa: el 85 % de les comandes vénen d'Espanya, el 10 % de Portugal i el 5 % de la resta d'Europa.

Criteri europe-west1 (Bèlgica) europe-southwest1 (Madrid)
Latència des d'Espanya ~30-40 ms ~5-15 ms
Latència des de Portugal ~35-45 ms ~15-25 ms
Latència des d'Europa central Molt bona Acceptable
Preu Generalment més econòmica Una mica més cara en diversos serveis
Catàleg de serveis Molt complet, regió madura Bo i creixent, però amb menys disponibilitat d'algunes famílies i acceleradors
Zones 3 3
Residència de la dada UE (Bèlgica) UE i territori espanyol
Energia lliure de carboni Alta Alta

La decisió

AlpinaShop tria europe-west1 com a regió principal per a aquesta primera fase de la migració, amb la zona europe-west1-b com a zona per defecte. Les raons:

  1. És una regió madura, amb tots els serveis que el curs i l'empresa necessitaran, inclosos els de dades i IA que arribaran més endavant. Començar una migració en una regió incompleta obliga a descobrir mancances en el pitjor moment.
  2. El preu és menor en diversos dels serveis que més consumirà.
  3. La penalització de latència és acceptable i mitigable: la diferència de 20-25 ms és perceptible en una mesura, però es neutralitza en gran mesura servint el contingut estàtic des de Cloud CDN al PoP de Madrid i aplicant memòria cau al dinàmic. El gruix d'una pàgina de catàleg són imatges.
  4. La residència de la dada es compleix: Bèlgica és territori de la Unió Europea, i AlpinaShop no té requisits sectorials que exigeixin territori espanyol.

Quan revisaria Marta aquesta decisió. Si AlpinaShop signés un contracte amb una administració pública espanyola que exigís dades en territori nacional, o si l'anàlisi de conversió mostrés que la latència està costant vendes, la instància de Cloud SQL alpinashop-pedidos i el bucket alpinashop-catalogo es replantejarien cap a europe-southwest1. Per això europe-southwest1 apareixerà diverses vegades al curs: és l'alternativa sempre present quan parlem de latència o residència de la dada a Espanya.

# Fixar regio i zona per defecte a la configuracio de gcloud.
# Evita haver d'indicar-les a cada comanda i preve errors
# de crear recursos a us-central1 per descuit.
gcloud config set compute/region europe-west1
gcloud config set compute/zone europe-west1-b
# Comprovar la configuració resultant
gcloud config list

Aquest parell de comandes és dels més rendibles del curs: sense elles, moltes comandes fan servir valors per defecte o pregunten interactivament, i és molt fàcil acabar amb recursos dispersos per mig món.

  1. Dominis de fallada i disponibilitat

Un domini de fallada és el conjunt de recursos que poden caure junts per una mateixa causa. Dissenyar per a la disponibilitat consisteix a repartir els teus recursos entre dominis de fallada diferents.

Nivell de desplegament Sobreviu a No sobreviu a Cost i complexitat
Una zona Fallada d'una màquina concreta Caiguda de la zona Mínims
Diverses zones d'una regió Caiguda d'una zona completa Caiguda de la regió sencera Moderats
Diverses regions Caiguda d'una regió Fallada global (raríssima) o error humà replicat Alts

Què implica cada salt:

  • D'una zona a diverses zones és el salt amb millor relació cost/benefici, i el que cobreix la immensa majoria d'incidents reals. Sol requerir: replicació síncrona de la base de dades (Cloud SQL amb HA), diverses instàncies darrere d'un balancejador, i emmagatzematge regional en lloc de zonal. La latència entre zones és submil·lisegon, així que la replicació síncrona és viable.
  • De diverses zones a diverses regions canvia la naturalesa del problema. La latència entre regions fa inviable la replicació síncrona sense penalitzar l'escriptura, així que cal triar entre replicació asíncrona (amb possible pèrdua de dades recents) o bases de dades dissenyades per a això, com Spanner. A més cal resoldre l'encaminament del trànsit i la commutació.

Un advertiment contra l'entusiasme: el multiregió no és «més disponibilitat» de franc. Multiplica cost, complexitat i superfície d'error, i hi ha incidents que replica en lloc de contenir (un desplegament defectuós o un esborrat accidental es propaguen a totes les regions). Per a AlpinaShop, la resposta correcta en aquesta fase és producció multizona dins d'europe-west1, amb còpies de seguretat en un bucket multiregió EU com a protecció addicional.

Els conceptes de SLO, RTO i RPO, i el disseny detallat d'arquitectures d'alta disponibilitat i recuperació davant de desastres, s'estudien a la lliçó 07-06.

  1. El model de responsabilitat compartida

La seguretat al núvol sempre es comparteix. Google respon de la seguretat del núvol; tu respons de la seguretat al núvol. On cau exactament la línia depèn del tipus de servei.

Capa On-premise IaaS (Compute Engine) PaaS (Cloud SQL, App Engine) Serverless (Cloud Run, BigQuery)
Instal·lacions físiques i maquinari Tu Google Google Google
Xarxa física i xifratge en trànsit intern Tu Google Google Google
Hipervisor i aïllament Tu Google Google Google
Sistema operatiu i pedaços Tu Tu Google Google
Runtime i dependències Tu Tu Google (motor) / Tu (versió) Google
Configuració de xarxa i tallafoc Tu Tu Tu Tu (menys superfície)
Configuració d'IAM i accessos Tu Tu Tu Tu
Codi de l'aplicació Tu Tu Tu Tu
Dades i la seva classificació Tu Tu Tu Tu
Gestió d'identitats d'usuaris Tu Tu Tu Tu
Còpies de seguretat Tu Tu Google executa / Tu configures i verifiques Segons el servei

El que mai deixa de ser teu, en cap model de servei:

  1. Les teves dades: què reculls, quant de temps ho guardes, com ho classifiques, si està xifrat amb claus gestionades per tu.
  2. Qui hi accedeix: les polítiques d'IAM, la gestió d'identitats, la rotació de credencials.
  3. La teva configuració: un bucket públic, una regla de tallafoc que obre el 0.0.0.0/0 al port 22 o una base de dades amb IP pública són responsabilitat exclusivament teva, i són la causa de la immensa majoria de bretxes reals al núvol.
  4. El teu codi: les vulnerabilitats de la teva aplicació i de les teves dependències.

Aplicat a AlpinaShop:

Recurs Google s'ocupa de Marta i Dani s'ocupen de
VM de Compute Engine Maquinari, hipervisor, xarxa física, disponibilitat de la infraestructura Actualitzar el sistema operatiu, configurar el tallafoc, gestionar les claus SSH, endurir Nginx
Cloud SQL alpinashop-pedidos Instal·lar i apedaçar PostgreSQL, executar les còpies, commutació per error Triar si té IP pública, definir usuaris i contrasenyes, decidir la retenció de còpies, provar la restauració
Bucket alpinashop-catalogo Durabilitat, replicació, xifratge en repòs Que no sigui públic, permisos IAM, cicle de vida dels objectes
Cloud Run alpinashop-web Tot l'entorn d'execució i l'escalat La imatge del contenidor i les seves vulnerabilitats, les variables d'entorn, qui el pot invocar
BigQuery alpinashop_analitica Infraestructura, disponibilitat, durabilitat Quines dades personals s'hi carreguen i qui les pot consultar

Una nota que sorprèn molta gent: el xifratge en repòs està activat per defecte a tots els serveis d'emmagatzematge de Google Cloud, sense que hagis de fer res. Google gestiona les claus. Si necessites gestionar-les tu (per requisit normatiu o per política interna), existeixen les claus gestionades pel client amb Cloud KMS, tema de la lliçó 03-06.

  1. SLA i crèdits de servei

Un SLA (Service Level Agreement) és el compromís contractual de disponibilitat d'un servei. Llegir-los bé evita tant la ingenuïtat com el cinisme.

Ordres de magnitud típics (verifica sempre les xifres vigents als termes oficials de cada servei, perquè canvien):

Configuració SLA típic Indisponibilitat permesa al mes
VM única en una zona ~99,5 % ~3,6 hores
VMs en diverses zones d'una regió ~99,99 % ~4,4 minuts
Cloud SQL amb alta disponibilitat ~99,95 % ~22 minuts
Cloud Storage multiregió ~99,95 % ~22 minuts
Balancejador de càrrega global ~99,99 % ~4,4 minuts
Servei sense SLA (fase preliminar/preview) Cap Sense compromís

Com llegir un SLA de debò:

  • El SLA depèn de la teva arquitectura, no només del servei. Fixa't en la taula: la mateixa VM té un compromís molt diferent segons estigui sola en una zona o repartida entre diverses. Google no et garanteix 99,99 % si tu desplegues en una sola zona.
  • Un SLA no és una promesa que no fallarà. És un compromís econòmic: si Google l'incompleix, tu tens dret a un crèdit de servei, és a dir, un descompte a la factura de mesos posteriors.
  • Els crèdits són ridículs comparats amb el dany real. Un incompliment típic dona lloc a un crèdit del 10-25 % de la factura del servei afectat durant aquest període. Si AlpinaShop perd una tarda de campanya de tardor, el crèdit no cobrirà ni de bon tros les vendes perdudes. El SLA no substitueix dissenyar per a la resiliència.
  • Els crèdits s'han de reclamar. No s'apliquen sols: cal presentar una sol·licitud dins d'un termini, aportant registres que documentin la indisponibilitat. Una altra raó per tenir Cloud Monitoring ben configurat (lliçó 06-04).
  • Hi ha exclusions. El SLA no cobreix el que hagi causat la teva pròpia configuració, ni el programari de tercers, ni l'incompliment de les quotes, ni els serveis en fase preliminar.

La conclusió pràctica: fes servir el SLA com un senyal del nivell de fiabilitat que Google s'atreveix a comprometre per a una arquitectura donada, i com a criteri per triar configuració, no com a xarxa de seguretat del teu negoci.

Errors Habituals i Consells

  • Deixar la regió per defecte. Molts tutorials i alguns valors per defecte apunten a us-central1. Per a AlpinaShop això voldria dir 100 ms de latència extra i dades fora de la UE. Fixa regió i zona amb gcloud config set des del primer dia.
  • Confondre regió amb zona. Crear una VM «a europe-west1» no és possible: les VMs són zonals i viuen a europe-west1-b, -c o -d.
  • Creure que multizona i multiregió són el mateix. Multizona protegeix contra la caiguda d'un centre de dades i és assequible; multiregió protegeix contra la pèrdua d'una regió sencera i és car i complex.
  • Crear un bucket o un dataset a la ubicació equivocada. La ubicació de Cloud Storage i BigQuery és immutable: l'única sortida és crear-ne un altre i copiar-hi les dades, pagant el trasllat.
  • Suposar que totes les regions tenen tots els serveis. Comprova la disponibilitat abans de comprometre-t'hi, especialment amb GPUs, TPUs i serveis recents.
  • Pensar que «gestionat» significa «segur per defecte». La configuració és teva en tots els models. Un bucket públic és un bucket públic encara que el servei sigui serverless.
  • Confiar en el SLA com a pla de continuïtat. El crèdit de servei no paga les vendes perdudes.
  • Consell: mesura, no suposis. Abans de decidir regió per latència, mesura des d'on són els teus usuaris reals.
  • Consell: separa la decisió de regió de la d'arquitectura. Primer decideix on han de viure les dades (normativa, latència) i després com es desplega el còmput.
  • Consell: fes servir una política d'organització per restringir regions. És l'única manera de garantir que ningú crea un recurs a Iowa per descuit.

Exercicis

Exercici 1: classificar per abast

Per a cada recurs d'AlpinaShop, indica el seu abast (zonal, regional, multiregional o global) i què passa si cau completament la zona europe-west1-b:

  1. Una instància de Compute Engine que serveix l'Nginx heretat, creada a europe-west1-b.
  2. La instància Cloud SQL alpinashop-pedidos configurada amb alta disponibilitat a europe-west1.
  3. El bucket alpinashop-catalogo creat com a multiregió EU.
  4. La política d'IAM que dona a Lucía permís de lectura sobre BigQuery.
  5. Un clúster GKE alpinashop-cluster creat com a zonal a europe-west1-b.
  6. El balancejador HTTP(S) extern que publica la botiga.

Exercici 2: elecció de regió raonada

AlpinaShop signa un acord amb una cadena de botigues d'esport a Alemanya: la nova plataforma B2B servirà comandes majoristes des d'Alemanya, tractarà dades d'empreses alemanyes i el contracte exigeix que les dades romanguin en territori alemany. El volum previst és petit i no requereix GPUs ni serveis exòtics.

  1. Quina regió triaries i per què?
  2. Haurien de conviure les dades B2B a la mateixa base de dades tienda que la resta? Justifica-ho.
  3. Quin mecanisme faries servir per garantir tècnicament que ningú crea per error recursos d'aquest projecte fora d'Alemanya?

Exercici 3: responsabilitat compartida

Analitza aquests cinc incidents reals i determina, en cada cas, si la responsabilitat és de Google o d'AlpinaShop, i quina mesura concreta ho hauria evitat:

  1. El bucket alpinashop-catalogo va quedar configurat amb accés públic i un cercador va indexar factures que s'hi havien pujat per error.
  2. Una zona d'europe-west1 va patir un tall elèctric de 40 minuts i la VM que servia la botiga va quedar inaccessible.
  3. Un atacant va entrar per SSH a la VM heretada fent servir una contrasenya feble d'un usuari del sistema.
  4. Una vulnerabilitat crítica a la versió de PostgreSQL que fa servir Cloud SQL va ser apedaçada sense intervenció de ningú d'AlpinaShop.
  5. L'aplicació Flask tenia una vulnerabilitat d'injecció SQL al cercador de productes.

Solucions

Solució 1

  1. Zonal. Es perd la instància i amb ella el servei, fins que es recreï en una altra zona. El disc persistent zonal associat també queda inaccessible.
  2. Regional. Cloud SQL amb HA manté una rèplica en espera en una altra zona de la regió i commuta automàticament. Hi ha un breu tall durant la commutació (de l'ordre de desenes de segons), però el servei es restableix sol.
  3. Multiregional. No l'afecta gens: les dades estan replicades entre diverses regions de la UE. És el nivell de resiliència més alt dels que apareixen aquí.
  4. Global. IAM no té ubicació; la política continua vigent i Lucía conserva el seu accés.
  5. Zonal. Es perd el pla de control del clúster i tots els seus nodes. Un clúster regional hauria replicat el pla de control en tres zones i hauria mantingut els nodes de les zones supervivents.
  6. Global. El balancejador no es veu afectat, però deixarà d'enviar trànsit als backends de la zona caiguda. Si tots els backends eren en aquella zona, no té on enviar el trànsit: el balancejador global no crea disponibilitat per si sol, la reparteix.

Solució 2

  1. europe-west3 (Frankfurt), per ser una regió en territori alemany amb catàleg complet i madura. europe-west10 (Berlín) seria una altra opció vàlida en territori alemany; entre totes dues, Frankfurt ofereix més disponibilitat de serveis i millor preu, mentre que Berlín podria interessar per latència si els clients es concentressin allà. Atès que el volum és petit i no hi ha requisits exòtics, la maduresa pesa més.
  2. No. Les dades B2B alemanyes han de viure a la seva pròpia instància i el seu propi projecte, a europe-west3. Barrejar-les amb la base de dades tienda d'europe-west1 incompliria directament el requisit contractual de residència, i separar-les després seria molt més costós. L'estructura natural és un projecte nou, per exemple alpinashop-de-prod, dins de la carpeta produccion.
  3. Una política d'organització de restricció d'ubicacions (constraints/gcp.resourceLocations) aplicada al projecte o a una carpeta que el contingui, permetent únicament in:eu-west3-locations. A diferència d'una norma escrita en un document, aquesta política impedeix tècnicament la creació de recursos fora de la ubicació permesa, fins i tot per a usuaris amb permisos amplis. S'estudia a la lliçó 07-07.

Solució 3

  1. Responsabilitat d'AlpinaShop. La configuració d'accés d'un bucket és sempre del client. Google proporciona els controls; fer-los servir és tasca teva. Ho hauria evitat: activar la prevenció d'accés públic a nivell d'organització, fer servir accés uniforme a nivell de bucket, i no pujar documents amb dades personals a un bucket destinat a imatges públiques de catàleg.
  2. Responsabilitat de Google pel que fa a la infraestructura: un tall d'energia en una zona és una fallada del núvol. Però la indisponibilitat del servei és responsabilitat d'AlpinaShop, perquè va desplegar una única VM en una única zona. Google compleix el seu SLA zonal; AlpinaShop no va dissenyar per a la fallada. Ho hauria evitat: un grup d'instàncies gestionat regional darrere d'un balancejador, amb la base de dades a Cloud SQL amb HA.
  3. Responsabilitat d'AlpinaShop. El sistema operatiu i els seus usuaris són seus en IaaS. Ho hauria evitat: deshabilitar l'autenticació per contrasenya a SSH, fer servir l'accés mitjançant OS Login amb identitats de Google, no exposar el port 22 a internet i accedir-hi mitjançant Identity-Aware Proxy.
  4. Responsabilitat de Google, i és exactament el valor que es compra en fer servir un servei gestionat: l'apedaçament del motor de base de dades és seu. AlpinaShop només s'ha d'encarregar que la finestra de manteniment estigui configurada en un horari acceptable i d'estar al corrent dels canvis de versió major.
  5. Responsabilitat d'AlpinaShop. El codi de l'aplicació és sempre del client, en tots els models de servei, inclòs serverless. Ho hauria evitat: consultes parametritzades, revisió de codi, anàlisi estàtica al pipeline de CI/CD i, com a capa addicional, regles de Cloud Armor contra patrons d'injecció (lliçó 03-05).

Conclusió

Ja sabem on viuran els recursos d'AlpinaShop i qui respon de què. Hem recorregut la geografia de Google Cloud —zona, regió i multiregió— i hem classificat els serveis del curs segons siguin zonals, regionals, multiregionals o globals, amb la particularitat que a Google Cloud la VPC és global i la ubicació d'un bucket o un dataset és immutable. Hem vist per què la xarxa troncal privada de Google i els seus punts de presència redueixen latència i fan possibles el balancejador global amb IP anycast i Cloud CDN. Hem aplicat els cinc criteris d'elecció de regió al cas real d'AlpinaShop i hem decidit europe-west1 amb zona europe-west1-b, deixant europe-southwest1 com a alternativa si apareixen requisits de residència en territori espanyol o si la latència comença a costar vendes. Hem entès què protegeix desplegar en diverses zones enfront del que exigeix el multiregió, i hem repartit la seguretat entre Google i nosaltres amb la regla que mai canvia: les dades, els accessos, la configuració i el codi són sempre teus. I hem après a llegir un SLA com el que és: un compromís econòmic que depèn de la teva arquitectura, no una garantia que res fallarà.

Ens queda una última peça del mòdul, i és la que converteix tot l'anterior en feina real. A la lliçó següent, Cloud Shell i la CLI de gcloud, deixarem la teoria i ens posarem a teclejar: veurem què és Cloud Shell i quins límits té, com instal·lar el CLI en local, com s'estructura una comanda gcloud i com dominar --format i --filter, com funcionen l'autenticació i les configuracions anomenades per alternar entre alpinashop-dev i alpinashop-prod, i tancarem el mòdul amb el primer desplegament real del curs: Dani publicarà una pàgina de «pròximament» d'AlpinaShop a internet, d'extrem a extrem, des del navegador.

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