Arquivo de tag golang

porAndré Luis Pereira dos Santos

Go e Concorrência: A Série

Programação Concorente

Artigos da Série:

Talvez a característica mais legal da linguagem Go seja suas primitivas para escrita de código concorrente e as formas adotadas de tornar segura o uso de variáveis nestes ambientes.

Programação concorrente nunca foi um assunto trivial.

Sempre foi fonte de infindáveis bugs, muitas vezes difíceis de detectar e debugar.

Desenvolvedores de várias gerações lidaram com este assunto fazendo uso de mutexes, semáforos etc, fazendo deste tipo de programação parecer quase uma bruxaria.

Estou iniciando uma série de artigos e vídeos a partir de hoje com o intuito de ajudar desenvolvedores da linguagem Go ou aqueles que desejam iniciar seu aprendizado nela, a produzir software que aproveite de maneira mais eficiente e elegante a concorrência.

Material completamente gratuito.

Falarei sobre:

  • problemas que podem aproveitar concorrência em seu processamento
  • cuidados
  • formas de debug e profiling
  • aspectos técnicos e formais
  • boas práticas e padrões
  • dentre outras coisas

Sinto que falta um material detalhado sobre este assunto para os falantes da língua portuguesa, e essa é uma maneira que encontrei para fechar um pouco o gap.

Espero ajudar, inclusive os desenvolvedores mais novos com material da maior qualidade que eu possa produzir.

Por fim, se você gostou da iniciativa, e puder, com o QR Code abaixo, pode me pagar um café.

Com ele você me envia um PIX com o valor que você escolher.

Ou se preferir, envie usando minha chave: [email protected]

pague-um-cafe Go e Concorrência: A Série
porAndré Luis Pereira dos Santos

Analisando tráfego UDP em Go utilizando Machine Learning – Começando

Como dito em post anterior,estou iniciando um pequeno projeto para verificar a viabilidade de uso de algumas bibliotecas em Go (Golang) para capturar pacotes UDP, analisá-los com um algorítimo de ML (Isolation Forest) e gerar alertas para discrepâncias (outliers).

Esse projeto possui potencial de uso em ferramentas de segurança de redes.

Na prática, ao que parece, nada me impediria de capturar tráfego de outros protocolos e fazer o mesmo, mas decidi iniciar com UDP por simplicidade.

Estou na fase de modelagem utilizando-me da biblioteca GoLearn (https://github.com/sjwhitworth/golearn) de ML e a biblioteca do Google Gopacket (https://github.com/google/gopacket) que me disponibiliza captura e processamento de pacotes de rede e outras facilidades relacionadas.

Vou descrever algumas idéias iniciais, já que estou nelas para daí gerar uma prova de conceito:

  • Captura de pacotes durante tráfego normal da rede
  • Filtragem dos pacotes para obtenção só dos que são UDP
  • Gravação dos pacotes e metadados em arquivo CSV que é a amostra de treino
  • Carregamento do CSV e treino da Isolation Forest
  • Passagem em tempo real de tráfego capturado através da Isolation Forest para obtenção de sua pontuação

Dessa maneira, ao final, cada pacote capturado em tempo real passa pela Isolation Forest “treinada” e obtêm-se sua pontuação indicando conforme a faixa, se aquele pacote representa um outlier (discrepância) ou não, possibilitando a emissão de alertas imediatos.

Lembrando que o algorítimo de Isolation Forest é um algorítimo de aprendizagem não-supervisionada.

Basicamente essa é a ideia. Agora vou partir para modelar uma arquitetura que torne possível a reutilização de componentes neste software e que ao mesmo tempo possibilite alto throghput.

*Photo by Robynne Hu on Unsplash

porAndré Luis Pereira dos Santos

Detecção de anomalias de tráfego em redes com ML e Go

Estou desenvolvendo um pequeno projeto para detecção de anomalias que indiquem tráfego malicioso em redes.

A ideia é capturar o tráfego em tempo real com um software feito em Go utilizando a biblioteca do Google gopacket (https://github.com/google/gopacket).

Após isso, utilizar o algorítimo de machine learning Isolation Forest para detectar anomalias (outliers) no tráfego que é capturado no formato pcap.

O Isolation Forest é relativamente rápido e simples de lidar, além de ser um algorítimo não-supervisionado, o que facilita muito as coisas.

A motivação para o desenvolvimento é dar maior proteção para clientes em suas redes, que muitas vezes misturam servidores e estações de trabalho.

Mais tarde pretendo implementar ações pró-ativas e reativas na rede de forma autônoma com base nesta detecção de anomalias.

Em mais alguns dias subirei um repositório no Github com o código liberado como opensource. 🙂