Slides da talk Criando um Sistema de auditoria com Go, ElasticSearch e Kibana. A talk ocorreu no The Developers Conference em Porto Alegre. Link http://www.thedevelopersconference.com.br/#descricao-122
2. Sobre a talk
● O desafio
● O cenário
● Ideias
● Solução
● Por que Go?
3. Sobre mim
● Trabalho na Conta Azul
○ Faço parte do time que está
revolucionando o mercado contábil
com o Conta Azul Mais
● 8 meses usando a marmotinha
gabrielfeitosa gabrielfeitosa
gabfeitosa_ gabfeitosa@gmail.com
4. O desafio
Auditar 8 microsserviços em um curto espaço de tempo
e levar em consideração a economia extrema de
recursos (memória, cpu, disco, …)
type Audit struct {
ID int64 `json:"id"`
IDCorrelation int `json:"correlation_id"`
Module string `json:"module"`
Action string `json:"action"`
Login string `json:"login"`
TransactionAt time.Time `json:"transaction_at"`
Entity string `json:"entity"`
IP string `json:"ip"`
Location Location `json:"location"`
}
5. O cenário
● Time com domínio em Java
● Todos os módulos usavam Spring Boot
● Recursos de infra limitados
○ Servidor próprio
● ElasticSearch usado em outro projeto
○ Bem subutilizado
● RabbitMQ já era utilizado pelo projeto
7. Como vamos coletar os dados?
Extrair direto do banco de dados?
Alterar código?
8. E a exibição dos dados?
“Pensamos em criar um ultra, mega, power sistema que
permite montar dashboards e extrair relatórios de forma
dinâmica!”
O empolgado
10. Como capturar os dados?
Interceptamos com o Event Listener
http://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#events
https://dzone.com/articles/spring-managed-hibernate-event-listeners
11. E os dados vão para onde?
Para um tópico no RabbitMQ, pois ele já é usado em outros
cenários
13. Como o time foi convencido a
adotar Go?
● Simples
● Performático
● Imagem docker minúscula (A infra pira)
● Exemplo (RabbitMQ e ElasticSearch)
● Não era para o produto
14. E a auditoria? O ElasticSearch mata no peito e
o Kibana faz o gol