Um Ode ao Graylog

[English Version]

Métricas são a chave para qualquer coisa que você queira fazer, provar ou mudar.

Não há espaço em um negócio competitivo para mudança de plataforma de forma aventureira ou mudança de código injustificável. As mudanças devem acontecer rapidamente e elas precisam resultar em uma atualização de qualidade precisa e mensurável para clientes e partes interessadas, além de qualquer dúvida razoável.

Como você pode ter seguido nos últimos posts, atualmente faço parte de uma mudança de tecnologia na empresa em que trabalho e, embora tenhamos tido sucessos palpáveis, nada é sem alguns problemas ao longo do caminho, é claro. Nos últimos meses, estamos mudando de um produto em que mesmo que precisássemos de muita infraestrutura pesada para ser executado, ele oferecia algumas boas ferramentas incorporadas para métricas que, uma vez que você deixasse essas plataformas para o que pode ser considerado “codificação regular” parece que deixou algo valioso para trás. Não fomos exceção a essa sensação.

Não muito antes de nossos serviços entrarem em produção, enfrentamos uma clara dificuldade em obter dados confiáveis ​​de nossos registros e métricas, dependendo da opinião de alguns desenvolvedores experientes e analistas de processos que passavam horas de mineração em logs de erros desconectados constantemente terminando em falha de determinar a causa correta, dolorosamente atrasando o tempo para uma solução.

No meio desse caos, um dos nossos colegas de equipe, enquanto tentávamos buscar soluções sobre como facilitar nossas vidas, mencionou o GrayLog. Estávamos plenamente conscientes no momento da existência de algumas ferramentas que poderiam nos ajudar, mas como nossa filosofia atual é primeiro olhar para as soluções de código aberto, muitas ferramentas estavam sendo analisadas que até aquele dia nós estávamos ficando aquém em obter boas histórias de sucesso sobre qualquer uma das ferramentas ou a percepção de que o custo de propriedade de algumas dessas ferramentas poderiam fazer com que todo o esforço de conversão de tecnologia ficasse sem sentido.

Após um processo de configuração bastante indolor, pudemos iniciar o upload de dados de registro no Graylog. Os dados são armazenados em Elastic Search e, apesar de definitivamente se parecer muito com o Kibana, existem diferenças sutis que permitirão que você torne sua atuação mais rápida, como por exemplo, a versão gratuita vem com um sistema de usuário / senha e roles que podem se conectar LDAP facilmente, isso vai deixar você com um gerenciamento de usuário e controle de uso muito aceitável, a comunidade é muito ativa e você (provavelmente) nunca ficará sem uma resposta, apesar de que quando estamos falando de uma comunidade de código aberto você não pode sempre acabar com as respostas mais educadas, mas eles vão ajudá-lo de qualquer maneira. Dependendo do seu ambiente, você pode ficar por um bom tempo usando apenas a versão gratuita, uma vez que você só precisa de uma licença depois de enviar mais de 5GB de dados por dia, eu entendo que algumas empresas isso pode parecer poucos dados, mas para nós isso realmente nos deu um grande espaço para expansão! Imaginamos que em breve estaremos registrando a conta premium, mas o simples fato de que eles nos deram tanto espaço para testes e adaptação é plausível.

Não demorou muito até que fosse tomada a decisão de implantar nosso primeiro cluster de produção e levamos apenas algumas horas em execução para que ele nos apresentasse dados suficientes para não apenas diagnosticar e corrigir com êxito alguns erros difíceis, mas também nos apresentasse suficientes informações para erros mais sutis e igualmente desconfortáveis ​​no sistema que, uma vez corrigidos, aumentaram a satisfação geral do cliente com o produto final.

No final do dia, nos vimos com uma ferramenta mais rica, confiável e vasta para o controle de logs do que com o produto anterior do qual estávamos nos afastando, com dados mais concretos, obtidos de forma mais rápida e muito mais bonito de uma forma a facilmente conquistar nossos clientes.

 

Advertisements

An Ode to Graylog

[Versão em Português]

Metrics is key to anything you want to do, prove or change.

There is no room in a competitive business for adventurous platform shift or unjustifiable code change. The changes must happen fast and they have to result in precise and measurable quality upgrade for customers and stakeholders beyond any reasonable doubt.

As you may have been following in the last posts, I am currently part of a technology shift at the company I work for, and even though we have been experiencing palpable successes, nothing is without some bumps along the road, of course. We have been for the last few months shifting from a product where even though it took a lot of heavy infrastructure to run, it did offer some good embedded tools for metrics that, once you leave these platforms to what may be considered “regular coding” it does feel like you left something great behind. We were no exception to this sensation.

