Salta el contingut

Bones Pràctiques i Recomanacions

7. Bones Pràctiques i Recomanacions

7.1 Principis Fonamentals

1. Commit Early, Commit Often - Fes commits petits i freqüents - Cada commit hauria de ser una unitat lògica de canvi - Facilita la detecció d'errors i el rollback

2. Trunk-Based Development - Treballa sobre la branca principal tant com sigui possible - Branques de funcionalitat de curta durada (màxim 2-3 dies) - Integra canvis freqüentment per evitar conflictes

3. Fail Fast - Els tests han de fallar ràpidament si hi ha un problema - Ordena els tests de més ràpids a més lents - Executa tests crítics primer

4. Keep Pipelines Fast - Optimitza el temps d'execució del pipeline - Usa paral·lelització quan sigui possible - Cache de dependències i artefactes - Objectiu: menys de 10 minuts per pipeline complet

7.2 Seguretat

Secrets Management: - Mai comitejis secrets al repositori - Usa eines com GitHub Secrets, AWS Secrets Manager, HashiCorp Vault - Rota secrets periòdicament - Aplica el principi de mínim privilegi

Dependency Scanning: - Escaneja vulnerabilitats amb Snyk, Dependabot, npm audit - Actualitza dependències regularment - Bloqueja desplegaments amb vulnerabilitats crítiques

Code Scanning: - Usa eines de SAST (Static Application Security Testing) - Integra SonarQube o similars per detectar code smells - Implementa linters amb regles de seguretat

7.3 Testing Strategy

Piràmide de Tests:

       ┌─────────────┐
       │   E2E (5%)  │  ← Poques, lentes, cares
       └─────────────┘
     ┌─────────────────┐
     │ Integration(15%)│  ← Mitjanes en quantitat
     └─────────────────┘
   ┌───────────────────────┐
   │   Unit Tests (80%)    │  ← Moltes, ràpides, barates
   └───────────────────────┘

Coverage: - Estableix un mínim de cobertura (80% és un bon objectiu) - Però cobertura alta ≠ qualitat alta - Centra't en tests significatius, no només en percentatges

Test Types: - Unit Tests: Funcions individuals, lògica de negoci - Integration Tests: Interacció entre components, base de dades - E2E Tests: Fluxos complets d'usuari - Performance Tests: Càrrega, stress, resistència

7.4 Artefactes i Versionat

Semantic Versioning (SemVer): - Format: MAJOR.MINOR.PATCH (exemple: 2.4.1) - MAJOR: Canvis incompatibles - MINOR: Nova funcionalitat compatible - PATCH: Correccions de bugs

Artefacte Immutability: - Un artefacte built hauria de ser el mateix per tots els entorns - No recompilar per cada entorn - Usa variables d'entorn per configuració específica

Container Registry: - Guarda imatges Docker amb tags específics - Mai usar només latest en producció - Usa tags SHA o version

7.5 Documentació

README.md del Projecte: - Descripció clara del projecte - Instruccions de setup local - Com executar tests - Com fer deploy

Pipeline Documentation: - Documenta cada stage del pipeline - Explica decisions arquitectòniques - Inclou diagrames si és possible

Runbooks: - Procediments per incidents comuns - Passos de rollback - Contactes d'emergència

7.6 Monitorització i Alertes

Health Checks: - Implementa endpoints de salut: /health, /ready - Monitoritza recursos: CPU, memòria, disc - Verifica connexions externes: DB, APIs

Alerting: - Configura alertes per mètriques crítiques - Defineix thresholds adequats (evita alert fatigue) - Integra amb Slack, PagerDuty, etc.

Observability: - Logs estructurats (JSON) - Traces distribuïts per peticions - Mètriques de negoci, no només tècniques