Camunda 8 Vs Argo
Camunda 8 (BPMN + Zeebe engine) y Argo Workflows (Kubernetes controller) NO son competidores reales. Camunda apunta a business workflows con human tasks y BPMN compliance. Argo apunta a containerized pipelines (CI/CD, ML, ETL) en Kubernetes. Son complementarios — pueden coexistir. Para MVP "drop-in Camunda": NO replicar Argo, pero asegurar deployment K8s-native.
Diferente target use case¶
| Dimensión | Camunda 8 | Argo Workflows |
|---|---|---|
| Primary workflow type | Business processes | Containerized pipelines |
| Sweet spot | Long-running + human tasks | Short batch + parallel containers |
| Audience | Business + devs | DevOps + data engineers |
| Stakeholder visibility | Business analysts ven BPMN | DevOps ven YAML |
| Example workflow | Loan approval (días) | ML training pipeline (horas) |
Estos engines optimizan diferentes ejes — no son alternativas directas.
Architecture comparison¶
| Aspecto | Camunda 8 | Argo Workflows |
|---|---|---|
| Engine | Custom (Zeebe, Java) | Kubernetes controller (Go) |
| State store | RocksDB embedded | etcd (via K8s API) |
| Scheduling | Job worker pattern | K8s scheduler |
| Execution unit | External worker | Container pod |
| Scaling | Brokers + partitions | K8s HPA + nodes |
| Multi-tenancy | Native (8.5+) | K8s namespaces |
| Monitoring | Operate + Optimize | Argo UI + Prometheus |
Argo es un addon de Kubernetes. Camunda es un engine independiente que puede correr en K8s.
Workflow definition¶
Camunda BPMN¶
<bpmn:process id="loan-approval">
<bpmn:userTask id="review-application">
<zeebe:assignmentDefinition assignee="manager" />
</bpmn:userTask>
<bpmn:serviceTask id="check-credit">
<zeebe:taskDefinition type="credit-check" />
</bpmn:serviceTask>
<bpmn:exclusiveGateway id="decision" />
</bpmn:process>
Visual, hierarchical, BPMN-compliant.
Argo YAML¶
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: ml-pipeline-
spec:
entrypoint: main
templates:
- name: main
dag:
tasks:
- name: preprocess
template: preprocess
- name: train
template: train
dependencies: [preprocess]
- name: evaluate
template: evaluate
dependencies: [train]
- name: preprocess
container:
image: my-preprocessor:v1.2
resources:
requests: { memory: "1Gi", cpu: "1" }
YAML-as-code, container-based, K8s-native.
Capabilities¶
Camunda exclusivo¶
- Human tasks (Tasklist UI)
- BPMN visual modeling
- DMN decision tables
- Process mining (Optimize)
- Message correlation
- Long-running (days/weeks)
- Multi-stakeholder workflows
Argo exclusivo¶
- Container-native (every step is an image)
- K8s-native (Pods, ConfigMaps, Secrets, RBAC)
- GPU scheduling
- Resource limits per step
- Image-based isolation
- Parameter passing between containers
- Loop with
withItems/withParam
Operational comparison¶
| Aspecto | Camunda 8 | Argo Workflows |
|---|---|---|
| Install | Helm chart o standalone | Helm chart en K8s |
| State location | RocksDB en brokers | etcd compartido con K8s |
| Logs | Worker logs + Operate | kubectl logs pods |
| Scaling | Manual broker count | K8s HPA automático |
| Costs | Brokers always running | Pods on-demand |
Argo tiene menor cost en idle (no brokers corriendo). Camunda tiene lower latency per step (no pod scheduling overhead).
Performance characteristics¶
| Métrica | Camunda 8 | Argo Workflows |
|---|---|---|
| Workflow startup | ms (acquire job) | seconds (pod schedule + start) |
| Per-step overhead | ms (worker invocation) | seconds (pod startup) |
| Best for | Many short steps | Fewer long steps |
| Throughput | 375 TPS (Intuit benchmark) | Limited by K8s scheduler |
Cuando importa: - Camunda gana si tienes 1000s de workflows/sec con steps quick - Argo gana si tienes 10s de workflows con steps that take minutes
Complementariedad¶
Estos engines pueden coexistir en una organización:
flowchart TD
BW[Business workflows<br/>human + system]
CM[Camunda 8 / MVP]
TA[Trigger Argo Workflow desde Camunda]
AW[Argo Workflows<br/>containers, parallel]
RR[Return result a Camunda]
BW --> CM
CM -->|cuando necesitas containerized pipeline| TA
TA --> AW --> RR
Patrón típico: - Camunda: loan approval workflow - Step: "evaluate creditworthiness via ML model" - Implementation: launch Argo workflow with ML pipeline - Camunda waits for Argo workflow to complete - Continue process
Para el MVP¶
Decisión: NO replicar Argo¶
Razones: 1. Target del MVP es BPMN business workflows, no containerized pipelines 2. Replicar Argo sería un engine completamente diferente 3. Argo ya existe y es excelente para su use case 4. K8s-native está fuera del scope core del MVP
Patterns aplicables¶
Limitados — pero hay algunos:
- K8s-native deployment: el MVP DEBE deployarse fácil en K8s. Tomar prestado de Argo:
- Helm chart oficial
- CRDs opcionales para definir processes via K8s API
-
Integration con K8s logs, metrics, RBAC
-
Container step option: para casos avanzados, permitir que un service task se ejecute como K8s pod en vez de worker:
El engine spawn un Pod, espera completion, recolecta logs/output. -
Trigger external Argo workflow: feature de integration con Argo si el usuario ya lo tiene.
Lo que NO copiar¶
- Engine architecture (Kubernetes controller pattern)
- YAML-only workflows (mantener BPMN como primary)
- DAG-only model (BPMN tiene más expressiveness)
- State en etcd (Postgres es mejor para business state)
Conclusión¶
Argo Workflows y Camunda 8 son complementarios, no competidores. El MVP puede coexistir con Argo: - MVP: business workflows (BPMN, human tasks, DMN) - Argo: technical pipelines (CI/CD, ML, ETL)
Patterns prestables son limitados — principalmente K8s-native deployment. NO replicar Argo architecture.
Esta comparación cierra el "competitive landscape" del MVP: - vs Camunda original: simplified clone - vs Temporal: different audience (BPMN required) - vs Conductor: different language (BPMN vs JSON) - vs Argo: different use case (business vs technical)
Cada uno tiene su nicho. El MVP apunta firmemente al nicho de Camunda.