Executando verificação de segurança...
1

🧵 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:

\text{TTParalelo} = \text{média} \times \text{scansTotais} \rightarrow 27s \times 700 = 18900s \text{ (ou 5.25 horas)}

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)?

\text{TTSequencial} = \text{TTParalelo} \times \text{speedUp} \rightarrow 18900 \times 13 = 245700s \text{ ou 68.25 horas!}

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!

DiagramaDefendia

🎇 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 😊

Carregando publicação patrocinada...
1
1