O documento descreve a evolução da arquitetura do LinkApi para suportar 1 milhão de integrações por minuto. Inicialmente usava Node.js com Straw, mas isso limitava a 20 mil tasks simultâneas. Depois mudou para Node.js com RabbitMQ e Docker, o que melhorou o desempenho e escalabilidade, permitindo processar mais tasks em paralelo. A nova arquitetura usa RabbitMQ para filas robustas e workers em containers Docker para processar as tasks de forma escalável.
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
A história do LinkApi, como chegamos numa arquitetura para suportar 1 milhão de integrações por minuto
1. A História do LinkApi, como
chegamos numa Arquitetura para
suportar 1 milhão de integrações
por minuto.
Waldyr Felix
CTO da Orange Founders
Head de Tecnologia da Fcamara
Daniel Loscheck
Desenvolvedor do LinkApi
Consultor da FCamara
ȗ
4. Node.js + Straw
• Node.js possui I/O não bloqueante
• Baixo workload
• Alta produtividade na criação de novos conectores
• Straw facilita a distribuição dos processos
• Framework de processamento em tempo real
• Bug sem solução ao chegar em 20 mil tasks simultâneas L
5.
6. Python + Celery
• Solução robusta e bastante conhecida do mercado
• Maior case de sucesso: Mozilla
• Documentação mais completa que o Straw
• Ninguém sabe Python L
• Celery é bem mais complexo do que o Straw L
7.
8. Node.js + Kue + Redis
• Extremamente performático
• Implementação simples
• Fácil de configurar e manter
• Documentação fraca L
• Bug causando o não fechamento das conexões do Redis L
9.
10. Node.js + RabbitMQ + Docker
• Extremamente performático
• Fácil de manter e escalar
• Aumentou a complexidade da solução L
• Funciona J
11.
12. O que mudou no LinkApi?
Get
Integration
Get Trigger
Trigger
Exec
Create
Task
Get Action
Action
Exec
Get
Integration
Trigger
Exec
Action
Exec
14. • Robustez com o RabbitMQ
• Escalabilidade com mais nós do RabbitMQ em cluster
• Escalabilidade com mais Workers (containers do docker)
• docker service scale linkapi_trigger=3 linkapi_action=10
• Vazão de tasks dos Workers agora é parametrizável
• Métricas de mensageria com o painel do RabbitMQ
Ganhos com o novo LinkApi?
15.
16. Visão do futuro para o LinkApi
• Tudo como container
• Esquema de filas por integração
• Integrações por webhook
• API’s de consulta para os clientes
• Melhoria de UX