🧵 Como a paralelização Acelerou o Defendia Em 13.000%.
🚀 Defendia: Massivamente Paralelo
Nos últimos meses, nossa equipe trabalhou incansavelmente para turbinar o Defendia, uma plataforma que encontra vulnerabilidades em sites de forma rápida, eficiente e, o melhor de tudo, barata! E transformamos o Defendia em um programa MASSIVAMENTE PARALELO! Mas... Como tudo isso funciona?
🔎 Conheça o "Inspectio" - O Coração do Defendia
Dentro da nossa plataforma, temos um programa que faz o trabalho pesado: é o Inspectio! Pense nele como o cérebro que faz a análise de vulnerabilidades. Escrito em Rust e projetado para ser massivamente paralelo, ele segue a premissa:
"Tudo que pode rodar em paralelo, roda em paralelo!"
👨🔬 Resultados Impressionantes em Números
Estamos empolgados em compartilhar que já analisamos mais de 700 sites! Mas aqui vai uma questão intrigante: e se nosso sistema fosse sequencial? Quanto tempo teríamos gasto?
Decidimos colocar isso à prova e rodamos uma série de scans sequenciais, comparando com a versão paralela. Os resultados foram surpreendentes! Confira:
- Site X:
Sequencial 231.87s
|Paralelo 18.72s
- Site Y:
Sequencial 90.42s
|Paralelo 7.88s
- ...
No final das contas, nosso speedup foi de aproximadamente 13.000%, ou seja, 13 vezes mais rápido! 🥳
Na média, nossos scans no Defendia levam cerca de 27s (com o pior caso em 56s e o melhor em 7s).
➕ E Quanto Tempo Economizamos?
Vamos às contas!
Calculamos o tempo total que gastaríamos na versão paralela:
Em média, o Defendia gastou apenas 5.25 horas para escanear 700 sites. Mas e se tudo tivesse sido sequencial, considerando nosso \alpha=13 (speedup de 13x)?
Resumindo: em vez de gastar 68,25 horas para escanear 700 sites, conseguimos fazer isso em apenas 5,25 horas! Uma economia de mais de 63 HORAS! ⏳✨
💡 Por Que Optamos pelo Paralelismo? E Você Deveria?
O Inspectio é projetado para executar 67 elementos em paralelo, todos com uma característica importante em comum: NÃO TÊM DEPENDÊNCIA DE DADOS. Isso significa que não precisamos executar uma tarefa antes da outra; elas podem rodar simultaneamente, tornando tudo mais ágil!
Além disso, o Inspectio usa pouquíssimo poder da CPU, facilitando o escalonamento entre as threads.
Você deve implementar seu programa em paralelo? A resposta é... depende! 😊 Uma boa dica para saber é perguntar: "Este pedaço de código precisa ser executado antes ou depois de outro? Ou pode ser executado ao mesmo tempo?" Se a resposta for "não precisa ser sequencial", talvez o paralelismo seja o caminho a seguir!
🛠️ Arquitetura do Inspectio
Para facilitar a compreensão de como o Inspectio é realmente massivamente paralelo, confira este diagrama simplificado que ilustra a quantidade de fork-joins que nosso programa possui!
🎇 Agradecimentos
Obrigado por ler até aqui! Fiquem a vontade para escreverem sugestões e feedbacks!
Aproveita e checa o Defendia para deixar seu site mais seguro 😊