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
- La geografia de Google Cloud
- Abast dels serveis: zonal, regional, multiregional i global
- La xarxa troncal privada i els punts de presència
- Com triar regió: els cinc criteris
- La decisió d'AlpinaShop:
europe-west1davant d'europe-southwest1 - Dominis de fallada i disponibilitat
- El model de responsabilitat compartida
- SLA i crèdits de servei
- 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-bdel 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-west1ieurope-southwest1hi 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 |
- 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-catalogoa la regió equivocada, l'única solució és crear-ne un altre i copiar-hi les dades, pagant el trànsit corresponent.
- 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-west1per 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 |
- 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.
# 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ó.
- La decisió d'AlpinaShop:
europe-west1 davant d'europe-southwest1
europe-west1 davant d'europe-southwest1Marta 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:
- É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.
- El preu és menor en diversos dels serveis que més consumirà.
- 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.
- 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-bAquest 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.
- 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.
- 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 | |||
| Xarxa física i xifratge en trànsit intern | Tu | |||
| Hipervisor i aïllament | Tu | |||
| Sistema operatiu i pedaços | Tu | Tu | ||
| Runtime i dependències | Tu | Tu | Google (motor) / Tu (versió) | |
| 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:
- Les teves dades: què reculls, quant de temps ho guardes, com ho classifiques, si està xifrat amb claus gestionades per tu.
- Qui hi accedeix: les polítiques d'IAM, la gestió d'identitats, la rotació de credencials.
- 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.
- 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.
- 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 ambgcloud config setdes del primer dia. - Confondre regió amb zona. Crear una VM «a
europe-west1» no és possible: les VMs són zonals i viuen aeurope-west1-b,-co-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:
- Una instància de Compute Engine que serveix l'Nginx heretat, creada a
europe-west1-b. - La instància Cloud SQL
alpinashop-pedidosconfigurada amb alta disponibilitat aeurope-west1. - El bucket
alpinashop-catalogocreat com a multiregióEU. - La política d'IAM que dona a Lucía permís de lectura sobre BigQuery.
- Un clúster GKE
alpinashop-clustercreat com a zonal aeurope-west1-b. - 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.
- Quina regió triaries i per què?
- Haurien de conviure les dades B2B a la mateixa base de dades
tiendaque la resta? Justifica-ho. - 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:
- El bucket
alpinashop-catalogova quedar configurat amb accés públic i un cercador va indexar factures que s'hi havien pujat per error. - Una zona d'
europe-west1va patir un tall elèctric de 40 minuts i la VM que servia la botiga va quedar inaccessible. - Un atacant va entrar per SSH a la VM heretada fent servir una contrasenya feble d'un usuari del sistema.
- Una vulnerabilitat crítica a la versió de PostgreSQL que fa servir Cloud SQL va ser apedaçada sense intervenció de ningú d'AlpinaShop.
- L'aplicació Flask tenia una vulnerabilitat d'injecció SQL al cercador de productes.
Solucions
Solució 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.
- 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.
- 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í.
- Global. IAM no té ubicació; la política continua vigent i Lucía conserva el seu accés.
- 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.
- 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
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.- 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 dadestiendad'europe-west1incompliria 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 exemplealpinashop-de-prod, dins de la carpetaproduccion. - Una política d'organització de restricció d'ubicacions (
constraints/gcp.resourceLocations) aplicada al projecte o a una carpeta que el contingui, permetent únicamentin: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
- 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.
- 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.
- 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.
- 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.
- 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
- Què és Google Cloud Platform?
- Configuració del teu compte de GCP
- Descripció general de la consola de GCP
- Projectes, jerarquia de recursos i facturació
- Regions, zones i model de responsabilitat compartida
- Cloud Shell i la CLI de gcloud
Mòdul 2: Serveis principals de GCP
- Compute Engine: màquines virtuals a Google Cloud
- Cloud Storage: emmagatzematge d'objectes
- Cloud SQL: bases de dades relacionals gestionades
- App Engine: plataforma com a servei
- Google Kubernetes Engine (GKE)
- Bases de dades NoSQL: Firestore, Bigtable i Spanner
- Com triar el servei de còmput adequat
Mòdul 3: Xarxes i seguretat
- Xarxes VPC
- Balanceig de càrrega al núvol
- Cloud CDN
- Gestió d'identitat i accés (IAM)
- Cloud Armor
- Secrets i xifratge: Secret Manager i Cloud KMS
- Cloud DNS, certificats TLS i publicació segura de serveis
Mòdul 4: Dades i anàlisi
- BigQuery: el magatzem de dades analític
- Cloud Dataflow: processament de dades per lots i en temps real
- Cloud Dataproc: Spark i Hadoop gestionats
- Cloud Pub/Sub: missatgeria asíncrona
- Cloud Data Fusion: integració de dades sense codi
- Orquestració de pipelines amb Cloud Composer i Workflows
- Govern de les dades i taulers amb Dataplex i Looker Studio
Mòdul 5: Aprenentatge automàtic i IA
- Vertex AI: la plataforma d'aprenentatge automàtic de GCP
- AutoML: models a mida sense escriure codi
- TensorFlow a GCP: entrenament i servei de models
- API de llenguatge natural
- API de visió
- IA generativa a Vertex AI: models Gemini i incrustacions
- MLOps: del model al producte amb Vertex AI Pipelines
Mòdul 6: DevOps i monitoratge
- Cloud Build: integració contínua a GCP
- Cloud Source Repositories i gestió del codi font
- Cloud Functions: funcions sense servidor
- Cloud Monitoring (abans Stackdriver): mètriques, taulers i alertes
- Cloud Deployment Manager i infraestructura com a codi nativa
- Cloud Logging i Cloud Trace: registres, traces i diagnòstic
- Terraform a GCP: infraestructura com a codi a la pràctica
Mòdul 7: Temes avançats de GCP
- Híbrid i multinúvol amb Anthos
- Computació sense servidor amb Cloud Run
- Xarxes avançades: VPC compartida, aparellament i connectivitat híbrida
- Bones pràctiques de seguretat
- Gestió i optimització de costos
- Fiabilitat: SLO, alta disponibilitat i recuperació de desastres
- Govern a escala: organització, polítiques i auditoria
