Tanquem el capítol de mòduls amb una qüestió de disseny que distingeix un bon enginyer d’infraestructura: he de fer els meus mòduls molt genèrics (que serveixin per a tot) o específics del meu domini (que resolguin exactament el meu cas)? No hi ha una resposta única, però entendre l’equilibri t’ajudarà a dissenyar mòduls que de veritat facilitin la feina, en lloc de complicar-la.

Dues filosofies de disseny

Quan crees un mòdul, t’enfrontes a una decisió sobre quanta flexibilitat oferir:

Mòdul genèric

Un mòdul genèric intenta servir per a molts casos diferents. Exposa moltes variables d’entrada perquè qui l’utilitzi pugui configurar-ho tot. És flexible i molt reutilitzable.

Mòdul "servidor-genèric" amb 40 variables:
  tipus, sistema operatiu, disc, xarxa, seguretat,
  monitorització, còpies de seguretat, escalat, etiquetes... etc.

Avantatge: serveix per a gairebé qualsevol situació. Inconvenient: és complex d’utilitzar, perquè qui el crida ha d’entendre i omplir moltes opcions, i pot equivocar-se.

Mòdul específic de domini

Un mòdul específic de domini resol un cas concret de la teva organització, amb decisions ja preses. Exposa poques variables perquè la majoria de coses ja venen fixades segons les convencions de la teva empresa.

Mòdul "servidor-web-empresa" amb 3 variables:
  nom, entorn, mida
  (tot la resta ja està decidit segons les normes de l’empresa)

Avantatge: facilíssim d’utilitzar, i aplica automàticament les bones pràctiques de la teva empresa. Inconvenient: només serveix per a aquest cas concret; no és reutilitzable fora del teu context.

L’analogia: eina de rellotger vs navalla suïssa

Un mòdul genèric és com una caixa d’eines professional completa: té de tot i serveix per a qualsevol feina, però necessites saber quina eina agafar i com utilitzar-la. Un mòdul específic de domini és com un kit llest per a una tasca concreta («kit per penjar un quadre»): només porta el just, amb instruccions simples, i resol aquest problema sense que hagis de pensar. Per penjar un quadre, el kit és més còmode; per a feines variades, necessites la caixa completa.

El problema de passar-se de genèric

Un error molt comú dels principiants és intentar fer tot súper genèric «per si de cas». El resultat és un mòdul amb desenes de variables que és tan complicat d’utilitzar com escriure els recursos a mà. Has afegit complexitat sense aportar valor.

Mòdul amb 50 variables "per si de cas":
  → tan difícil de configurar que ningú vol utilitzar-lo
  → l’objectiu dels mòduls (simplificar) es perd ⚠️

Regla d’or: un mòdul ha de amagar complexitat, no afegir-ne. Si utilitzar el teu mòdul és tan difícil com no utilitzar-lo, alguna cosa va malament en el disseny.

El problema de passar-se d’específic

L’extrem contrari també té el seu risc: si fas mòduls tan específics que cadascun serveix per a un sol projecte, acabes amb moltíssims mòduls gairebé idèntics i poca reutilització real. Perds part del benefici dels mòduls.

L’equilibri: la regla pràctica

La clau està en l’equilibri, i una bona estratègia és la de les dues capes:

Capa 1 — Mòduls GENÈRICS (base, reutilitzables)
   "modul-vpc", "modul-servidor"  (flexibles, poques decisions preses)
        │ usats per...
        ▼
Capa 2 — Mòduls ESPECÍFICS de domini (embolcallen els genèrics)
   "xarxa-empresa", "servidor-web-empresa"
   (apliquen les convencions de l’empresa, fàcils d’utilitzar)
        │ usats per...
        ▼
   Els equips de cada projecte (que només passen 2-3 valors)
  • Els mòduls genèrics (sovint del Registry, subcapítol 18.3, o mòduls base propis) aporten la flexibilitat i la lògica reutilitzable.
  • Els mòduls específics de domini els embolcallen, fixant les decisions de la teva empresa (seguretat, noms, regions...) i exposant només el just. Són els que utilitzen els equips.

