Hem vist diverses opcions per desar dades: RDS/Aurora (relacional), DynamoDB (NoSQL) i ElastiCache (memòria cau). I AWS en té encara més. Davant tanta varietat, sorgeix la pregunta clau: quina faig servir per al meu cas? Aquest subcapítol et dona el criteri per triar bé. Tanca la Part II i és un dels coneixements més pràctics del llibre.
El principi: «l’eina adequada per a cada feina»
AWS defensa la idea de bases de dades especialitzades (purpose-built): en lloc de forçar totes les teves dades en un únic tipus de base de dades, tries el tipus que millor encaixa amb cada necessitat. Una aplicació gran sovint fa servir diverses bases de dades diferents alhora, cadascuna per al que millor fa.
Analogia: No fas servir un martell per a tot. Per clavar fas servir un martell; per cargolar, un tornavís; per tallar, una serra. Amb les bases de dades igual: cada tipus és l’eina ideal per a una feina concreta.
Les preguntes clau per triar
Fes-te aquestes preguntes sobre les teves dades i el teu cas:
- Les meves dades tenen una estructura clara i relacions entre si?
- Necessito consultes complexes (filtres, joins, informes)?
- Quina escala i rendiment necessito?
- Les dades canvien de forma flexible o tenen un esquema fix?
- Estic repetint moltes lectures iguals?
Vegem com t’orienten cap a cada opció.
Guia de decisió
Fes servir una base RELACIONAL (RDS / Aurora) quan…
- Les teves dades tenen estructura clara i relacions (usuaris que tenen comandes, comandes que tenen productes…).
- Necessites consultes complexes: filtres múltiples, unions entre taules, informes, agregacions.
- La consistència i la integritat de les dades són crítiques (banca, facturació, inventari).
- La teva aplicació fa servir SQL.
Exemples: sistemes de gestió, banca, facturació, comerç electrònic (la part de comandes), aplicacions empresarials clàssiques. Aurora si necessites més rendiment/escala; RDS vanilla si vols quelcom més senzill i econòmic.
Fes servir una base NoSQL (DynamoDB) quan…
- Necessites escala massiva i rendiment constant en mil·lisegons.
- Accedeixes a les dades sobretot per una clau coneguda («dona’m l’element X»).
- Les teves dades són flexibles o canvien d’estructura amb freqüència.
- Vols zero administració (serverless).
Exemples: carretons de compra, perfils d’usuari, sessions, catàlegs amb atributs variables, dades d’IoT, aplicacions amb milions d’usuaris i pics enormes.
Fes servir una MEMÒRIA CAU (ElastiCache) quan…
- Repeteixes moltes lectures iguals i vols accelerar-les.
- Vols alleujar la càrrega de la teva base de dades principal.
- Necessites dades «calentes» a l’instant (sessions, rànquings, comptadors).
Recorda: la memòria cau acompanya una altra base de dades; no la substitueix. És una capa de velocitat al davant.
Taula resum de decisió
| Necessito… | Fes servir… |
|---|---|
| Dades estructurades + relacions + consultes complexes | RDS / Aurora (relacional, SQL) |
| Màxim rendiment, escala enorme, accés per clau | DynamoDB (NoSQL) |
| Accelerar lectures repetides / alleujar la BD | ElastiCache (memòria cau) |
| Anàlisi de grans volums / informes (data warehouse) | Redshift (Capítol 29) |
| Cercar text / cerques avançades | OpenSearch |
| Dades molt connectades (xarxes, relacions) | Neptune (base de grafs) |
Les tres últimes files són bases especialitzades que AWS també ofereix. No les hem detallat, però convé saber que existeixen per a casos concrets (veurem Redshift al Capítol 29).
Combinar-les: el cas real
A la vida real, una aplicació seriosa barreja diverses. Vegem un exemple complet.
Exemple real — una botiga online:
- RDS/Aurora (relacional): desa les comandes, pagaments i factures, on la consistència i les relacions són crítiques. Aquí necessites SQL i garanties fortes.
- DynamoDB (NoSQL): desa els carrets de la compra i les sessions, que requereixen escala enorme i accés ràpid per id d’usuari.
- ElastiCache (memòria cau): desa el catàleg de productes més visitats perquè les pàgines carreguin a l’instant sense saturar la base de dades.
- OpenSearch: alimenta el cercador de productes amb cerques de text avançades.
Cada peça fa servir la base de dades que millor resol el seu problema. Forçar-ho tot en una sola faria l’aplicació més lenta, més cara o més fràgil.
Un consell per a principiants
No t’abrumeixis amb tantes opcions. Quan comences:
Si tens dubtes, una base de dades relacional (RDS/Aurora) és gairebé sempre una elecció segura i versàtil. Cobreix la majoria de necessitats. Afegeix DynamoDB quan tinguis un cas clar d’escala massiva o accés per clau, i ElastiCache quan notis que la base de dades pateix per lectures repetides. Comença simple i especialitza només quan ho necessitis.
El que has de recordar
- AWS promou bases de dades especialitzades: tria el tipus que millor encaixa amb cada necessitat, en lloc de forçar-ho tot en una sola.
- Relacional (RDS/Aurora): estructura, relacions, consultes complexes, consistència (SQL).
- NoSQL (DynamoDB): escala massiva, rendiment constant, accés per clau, flexibilitat.
- Memòria cau (ElastiCache): accelerar lectures repetides i alleujar la base de dades (sempre acompanyant-ne una altra).
- Les aplicacions serioses combinen diverses segons cada problema.
- Si dubtes a l’inici, una base relacional és l’opció segura i versàtil; especialitza quan sorgeixi la necessitat.
Amb això tanques el Capítol 8 i la Part II. Ja coneixes els serveis essencials d’AWS: còmput (EC2), emmagatzematge (S3), xarxes (VPC), identitat (IAM) i bases de dades. A la Part III fem un gran salt: aprendrem a definir tota aquesta infraestructura com a codi amb Terraform.
Cloud, AWS & Terraform — De zero a expert
Capítol 1 · Què és el cloud computing
- 1.1 El model client-servidor tradicional
- 1.2 Problemes que venia a resoldre el núvol
- 1.3 On-premise vs cloud vs híbrid
- 1.4 Els tres models de servei: IaaS, PaaS, SaaS
- 1.5 Els cinc pilars del cloud (segons NIST)
- 1.6 Avantatges reals: elasticitat, pagament per ús, disponibilitat global
Capítol 2 · El mercat cloud i els grans proveïdors
- 2.1 AWS, Azure i GCP: diferències i quotes de mercat
- 2.2 Per què aprendre AWS primer
- 2.3 Conceptes que són universals entre proveïdors
Capítol 3 · Regions, zones de disponibilitat i edge
- 3.1 Què és una regió AWS i com triar-la
- 3.2 Availability Zones: alta disponibilitat des del disseny
- 3.3 Edge locations i CloudFront
- 3.4 Latència, resiliència i sobirania de dades
Capítol 4 · Càlcul: EC2
- 4.1 Instàncies: tipus, famílies i quan triar cadascuna
- 4.2 AMIs, key pairs i Security Groups
- 4.3 Cicle de vida d'una instància
- 4.4 Elastic IPs i Placement Groups
- 4.5 Savings Plans vs Reserved vs On-Demand vs Spot
Capítol 5 · Emmagatzematge: S3
- 5.1 Buckets, objectes i claus
- 5.2 Classes d'emmagatzematge (Standard, IA, Glacier…)
- 5.3 Versionat i cicle de vida d'objectes
- 5.4 Polítiques de bucket i ACLs
- 5.5 Hosting de llocs web estàtics
Capítol 6 · Xarxes: VPC
- 6.1 Què és una VPC i per què la necessites
- 6.2 Subxarxes públiques i privades
- 6.3 Internet Gateway i NAT Gateway
- 6.4 Route Tables i Network ACLs
- 6.5 VPC Peering i endpoints
Capítol 7 · Identitat i accés: IAM
- 7.1 Usuaris, grups, rols i polítiques
- 7.2 El principi de mínim privilegi
- 7.3 Polítiques basades en identitat vs en recurs
- 7.4 MFA i credencials temporals (STS)
- 7.5 Bones pràctiques de seguretat IAM
Capítol 8 · Bases de dades gestionades
- 8.1 RDS: motors, Multi-AZ i rèpliques de lectura
- 8.2 Aurora i els seus avantatges sobre RDS vanilla
- 8.3 DynamoDB: model clau-valor / documents
- 8.4 ElastiCache per a memòria cau en memòria
- 8.5 Quan utilitzar cada tipus de base de dades
Capítol 9 · Per què Infraestructura com a Codi
- 9.1 Problemes del provisionament manual
- 9.2 IaC declaratiu vs imperatiu
- 9.3 Terraform vs CloudFormation vs Pulumi vs CDK
- 9.4 El cicle plan → apply → destroy
Capítol 10 · HCL: el llenguatge de Terraform
- 10.1 Blocs resource, variable, output, locals
- 10.2 Tipus de dades: string, number, bool, list, map, object
- 10.3 Expressions, referències i funcions built-in
- 10.4 Condicionals i bucles (count, for_each, for)
Capítol 11 · Providers i estat
- 11.1 Com funciona el provider d'AWS
- 11.2 El fitxer terraform.tfstate i la seva importància
- 11.3 State local vs state remot (S3 + DynamoDB)
- 11.4 Comandes essencials: init, plan, apply, destroy, fmt, validate
Capítol 12 · La teva primera infraestructura real amb Terraform
- 12.1 Crear una VPC amb subxarxes des de zero
- 12.2 Posar en marxa una instància EC2 pública
- 12.3 Associar un Security Group i una Elastic IP
- 12.4 Outputs i referències entre recursos
- 12.5 Flux de treball en equip: PR review de plans
Capítol 13 · Balanceig de càrrega i autoescalat
- 13.1 Application Load Balancer vs Network Load Balancer
- 13.2 Target Groups, listeners i regles
- 13.3 Auto Scaling Groups: polítiques i mètriques
- 13.4 Warm pools i lifecycle hooks
Capítol 14 · Serverless amb Lambda
- 14.1 El model d'execució de Lambda
- 14.2 Triggers: API Gateway, S3, DynamoDB Streams, SQS
- 14.3 Gestió de dependències i capes (Layers)
- 14.4 Cold starts i estratègies per reduir-los
- 14.5 Límits i antipatrones
Capítol 15 · Missatgeria i esdeveniments
- 15.1 SQS: cues estàndard vs FIFO, DLQ
- 15.2 SNS: topics, subscripcions, fan-out
- 15.3 EventBridge: event buses i regles
- 15.4 Patrons: pub/sub, desacoblament, saga
Capítol 16 · Lliurament de contingut i DNS
- 16.1 Route 53: tipus de registres i routing policies
- 16.2 CloudFront: distribucions, memòries cau i origins
- 16.3 ACM: certificats SSL/TLS gratuïts
- 16.4 WAF integrat amb CloudFront
Capítol 17 · Contenidors a AWS
- 17.1 Docker: repàs exprés de conceptes clau
- 17.2 ECR: registre privat d'imatges
- 17.3 ECS: task definitions, services, Fargate vs EC2
- 17.4 EKS: quan Kubernetes i quan no
Capítol 18 · Mòduls: reutilització i composició
- 18.1 Anatomia d'un mòdul Terraform
- 18.2 Variables d'entrada, outputs i dependències
- 18.3 Mòduls locals vs mòduls del Terraform Registry
- 18.4 Versionat de mòduls amb Git tags
- 18.5 Disseny de mòduls genèrics vs específics de domini
Capítol 19 · Workspaces i gestió d'entorns
- 19.1 Workspaces de Terraform: casos d'ús i limitacions
- 19.2 Estratègia de directoris per entorn (dev/stg/prod)
- 19.3 Terragrunt: DRY per a configuracions d'entorn
- 19.4 Variables d'entorn i fitxers .tfvars
Capítol 20 · Backends remots i locking
- 20.1 Configurar S3 + DynamoDB com a backend
- 20.2 State locking: evitar corrupció en equip
- 20.3 Migració d'estat entre backends
- 20.4 terraform import: portar recursos existents a l'estat
Capítol 21 · Testing d'infraestructura
- 21.1 Terraform validate i fmt en CI
- 21.2 Checkov i tfsec: anàlisi de seguretat estàtica
- 21.3 Terratest: tests d'integració en Go
- 21.4 Contract testing entre mòduls
Capítol 22 · Terraform en CI/CD
- 22.1 Pipeline bàsic: lint → plan → apply a GitHub Actions
- 22.2 Atlantis: GitOps per a Terraform
- 22.3 Terraform Cloud / HCP Terraform
- 22.4 Drift detection i reconciliació automàtica
Capítol 23 · Seguretat en profunditat
- 23.1 AWS Organizations i Service Control Policies
- 23.2 AWS Config: compliment continu
- 23.3 GuardDuty: detecció d'amenaces
- 23.4 Security Hub: visió centralitzada
- 23.5 KMS: gestió de claus i rotació
- 23.6 Secrets Manager vs Parameter Store
Capítol 24 · Observabilitat: logs, mètriques i traces
- 24.1 CloudWatch Logs, mètriques i alarmes
- 24.2 CloudWatch Dashboards i Contributor Insights
- 24.3 X-Ray: traçat distribuït
- 24.4 OpenTelemetry a AWS
- 24.5 Managed Grafana i Managed Prometheus
Capítol 25 · Optimització de costos
- 25.1 AWS Cost Explorer i pressupostos amb alertes
- 25.2 Trusted Advisor i Compute Optimizer
- 25.3 Rightsizing: com detectar sobredimensionament
- 25.4 Savings Plans vs Reserved Instances: decisió estratègica
- 25.5 FinOps: cultura i processos per controlar la despesa
Capítol 26 · Alta disponibilitat i disaster recovery
- 26.1 RTO i RPO: definir els objectius
- 26.2 Estratègies: backup/restore, pilot light, warm standby, multi-site
- 26.3 Route 53 health checks i failover automàtic
- 26.4 AWS Backup: política centralitzada de còpies
Capítol 27 · Well-Architected Framework d'AWS
- 27.1 Els sis pilars: excel·lència operacional, seguretat, fiabilitat, eficiència de rendiment, optimització de costos, sostenibilitat
- 27.2 Well-Architected Tool: revisions formals
- 27.3 Com aplicar el framework en decisions de disseny
Capítol 28 · Arquitectures serverless a escala
- 28.1 Event-driven architecture amb Lambda + EventBridge
- 28.2 Saga pattern per a transaccions distribuïdes
- 28.3 Step Functions: orquestració de workflows complexos
- 28.4 Lambda@Edge i CloudFront Functions
Capítol 29 · Plataformes de dades a AWS
- 29.1 Data Lake amb S3, Glue i Athena
- 29.2 Kinesis Data Streams i Firehose per a streaming
- 29.3 Redshift: data warehousing a escala
- 29.4 Lake Formation: govern del dada
Capítol 30 · Multi-compte i landing zones
- 30.1 Per què separar workloads en comptes diferents
- 30.2 AWS Control Tower i Account Factory
- 30.3 Gestió centralitzada de logs i seguretat
- 30.4 Terraform a escala multi-compte amb mòduls compartits
Capítol 31 · Platform Engineering i Internal Developer Platform
- 31.1 Golden paths i abstraccions sobre Terraform
- 31.2 Service Catalog d'AWS
- 31.3 Backstage com a portal de desenvolupadors
- 31.4 Mòduls Terraform com a producte intern
Capítol 32 · Certificacions AWS rellevants
- 32.1 Cloud Practitioner: val la pena?
- 32.2 Solutions Architect Associate → Professional
- 32.3 DevOps Engineer Professional
- 32.4 Specialty: Security, Database, Networking
- 32.5 HashiCorp Terraform Associate
Capítol 33 · Projectes per consolidar el que s'ha après
- 33.1 Projecte 1: blog serverless (S3 + CloudFront + Lambda + DynamoDB)
- 33.2 Projecte 2: API REST amb ECS Fargate + RDS + ALB
- 33.3 Projecte 3: plataforma de dades amb Glue + Athena + Redshift
- 33.4 Projecte 4: landing zone multi-compte amb Terraform i Control Tower
