Orquestração de tarefas
1) Porquê orquestração
A plataforma iGaming é uma dúzia de cadeias passíveis (depósitos, conclusões, KYC/AML, apostas/setles, bônus, incidentes). A orquestra transforma chamadas separadas em processos controlados com tempo, qualidade e audibilidade previsíveis:- redução de MTTR e «rotina manual»;
- cumprimento de SLA e prazos regulatórios;
- distribuição justa da capacidade entre tenentes e regiões;
- transparência de estatais e responsabilidades (RACI).
2) Princípios
Orchestrate the critical, choreograph the rest. Cadeias críticas (pagamentos, conclusões, setl) - sob orquestrador centralizado; secundário - evento (pub/sub).
SLA-first. Cada tarefa tem prioridade, SLO, deadline e estratégia de escalação.
Idempotidade e at-least-once. Qualquer ação pode ser repetida sem efeitos colaterais.
Compensação em vez de reversão de BD. Sagas para efeitos externos.
Fair-share e isolamento. Quotas per-tenante/região/classe de tarefas, proteção contra «desordem».
Policy-as-Code. Regras de roteamento, retrações, tolerâncias são políticas versionáveis.
Observabilidade by design. Métricas/trailers/logs em cada passo.
3) Modelo de domínio da orquestração
Trabalho atômico → Activity → Processo/Workflow.
Estados da tarefa: 'queued → leased → running → (succeeded | failed | timed _ out | cancelled) → arquived'.
Atributos-chave: 'priority', 'deadline', 'tenant', 'region', 'cost _ class',' risk _ class', 'idempotency _ key'.
4) Arquitetura
Orquestrador: armazena o gráfico de processos, filas, temporizadores, deadline, RACI, rotação.
Vereadores (executors): estateless, assinados na fila do domínio (Payments/KYC/Games/Infra). Modelo Lease + heartbeat.
Gateway de eventos: outbox/inbox para garantia de integração com sistemas externos.
Armazenamento de estado: registro de processos (WORM/imutable porções para auditoria).
Diretório de políticas: priorização, quotas, retais, reversões, SoD.
5) Filas, prioridades e planejamento
Classes de QoS:- A (Real-time): depósitos/apostas/setles - p95 atrasos de segundos, filas individuais e pulas.
- B (Operational): KYC, relatórios aos provedores - minutos.
- C (Batch/Analytics): agregações/exportação - relógio.
- Planejador: multi-queue com priority + deadline; algoritmos: priority + EDF, weighted fair-share per-tenante/região.
- Work-stealing: Os rolos executados «roubam» tarefas das filas ao lado dentro da mesma classe de QoS.
- Deadline: para risco de atraso → aumento da prioridade ou do ramo degrade.
6) Garantias e sustentabilidade
At-least-once + idempotência. 'idempotency _ key' (chave de negócio) e fixação de resultados.
Retriable by policy: backoff exponencial + jitter; orçamento de tentativas; circuito-breaker para dependências externas.
Timeouts: 'task _ timeout <SLA _ step', 'processo _ deadline <regulatório'.
DLQ: filas individuais para tarefas «venenosas»; anistia manual com contexto completo.
Compensações (saga): definidas para cada operação «forte» (capture/refund, ledger _ post/revert etc.).
7) Backpressure e proteção de plataforma
Quotas e limites: per-tenante/região/tipo de tarefa (QPS, concurrent, memory/CPU).
Controle de admissão: falha/defeito de baixa prioridade no preenchimento do pool.
Shedding: redução de carga suave (partial results, degrade-fici) em vez do feed total.
Rate-limits: para entrada, por provedor (PSP/KYC), banco/BIN.
Histerese: impede o flapping de ativações/interrupções.
8) Região multi e resistência a falhas
Localização de tráfego: O orquestrador mantém os processos mais próximos dos dados/provedores.
Só para passos idumpotentes e depois de verificações quorum.
Estoque de estado: replicação com alvos RPO/RTO; write-fence vs split-brain.
«Stop the bleed» - parar novas tarefas na região afetada, descolando as que existem para ramos seguros.
9) Human-in-the-loop и RACI
Human-tasks: passos integrados com folha de cheque, SLA, anexos.
SoD/4-eyes: Papéis incompatíveis para ações sensíveis (conclusões, limites de bónus, routing PSP).
Escalações: temporizadores «nudge → reassign → L2/L3 → IC».
Auditoria: quem/o/o/o/porquê, referência ao tíquete/política.
10) Políticas como código (Policy-as-Code)
Exemplos (pseudo-Rego):- Roda PSP: 'rota = PSP2 if PSP1. health < SLO && tenant in {A,B} && within_quota(PSP2)`
- Alta prioridade: 'priority = P1 if deadline <10m & processo in
- Unidade de exportação PII: 'deny if export. rate > baselineK &&!ticket && data_class=PII`
As políticas são versionizadas, testadas, reviradas como um código normal.
11) Observabilidade
SLI do processo: proporção de concluições bem sucedidas, p95/p99 duração, porcentagem de atrasos.
Filas SLI: idade das tarefas, throughput, falha por admissão, DLQ-rate.
Trailers: spans em cada etapa (correlação 'trace _ id' com pagamento/taxa/CUS).
Logi: estruturados, sem PII; as razões das retrações/temporais/compensações.
Dashboards: Exec (SLA/atrasos/custo), Ops (lag/reties/DLQ), Domain (ramais PSP, KYC SLA).
Alerts: burn-rate deadline, surto de DLQ, aumento do tempo de passo, filas quentes.
12) Custo (FinOps orquestração)
KPI: $/processo, $/tarefa, $/retrai, $/min SLA violações.
Otimizações: batch para Class-C, agregação de sinais, downsampling de revistas longas, limites para processos «longos».
Shaw/Charge-back: o tenente vê sua marca (filas/armazenamento/retrai).
13) Segurança e complacência
ABAC/RBAC: acesso a processos por papel/tenante/região/ambiente.
JIT/PAM: aumentos temporários para passos manuais.
Assinar webhooks/mTLS: integridade do evento.
Auditoria WORM: registros não alterados; política de TTL/camuflagem para PII.
SoD: Proibir a combinação de «initsiirovat→odobrit→provesti» em uma única pessoa.
14) Catálogo de orquestras típicas (iGaming)
1. Депозит: `init → 3DS/auth → capture → ledger_post → bonus_credit → notify`.
Compensações: 'ledger _ revert, refund _ capture'.
Políticas: redistribuição do PSP ao cair auth-sucess.
2. Вывод: `request → risk_score → 4-eyes approve → payout → registry → notify`.
Escaladas SLA, unidade para anomalias velocity.
3. KYC/AML: `collect → providerA → (fallback providerB) → manual review → finalize`.
Deadline de regulação; DLQ para erros de raias.
4. Aposta/setl: 'reserve → fix _ odds → confirm → setle → payout'.
O ramo Degrade para a fila de lag (limitação de fichas secundárias).
5. Инцидент: `detect → classify (P1–P4) → war-room → actions → close → post-mortem`.
15) Modelos (fatias)
Tarefas Spec (YAML):yaml id: payments. capture qos: A priority: P1 deadline: 2m timeout: 2s retry:
strategy: exponential_jitter max_attempts: 5 idempotency_key: ${payment_id}
saga:
compensate: payments. refund_capture
Política de prioridade:
yaml rule: "priority-escalation"
if: "deadline < 5m && qos == 'A'"
then: "priority = P1"
Human-task (4-eyes):
yaml id: withdrawal. approval type: human sod: true approvers: [Risk, Finance]
sla: 2h on_timeout: escalate:L2
16) Processos de operação
Release-gates: bloco de lançamentos perigosos com filas/processos em vermelho SLI.
Dias Tabletop/chaos: desligamentos de PSP/réplicas/filas; verificação de retrações/compensações.
Review trimestral: liminares, quotas, valor, tendências DLQ, exceções SoD.
17) Mapa de trânsito de implementação (8-12 semanas)
Ned. 1-2: inventário de cadeias (depósito/retirada/CUS/setl), alvos SLA, classes de QoS, matriz de prioridades e quotas.
Ned. 3-4: Orquestrador + filas, MVP de processos «Depósito/Retirada», Processadores Idumpotentes, DLQ, Políticas Básicas de Retrações/Time-Out.
Ned. 5-6: sagas e compensações, human-tasks (4-eyes), fair-share per-tenante, dashboards e filas SLI.
Ned. 7-8: região multi (localização/feelover), release-gates, alerts (burn-rate deadline), painel FinOps.
Ned. 9-10: extensão do catálogo (CUS/bónus/incidentes), políticas (PSP-routing/PII-exportação), auditoria do WORM.
Ned. 11-12: exercício de chaos, otimização de custos, regulamentos de RACI/SoD, treinamento de coll.
18) KPI/KRI Orquestra
Processos SLA (execução a tempo), p95/p99 duração.
Atrasos e parte dos domínios/tenentes.
Retried/Task ratio, DLQ-rate, Compensation-rate.
Fair-share cumprimento (tenante não «fome»).
Custo: $/processo, $/tarefa, $/retrai.
Incidentes por causa da orquestra (flapping, dedlocks, filas sobrecarregadas).
19) Antipattern
Uma prioridade «universal» sem classes de QoS.
Retraias sem idempotação → duplicação de pagamentos.
Restartes Liveness Workers em falhas externas → avalanche.
Não há quotas para tenante/região → o vizinho «comeu» todo o pool.
Passos longos sem tempo/deadline → processos pendentes.
A falta de sagas → «desfalques» manuais e riscos financeiros.
Revistas em branco/sem pistas → não provar correto.
Resultado
A orquestração de tarefas é uma fábrica de processos gerenciável: segmentação correta de QoS e prioridades, garantia de entrega e idempotação, compensação e dedução, isolamento justo dos tenentes/regiões, além de observabilidade e segurança como parte do design. Este caminho oferece operações previsíveis, resistência a falhas de provedores e conformidade com os reguladores - sem o preço de micrimensíveis manuais.