Saltar a contenido

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%