workspace/projects/erp-suite/apps/verticales/construccion/docs/07-devops
rckrdmrd ea1879f4ad feat: Initial workspace structure with multi-level Git configuration
- Configure workspace Git repository with comprehensive .gitignore
- Add Odoo as submodule for ERP reference code
- Include documentation: SETUP.md, GIT-STRUCTURE.md
- Add gitignore templates for projects (backend, frontend, database)
- Structure supports independent repos per project/subproject level

Workspace includes:
- core/ - Reusable patterns, modules, orchestration system
- projects/ - Active projects (erp-suite, gamilit, trading-platform, etc.)
- knowledge-base/ - Reference code and patterns (includes Odoo submodule)
- devtools/ - Development tools and templates
- customers/ - Client implementations template

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 10:44:23 -06:00
..
docker feat: Initial workspace structure with multi-level Git configuration 2025-12-08 10:44:23 -06:00
README.md feat: Initial workspace structure with multi-level Git configuration 2025-12-08 10:44:23 -06:00

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

  1. Merge a main/develop triggers CI
  2. CI pasa -> Build y tests
  3. Deploy automatico a ambiente correspondiente
  4. Health checks verifican deployment
  5. 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

  1. Crear Dockerfile.backend
  2. Crear Dockerfile.frontend
  3. Configurar GitHub Actions
  4. Configurar Sentry
  5. Crear scripts de deployment

Referencias


Ultima actualizacion: 2025-11-25 Version: 1.0.0