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