Mvp Feature Matrix
Clasificación de cada feature de Camunda 8 en tres categorías: esencial para un MVP, simplificable, o eliminable. Basada en el análisis del código fuente y la comprensión de por qué existe cada feature.
Tier 1 — Esencial (Core del workflow engine)¶
Estas features definen qué es un workflow engine. Sin ellas, no es un drop-in replacement.
| Feature | Camunda Impl | Recomendación Simplificada | Por qué es esencial |
|---|---|---|---|
| BPMN parsing | bpmn-model/ (XML → model) + BpmnTransformer (5 pasos) |
Parser XML + transformación directa en 1-2 pasos | Sin parser no hay workflow engine |
| Process deployment | Multi-partition distribution, versioning, checksums | Single-store deployment, version = auto-increment | Base para ejecutar workflows |
| Process instance creation | Gateway routing, partition selection | Direct creation in single store | Punto de entrada fundamental |
| Service task / Job worker | gRPC streaming + polling, timeout, retries | REST polling + webhooks, timeout, retries | Integración con servicios externos |
| Exclusive gateway | FEEL condition evaluation | Expresiones simples (JSONPath o subset FEEL) | Branching lógico |
| Parallel gateway | Fork + join via event scope counting | Fork + join via counter en DB | Ejecución paralela |
| User tasks | Tasklist UI, forms, assignment, candidateGroups | API-first, forms externas | Interacción humana |
| Start/End events | Multiple tipos (none, message, timer, signal) | None + message start events | Inicio y fin de procesos |
| Variables & scoping | Per-element-instance scoping, shadowing, propagation | Per-instance + per-task scoping | Datos del proceso |
| Incident management | Auto-creation on failure, manual resolution | Auto-creation, API resolution | Manejo de errores sin perder state |
| Timer events | DueDateCheckScheduler, cron, cycle, duration | Scheduler simple con cron + duration | Timeouts y scheduling |
| Message correlation | Cross-partition, dedup, TTL | Single-store correlation, dedup, TTL | Comunicación async |
| Sequence flows | Condition evaluation, default flow | Condition evaluation | Flujo entre elementos |
| Sub-processes | Embedded sub-process con scoping | Sub-process con scope aislado | Modularidad |
| Call activity | Cross-process invocation, variable mapping | Cross-process con variable mapping | Composición de procesos |
| State persistence | RocksDB + Raft log | PostgreSQL / SQLite | Durabilidad |
| REST API | /v2/ endpoints via Spring Boot |
REST API con OpenAPI spec | Acceso programático |
Tier 2 — Simplificable (Features valiosas pero over-engineered para un MVP)¶
| Feature | Camunda Impl | Simplificación Sugerida | Cuándo agregar |
|---|---|---|---|
| Clustering / HA | Raft consensus, multi-partition, multi-node | Single-node con WAL + backup/restore. HA via standby. | Cuando se necesite >1000 instances/sec |
| Backpressure | StabilizingAIMD, Netflix concurrency-limits | Rate limiting simple (token bucket) | Cuando haya carga real |
| Exporters | SPI + 4 implementaciones + batch processing | Direct SQL queries al state store + change data capture para analytics | Solo si se necesita ES/analytics |
| Search infrastructure | 9 módulos, 40+ readers, ES/OS/RDBMS backends | Queries SQL directas contra PostgreSQL | ES solo si se necesita full-text |
| Boundary events | Timer, message, error, signal, conditional, escalation, compensation | Timer + error boundary events | Los demás por demanda |
| Multi-instance | Sequential + parallel, collection-based, completion condition | Parallel multi-instance con collection | Sequential por demanda |
| Event sub-process | Interrupting + non-interrupting, multiple triggers | Interrupting error event sub-process | Non-interrupting por demanda |
| Inclusive gateway | Complex join/fork semantics | Implementar solo exclusive + parallel | Raro en la práctica |
| DMN evaluation | dmn-scala + feel-scala, inline evaluation | Integración con library existente, no inline | Solo si hay demanda |
| FEEL expressions | Full FEEL 1.4+ via feel-scala | Subset: literals, comparisons, basic functions. JSONPath como alternativa. | Full FEEL por demanda |
| Compensation | Subscription-based, recursive top-down/bottom-up | Manual via error handling | Raro en la práctica |
| Signal events | Broadcast to all partitions, signal subscriptions | Simplificar a message con broadcast semántica | Raro en la práctica |
| Authentication | OIDC multi-IdP, basic auth, gRPC interceptors | OIDC single-IdP + API keys | Multi-IdP por demanda |
| Authorization | 20 resource types, 40 permissions, scope-based | Role-based simple: admin, operator, worker | Fine-grained por demanda |
| Multi-tenancy | Tenant isolation via DB keys, transitive resolution | Tenant ID en cada entidad, filtro simple | Cuando haya >1 tenant |
| Operate (monitoring) | Full webapp con React, join relations, batch ops | Dashboard simple o CLI, queries SQL | Webapp full por demanda |
| Optimized batching | maxCommandsInBatch, batch size reduction on failure | Process one command at a time | Optimizar después de benchmarks |
Tier 3 — Eliminable (Features innecesarias para un replacement simplificado)¶
| Feature | Por qué existe en Camunda | Por qué eliminable |
|---|---|---|
| Optimize (analytics) | BI para grandes empresas, bottleneck detection | Queries ad-hoc en SQL cubren el 80% |
| Connector runtime | 40+ conectores pre-built | Los usuarios integran via job workers nativos |
| MCP gateway | AI tool integration (Spring AI) | Feature experimental, no core |
| Backup to S3/GCS/Azure | Disaster recovery para cloud | PostgreSQL pg_dump/backup suffice |
| Ad-hoc sub-process | BPMN spec compliance, case management | Muy raro en la práctica |
| Escalation events | BPMN spec compliance | Casi nunca usado |
| Conditional events | BPMN spec compliance | Reemplazable con message + timer |
| Execution listeners | Pre/post hooks en cada elemento | Implementable como middleware simple |
| Task listeners | Pre/post hooks en user tasks | Implementable como middleware |
| Process instance migration | Runtime version migration | Deploy new version + manual migration |
| Process instance modification | Runtime element activation/termination | Admin API para cancel + restart |
| Batch operations | Bulk cancel/migrate/resolve | Scripting vía API |
| SBE (Simple Binary Encoding) | Ultra-fast serialization | JSON o Protobuf son suficientes |
| MessagePack | Compact variable serialization | JSON es suficiente |
| Form embedding | Forms en BPMN XML | Forms como recurso separado |
| Priority-based election | Control de leader placement | No necesario para clusters pequeños |
| Dynamic cluster scaling | Online partition redistribution | Restart-based scaling |
Stack Tecnológico Sugerido para MVP¶
| Capa | Camunda Usa | Alternativa Simplificada |
|---|---|---|
| Lenguaje | Java 21 | Go, Rust, o TypeScript (según preferencia) |
| Build | Maven (monorepo) | Go modules / npm workspaces |
| State store | RocksDB (embedded) | PostgreSQL (o SQLite para single-node) |
| Consensus | Atomix/Raft (fork) | No (single-node MVP). Luego: etcd o NATS JetStream |
| API | gRPC + REST | REST-first (OpenAPI). WebSocket para streaming |
| Serialization | SBE + MessagePack | JSON (simple) o Protobuf (si performance) |
| Expressions | FEEL (feel-scala) | Subset FEEL propio, o CEL (Common Expression Language) |
| DMN | dmn-scala | Library existente o no incluir en MVP |
| Search | Elasticsearch 8.x | PostgreSQL con full-text search |
| UI framework | React (monorepo) | Framework ligero o headless API-first |
| Auth | Spring Security + OIDC | OAuth2 middleware estándar |
| Observability | Micrometer + custom metrics | OpenTelemetry nativo |
Estimación de Complejidad¶
| Componente | Camunda LOC (est.) | MVP LOC (est.) | Reducción |
|---|---|---|---|
| Engine core (processing) | ~200K | ~15-25K | 90% |
| BPMN parser + transformer | ~80K | ~10-15K | 85% |
| State management | ~100K | ~5-10K | 93% |
| API layer (gateway) | ~50K | ~5-8K | 87% |
| Job worker system | ~30K | ~3-5K | 87% |
| Resilience (timers, incidents) | ~40K | ~5-8K | 85% |
| Auth + tenancy | ~60K | ~3-5K | 93% |
| Monitoring UI | ~300K | ~10-20K | 95% |
| Total | ~860K | ~56-96K | ~90% |