Not long before our services tapped into production we were faced with a clear difficulty obtaining reliable data from our logs and metrics were depending on the view of some high experienced developers and process analysts who would spend hours of their day mining into disconnected error logs constantly leading us into failure of determining the correct root cause, painfully delaying the time to a solution.

In the midst of this chaos one of our teammates, as we were trying to look for solutions on how to make our lives easier, mentioned GrayLog. We were fully aware by the time of the existence of some tools that could help us but as our currently philosophy is to first look into open-source solutions, many tools were being looked into but as of that day we were either falling short of good success stories on any of the tools or realizing the cost of ownership on some of those tools could actually make out whole technology conversion effort become pointless.

After a fairly painless setup process we were able to start uploading log data into Graylog. It is backed up by Elastic Search and though it definitely looks a lot like Kibana there are subtle differences from scratch that will allow you to get further quicker like for example, the free version comes with a user/password and role system that can connect to LDAP easily, this will leave you with a very acceptable user management and usage control, the community is very active and you will (probably) never be left without a response, even though as we are talking about an open-source community you may not always end up with the most polite answers, but they will help you anyway. Depending on your environment you can actually stay for a pretty long time using nothing but the free version once it only requires a license once you send it more than 5GB of data a day, I do understand some companies this may be very little data, but for us this actually gave us a great room for expansion! We do imagine however that pretty soon we will be signing up the premium account but the sheer fact that they gave us so much room for testing and adaptation is plausible.

 

It did not take long until the decision was made to roll out our first production cluster and it only took it a few hours running  for it to present us enough data to not only successfully diagnose and correct some die hard bugs but also presented us with enough information for however more subtle, equally uncomfortable errors in the system that once it got corrected, really increased overall customer satisfaction with our final product.

By the end of the day we have seen ourselves with a richer, more reliable and vaster tool for log control than we had with the previous product we were moving away from with a lighter, faster and much prettier product than can easily wow customers.

Série Node.js: A estratégia para TypeScript é… não usar.

Olá!

[English Version]

Este post faz parte da minha série Node.js, para saber mais, verifique as postagens anteriores .

Indo direto ao assunto, quando você começar a mergulhar no mundo do javascript e do Node.js, especialmente se tiver uma cultura .Net na sua empresa, você se deparará com o TypeScript.

O TypeScript é uma iniciativa da Microsoft para trazer recursos mais avançados para o javascript, garantindo a compatibilidade entre sistemas operacionais e navegadores, como eles dizem no site: “Qualquer navegador. Qualquer host. Qualquer sistema operacional. Opensource”. Parece uma boa idéia, só que o que eles estão tentando fazer é resolver um problema que existe principalmente por causa da, bem, Microsoft!

Javascript é a linguagem mais antiga disponível na web, juntamente com HTML e CSS [referência] e tem provado ao longo dos anos ser uma das linguagens de evolução mais veloz, um ponto que pode ser verificado acessando o MDN Network onde você encontrará documentados todos os recursos extensivos que o javascript tem e como ele evolui quase diariamente, dominando o jogo de codificação assíncrona como muitas linguagens modernas só podem simular. No entanto, a Microsoft ainda hoje falha em acompanhar essa velocidade, um ponto que pode ser facilmente comprovado com a instalação da extensão compat-report no seu navegador firefox como você vê no exemplo printscreen abaixo.


Captura de tela de 2018-08-24 09-22-34

A estratégia que o TypeScript traz não é nova nem desnecessária quando se trata de web design, já que existem outras ferramentas como o React.js que também compilará seu código em javascript puro, liberando-o do fardo da codificação extensa, mas quando você estiver falando sobre server-side, seu código terá de atendender padrões de alto desempenho e a adição de geradores de código à sua solução resultará em uma solução inchada que exige altos recursos para executar e torna a depuração muito mais misteriosa.

Uma estratégia muito mais simples e ainda muito negligenciada é realmente se familiarizar com as ferramentas que o próprio Node.js lhe dá lendo a documentação na versão escolhida e mantendo-se atualizado com os recursos de javascript atuais e mais recentes no MDN Network.

Além disso, digamos que sua estratégia no TypeScript seja, na verdade, para fins serverless. Nesse caso, você deveria considerar se familiarizar com o Serverless Framework , uma opção muito mais viável.