6.0 KiB
6.0 KiB
DEVOPS - ERP CONSTRUCCION
Fecha: 2025-11-25 Version: 1.0.0
Vision General
Este directorio contiene la documentacion y configuracion de DevOps para el ERP de Construccion, incluyendo:
- Contenedores Docker
- CI/CD Pipeline
- Guias de deployment
- Monitoreo y logging
Estructura de Directorio
05-devops/
+-- README.md (este archivo)
+-- docker/
| +-- docker-compose.yml
| +-- docker-compose.dev.yml
| +-- docker-compose.prod.yml
| +-- Dockerfile.backend
| +-- Dockerfile.frontend
+-- ci-cd/
| +-- github-actions.yml
| +-- PIPELINE.md
+-- deployment/
| +-- DEPLOYMENT-GUIDE.md
| +-- ROLLBACK-GUIDE.md
+-- monitoring/
| +-- MONITORING.md
| +-- ALERTS.md
Stack de Infraestructura
Desarrollo Local
| Servicio | Tecnologia | Puerto |
|---|---|---|
| Backend | Node.js 20 | 3000 |
| Frontend | React/Vite | 5173 |
| Database | PostgreSQL 15 + PostGIS | 5432 |
| Cache | Redis | 6379 |
| Storage | MinIO (S3) | 9000 |
Produccion
| Servicio | Tecnologia | Proveedor |
|---|---|---|
| Backend | Node.js | Railway / Render |
| Frontend | React SPA | Vercel / Cloudflare |
| Database | PostgreSQL | Supabase / Neon |
| Cache | Redis | Upstash |
| Storage | S3 | AWS / Cloudflare R2 |
Docker Compose (Desarrollo)
# docker-compose.dev.yml
version: '3.8'
services:
postgres:
image: postgis/postgis:15-3.3
environment:
POSTGRES_USER: erp_user
POSTGRES_PASSWORD: erp_dev_password
POSTGRES_DB: erp_construccion_dev
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
- ./database/init:/docker-entrypoint-initdb.d
redis:
image: redis:7-alpine
ports:
- "6379:6379"
minio:
image: minio/minio
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
ports:
- "9000:9000"
- "9001:9001"
command: server /data --console-address ":9001"
volumes:
- minio_data:/data
backend:
build:
context: ./apps/backend
dockerfile: Dockerfile.dev
environment:
DATABASE_URL: postgresql://erp_user:erp_dev_password@postgres:5432/erp_construccion_dev
REDIS_URL: redis://redis:6379
S3_ENDPOINT: http://minio:9000
ports:
- "3000:3000"
volumes:
- ./apps/backend:/app
- /app/node_modules
depends_on:
- postgres
- redis
- minio
frontend:
build:
context: ./apps/frontend
dockerfile: Dockerfile.dev
environment:
VITE_API_URL: http://localhost:3000
ports:
- "5173:5173"
volumes:
- ./apps/frontend:/app
- /app/node_modules
volumes:
postgres_data:
minio_data:
CI/CD Pipeline
GitHub Actions Workflow
# .github/workflows/ci.yml
name: CI Pipeline
on:
push:
branches: [main, develop]
pull_request:
branches: [main, develop]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm ci
- run: npm run lint
test:
runs-on: ubuntu-latest
services:
postgres:
image: postgis/postgis:15-3.3
env:
POSTGRES_USER: test
POSTGRES_PASSWORD: test
POSTGRES_DB: erp_test
ports:
- 5432:5432
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm ci
- run: npm run test:ci
env:
DATABASE_URL: postgresql://test:test@localhost:5432/erp_test
build:
runs-on: ubuntu-latest
needs: [lint, test]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm ci
- run: npm run build
Deployment
Ambientes
| Ambiente | Branch | URL | Base de Datos |
|---|---|---|---|
| Development | develop | dev.erp.example.com | erp_dev |
| Staging | staging | staging.erp.example.com | erp_staging |
| Production | main | erp.example.com | erp_prod |
Proceso de Deployment
- Merge a main/develop triggers CI
- CI pasa -> Build y tests
- Deploy automatico a ambiente correspondiente
- Health checks verifican deployment
- Rollback automatico si health check falla
Variables de Entorno
Backend
# Database
DATABASE_URL=postgresql://user:password@host:5432/database
DATABASE_POOL_SIZE=10
# Auth
JWT_SECRET=your-secret-key
JWT_EXPIRES_IN=1d
REFRESH_TOKEN_EXPIRES_IN=7d
# Redis
REDIS_URL=redis://localhost:6379
# Storage
S3_ENDPOINT=https://s3.amazonaws.com
S3_BUCKET=erp-construccion
S3_ACCESS_KEY=xxx
S3_SECRET_KEY=xxx
# App
NODE_ENV=production
PORT=3000
LOG_LEVEL=info
Frontend
VITE_API_URL=https://api.erp.example.com
VITE_WS_URL=wss://api.erp.example.com
VITE_SENTRY_DSN=xxx
Monitoreo
Metricas Clave
| Metrica | Umbral Warning | Umbral Critical |
|---|---|---|
| Response Time (p95) | > 500ms | > 1000ms |
| Error Rate | > 1% | > 5% |
| CPU Usage | > 70% | > 90% |
| Memory Usage | > 70% | > 90% |
| DB Connections | > 80% | > 95% |
Herramientas
- APM: Sentry / New Relic
- Logs: Datadog / CloudWatch
- Uptime: UptimeRobot / Better Uptime
- Alertas: PagerDuty / Slack
Scripts Utiles
# Iniciar ambiente de desarrollo
./scripts/dev-start.sh
# Reset de base de datos
./scripts/reset-database.sh
# Backup de produccion
./scripts/backup-prod.sh
# Rollback de deployment
./scripts/rollback.sh <version>
Proximos Pasos
- Crear Dockerfile.backend
- Crear Dockerfile.frontend
- Configurar GitHub Actions
- Configurar Sentry
- Crear scripts de deployment
Referencias
Ultima actualizacion: 2025-11-25 Version: 1.0.0