Saltar a contenido

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:

  1. K8s-native deployment: el MVP DEBE deployarse fácil en K8s. Tomar prestado de Argo:
  2. Helm chart oficial
  3. CRDs opcionales para definir processes via K8s API
  4. Integration con K8s logs, metrics, RBAC

  5. Container step option: para casos avanzados, permitir que un service task se ejecute como K8s pod en vez de worker:

    <bpmn:serviceTask id="train-model">
      <zeebe:taskDefinition type="builtin:k8s-pod" />
      <zeebe:taskHeaders>
        <zeebe:header key="image" value="ml-trainer:v2" />
        <zeebe:header key="cpu" value="4" />
        <zeebe:header key="memory" value="16Gi" />
      </zeebe:taskHeaders>
    </bpmn:serviceTask>
    
    El engine spawn un Pod, espera completion, recolecta logs/output.

  6. 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.