SlideShare uma empresa Scribd logo
1 de 17
Baixar para ler offline
Criando um sistema
de auditoria com Go,
ElasticSearch e
Kibana
Gabriel Feitosa
Sobre a talk
● O desafio
● O cenário
● Ideias
● Solução
● Por que Go?
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
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"`
}
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
Arquitetura
Como vamos coletar os dados?
Extrair direto do banco de dados?
Alterar código?
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
E aí, qual a solução?
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
E os dados vão para onde?
Para um tópico no RabbitMQ, pois ele já é usado em outros
cenários
Quem vai ler as mensagens?
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
E a auditoria?
O ElasticSearch mata no peito e
o Kibana faz o gol
Arquitetura
Bora ver
funcionando?
Link da demo: https://github.com/gabrielfeitosa/tdc-audit
Obrigado
Dúvidas?
Estamos contratando

Mais conteúdo relacionado

Semelhante a Auditoria com Go, ElasticSearch e Kibana

Gerência de Projetos de Software - Aula 3 [SCRUM]
Gerência de Projetos de Software - Aula 3 [SCRUM]Gerência de Projetos de Software - Aula 3 [SCRUM]
Gerência de Projetos de Software - Aula 3 [SCRUM]Adson Cunha, MSc, PMP®
 
Clean code - Qualidade em desenvolvimento de Software
Clean code - Qualidade em desenvolvimento de SoftwareClean code - Qualidade em desenvolvimento de Software
Clean code - Qualidade em desenvolvimento de SoftwareGabriel Felipe Soares
 
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchXen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchBernardo Donadio
 
Gerenciamento de Memória
Gerenciamento de MemóriaGerenciamento de Memória
Gerenciamento de MemóriaCDS
 
C Sharp - Gerenciamento de Memória
C Sharp - Gerenciamento de MemóriaC Sharp - Gerenciamento de Memória
C Sharp - Gerenciamento de MemóriaCDS
 
Big Data como Serviço: da captura à visualização de dados com alto desempenho
Big Data como Serviço: da captura à visualização de dados com alto desempenhoBig Data como Serviço: da captura à visualização de dados com alto desempenho
Big Data como Serviço: da captura à visualização de dados com alto desempenhoRicardo Longa
 
Secot banco de dados no sql de código aberto
Secot   banco de dados no sql de código abertoSecot   banco de dados no sql de código aberto
Secot banco de dados no sql de código abertoSuissa
 
TDC 2017 - Borg até o Prometheus: Site Reliability Engineering
TDC 2017 - Borg até o Prometheus: Site Reliability EngineeringTDC 2017 - Borg até o Prometheus: Site Reliability Engineering
TDC 2017 - Borg até o Prometheus: Site Reliability EngineeringFelipe Klerk Signorini
 
Splunklive! Universo Online
Splunklive! Universo OnlineSplunklive! Universo Online
Splunklive! Universo OnlineSplunk
 
DevOps Summit Brasil - O que não te contaram sobre Agile Testing
DevOps Summit Brasil - O que não te contaram sobre Agile TestingDevOps Summit Brasil - O que não te contaram sobre Agile Testing
DevOps Summit Brasil - O que não te contaram sobre Agile TestingSamanta Cicilia
 
O Raio-X de um Projeto Ágil: Erros e Acertos no Desenvolvimento de uma Plataf...
O Raio-X de um Projeto Ágil: Erros e Acertos no Desenvolvimento de uma Plataf...O Raio-X de um Projeto Ágil: Erros e Acertos no Desenvolvimento de uma Plataf...
O Raio-X de um Projeto Ágil: Erros e Acertos no Desenvolvimento de uma Plataf...Rodrigo Veiga
 
Quebrando Histórias de Usuário
Quebrando Histórias de UsuárioQuebrando Histórias de Usuário
Quebrando Histórias de UsuárioGiuliano Sposito
 
Testes em todos os niveis de planejamento
Testes em todos os niveis de planejamentoTestes em todos os niveis de planejamento
Testes em todos os niveis de planejamentoElias Nogueira
 
Scrum e o Ambiente de Desenvolvimento Ágil
Scrum e o Ambiente de Desenvolvimento ÁgilScrum e o Ambiente de Desenvolvimento Ágil
Scrum e o Ambiente de Desenvolvimento Ágilabacrazy
 
Utilizando SCRUM em Contratos de Preço-Fixo
Utilizando SCRUM em Contratos de Preço-FixoUtilizando SCRUM em Contratos de Preço-Fixo
Utilizando SCRUM em Contratos de Preço-FixoEduardo Peres
 