Exemple del món real: l’equip de plataforma d’una empresa utilitza el mòdul de VPC genèric del Registry (que té 40 opcions). Però no obliga cada equip a tractar amb aquestes 40 opcions. En el seu lloc, crea un mòdul específic xarxa-empresa que internament crida al genèric amb totes les decisions corporatives ja preses (rangos, etiquetes, seguretat), i només demana a l’usuari un nom i un entorn. Els equips obtenen una xarxa perfecta passant dos valors, i la flexibilitat del mòdul genèric segueix allà per sota quan cal.

Preguntes per decidir com dissenyar el teu mòdul

Quan creïs un mòdul, pregunta’t:

  • Qui l’utilitzarà? Si són molts equips no experts → tira a específic i fàcil. Si és per a l’equip de plataforma → pot ser més genèric.
  • Quantes vegades i en quants contextos s’utilitzarà? Molt reutilitzat en contextos variats → més genèric. Per a un cas concret de la teva empresa → específic.
  • Estic amagant complexitat o afegint-ne? Si afegeixes complexitat, replanteja-t’ho.
  • Cada variable que exposo és realment necessària? En cas de dubte, menys variables: comença simple i afegeix flexibilitat només quan es demostri necessària.

El que has de recordar

  • En dissenyar un mòdul, esculls quanta flexibilitat oferir: genèric (moltes variables, serveix per a molt, però complex d’utilitzar) o específic de domini (poques variables, fàcil, però només per al teu cas).
  • Com a eines: el genèric és la caixa completa (versàtil però requereix saber); l’específic és el kit per a una tasca (còmode i directe).
  • Error comú: passar-se de genèric «per si de cas» i crear un mòdul tan complicat que no simplifica res. Un mòdul ha de amagar complexitat, no afegir-ne.
  • Millor estratègia: dues capes. Mòduls genèrics (base/Registry) que aporten flexibilitat, embolcallats per mòduls específics de domini que fixen les convencions de l’empresa i són fàcils d’utilitzar.
  • En cas de dubte, comença simple (poques variables) i afegeix flexibilitat només quan es demostri necessària.

Has acabat el Capítol 18! Ja saps dissenyar, versionar i compondre mòduls com un professional. Al Capítol 19 veurem com gestionar múltiples entorns (desenvolupament, staging, producció) amb Terraform: workspaces, estratègies de directoris i Terragrunt.

Cloud, AWS & Terraform — De zero a expert

Capítol 1 · Què és el cloud computing

Capítol 2 · El mercat cloud i els grans proveïdors

Capítol 3 · Regions, zones de disponibilitat i edge

Capítol 4 · Càlcul: EC2

Capítol 5 · Emmagatzematge: S3

Capítol 6 · Xarxes: VPC

Capítol 7 · Identitat i accés: IAM

Capítol 8 · Bases de dades gestionades

Capítol 9 · Per què Infraestructura com a Codi

Capítol 10 · HCL: el llenguatge de Terraform

Capítol 11 · Providers i estat

Capítol 12 · La teva primera infraestructura real amb Terraform

Capítol 13 · Balanceig de càrrega i autoescalat

Capítol 14 · Serverless amb Lambda

Capítol 15 · Missatgeria i esdeveniments

Capítol 16 · Lliurament de contingut i DNS

Capítol 17 · Contenidors a AWS

Capítol 18 · Mòduls: reutilització i composició

Capítol 19 · Workspaces i gestió d'entorns

Capítol 20 · Backends remots i locking

Capítol 21 · Testing d'infraestructura

Capítol 22 · Terraform en CI/CD

Capítol 23 · Seguretat en profunditat

Capítol 24 · Observabilitat: logs, mètriques i traces

Capítol 25 · Optimització de costos

Capítol 26 · Alta disponibilitat i disaster recovery

Capítol 27 · Well-Architected Framework d'AWS

Capítol 28 · Arquitectures serverless a escala

Capítol 29 · Plataformes de dades a AWS

Capítol 30 · Multi-compte i landing zones

Capítol 31 · Platform Engineering i Internal Developer Platform

Capítol 32 · Certificacions AWS rellevants

Capítol 33 · Projectes per consolidar el que s'ha après

Capítol 34 · Recursos i comunitat

© Copyright 2024. Tots els drets reservats