Capacidad
La capa de datos bien hecha. Esquemas normalizados, queries rápidas, APIs documentadas que otros developers quieren usar. Databases que escalan, APIs que no se caen. No es glamoroso, pero es lo que hace que tu producto funcione cuando tienes usuarios reales haciendo cosas reales con data real.
Modelado relacional normalizado, definición de constraints, indexes estratégicos. Performance desde día 1.
CRUD completo, pagination, filtering, sorting. Rate limiting, versioning, error handling consistente. OpenAPI docs.
Schema design, resolvers optimizados, DataLoader para evitar N+1. Subscriptions real-time. Apollo Server/Client.
Query tuning, index analysis, slow query fixing. Partitioning para tables enormes. Migration sin downtime.
Migración de legacy databases. Data cleaning, transformation. Pipelines de sincronización entre sistemas.
WebSockets, Server-Sent Events, Pub/Sub. Collaborative editing, live dashboards, notifications instantáneas.
Elegimos base de datos según access patterns, no por hype. SQL cuando necesitas ACID, NoSQL cuando necesitas scale horizontal.
Nuestra favorita: PostgreSQL. JSONB para flexibilidad, full-text search, extensiones (PostGIS para geo). Migrations con Flyway/Liquibase.
Para schemas flexibles, eventos, logs, user-generated content. MongoDB con aggregation pipelines. DynamoDB para serverless.
Cache de queries caros, session storage, rate limiting, pub/sub real-time. Redis también para queues, leaderboards.
RESTful con OpenAPI/Swagger docs auto-generadas. Validation con JSON Schema. Consistent error responses.
Schema-first design. Resolvers optimizados con DataLoader. Real-time subscriptions. Apollo Federation para microservices.
Type-safe queries. Automatic migrations. Relation loading strategies. Pero no le tenemos miedo a raw SQL cuando performance importa.
Lo que esperarías de una API production-ready hecha por gente que sabe.
Normalización hasta 3NF (a veces desnormalización intencional para performance). Foreign keys, constraints, triggers. Soft deletes. Audit columns.
Versioning vía URL path o headers. Deprecation warnings. Migration guides. Backwards compatibility window definido. Sunset notices con antelación.
Cursor-based pagination para datasets grandes. Offset pagination para simplicidad. Filtros dinámicos por cualquier campo. Sorting multi-column. Full-text search.
JWT o OAuth 2.0. API keys para integraciones. Scopes/permissions por endpoint. Rate limiting por usuario/IP. CORS configurado apropiadamente.
HTTP status codes correctos. Error responses con mensaje, code, detalles. Validation errors con field-level messages. Stack traces solo en dev.
OpenAPI/Swagger spec auto-generada. Interactive API explorer. Postman collections. SDKs auto-generados para popular languages si es API pública.
Database indexes optimizados. Query caching con Redis. ETags para conditional requests. Compression (gzip). Connection pooling. Lazy loading de relaciones.
Structured logging con context. Slow query detection. API analytics (endpoints más usados, tiempos de respuesta). Error tracking con Sentry.
Transacciones ACID para operaciones críticas. Constraints a nivel DB. Automated daily backups. Point-in-time recovery. Backup testing trimestral.
Entendimiento de entidades, relaciones, access patterns. ERD completo. Decisión SQL vs NoSQL. Estimación de volumen de data y crecimiento.
1 semana
Definición de endpoints, request/response schemas. OpenAPI spec draft. Decisión REST vs GraphQL. Authentication strategy. Validación con frontend team.
1 semana
Database creation con migrations versionadas. API endpoints con tests. Mock data seeding para desarrollo. Integration tests. Performance benchmarks.
3-6 semanas
Query optimization, index tuning. Load testing con herramientas como k6 o Locust. Identificación de bottlenecks. Caching strategies. Connection pooling tuning.
1-2 semanas
OpenAPI docs finalizadas. Example requests/responses. Migration guides si es v2+. Changelog. Monitoring setup. Rollout a production con gradual traffic shifting.
1 semana