Stream Processing: Uma visão geral - TDC Porto Alegre / FISL 17
Stream Processing: Uma visão geral - TDC Porto Alegre / FISL 17Stream Processing: Uma visão geral - TDC Porto Alegre / FISL 17
Stream Processing: Uma visão geral - TDC Porto Alegre / FISL 17Otávio Carvalho
 

Semelhante a Auditoria com Go, ElasticSearch e Kibana (20)

Gerência de Projetos de Software - Aula 3 [SCRUM]
Gerência de Projetos de Software - Aula 3 [SCRUM]Gerência de Projetos de Software - Aula 3 [SCRUM]
Gerência de Projetos de Software - Aula 3 [SCRUM]
 
Clean code - Qualidade em desenvolvimento de Software
Clean code - Qualidade em desenvolvimento de SoftwareClean code - Qualidade em desenvolvimento de Software
Clean code - Qualidade em desenvolvimento de Software
 
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchXen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
 
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + ScrumDDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
 
Gerenciamento de Memória
Gerenciamento de MemóriaGerenciamento de Memória
Gerenciamento de Memória
 
C Sharp - Gerenciamento de Memória
C Sharp - Gerenciamento de MemóriaC Sharp - Gerenciamento de Memória
C Sharp - Gerenciamento de Memória
 
Big Data como Serviço: da captura à visualização de dados com alto desempenho
Big Data como Serviço: da captura à visualização de dados com alto desempenhoBig Data como Serviço: da captura à visualização de dados com alto desempenho
Big Data como Serviço: da captura à visualização de dados com alto desempenho
 
Secot banco de dados no sql de código aberto
Secot   banco de dados no sql de código abertoSecot   banco de dados no sql de código aberto
Secot banco de dados no sql de código aberto
 
Agilidade: Scrum e Xp
Agilidade: Scrum e XpAgilidade: Scrum e Xp
Agilidade: Scrum e Xp
 
TDC 2017 - Borg até o Prometheus: Site Reliability Engineering
TDC 2017 - Borg até o Prometheus: Site Reliability EngineeringTDC 2017 - Borg até o Prometheus: Site Reliability Engineering
TDC 2017 - Borg até o Prometheus: Site Reliability Engineering
 
Splunklive! Universo Online
Splunklive! Universo OnlineSplunklive! Universo Online
Splunklive! Universo Online
 
DevOps Summit Brasil - O que não te contaram sobre Agile Testing
DevOps Summit Brasil - O que não te contaram sobre Agile TestingDevOps Summit Brasil - O que não te contaram sobre Agile Testing
DevOps Summit Brasil - O que não te contaram sobre Agile Testing
 
Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1
 
Secomp 2018 - DO Ruby ao Elixir
Secomp 2018 - DO Ruby ao ElixirSecomp 2018 - DO Ruby ao Elixir
Secomp 2018 - DO Ruby ao Elixir
 
O Raio-X de um Projeto Ágil: Erros e Acertos no Desenvolvimento de uma Plataf...
O Raio-X de um Projeto Ágil: Erros e Acertos no Desenvolvimento de uma Plataf...O Raio-X de um Projeto Ágil: Erros e Acertos no Desenvolvimento de uma Plataf...
O Raio-X de um Projeto Ágil: Erros e Acertos no Desenvolvimento de uma Plataf...
 
Quebrando Histórias de Usuário
Quebrando Histórias de UsuárioQuebrando Histórias de Usuário
Quebrando Histórias de Usuário
 
Testes em todos os niveis de planejamento
Testes em todos os niveis de planejamentoTestes em todos os niveis de planejamento
Testes em todos os niveis de planejamento
 
Scrum e o Ambiente de Desenvolvimento Ágil
Scrum e o Ambiente de Desenvolvimento ÁgilScrum e o Ambiente de Desenvolvimento Ágil
Scrum e o Ambiente de Desenvolvimento Ágil
 
Utilizando SCRUM em Contratos de Preço-Fixo
Utilizando SCRUM em Contratos de Preço-FixoUtilizando SCRUM em Contratos de Preço-Fixo
Utilizando SCRUM em Contratos de Preço-Fixo
 
Stream Processing: Uma visão geral - TDC Porto Alegre / FISL 17
Stream Processing: Uma visão geral - TDC Porto Alegre / FISL 17Stream Processing: Uma visão geral - TDC Porto Alegre / FISL 17
Stream Processing: Uma visão geral - TDC Porto Alegre / FISL 17
 

Auditoria com Go, ElasticSearch e Kibana

  • 1. Criando um sistema de auditoria com Go, ElasticSearch e Kibana Gabriel Feitosa
  • 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
  • 9. E aí, qual a solução?
  • 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
  • 12. Quem vai ler as mensagens?
  • 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
  • 16. Bora ver funcionando? Link da demo: https://github.com/gabrielfeitosa/tdc-audit