- O overhead é muito baixo. As funções na NIF não fazem nada além de receber dados e enviá-los a uma thread worker, para que a função C possa retornar imediatamente. Ela foi projetada para ser o mais rápida possível, com pouquíssimo impacto na thread chamadora, e gerar carga mínima de garbage collection.
- Ela permite usar a mesma biblioteca e agent usados pelo AppSignal for Ruby, que roda em milhares de servidores de produção pelo mundo. É uma tecnologia testada em campo, processando, em conjunto, 1 bilhão de requisições por dia (novembro de 2016).
- A biblioteca e o agent são escritos em Rust, e suas principais considerações de design eram (e continuam sendo) robustez e desempenho.
AppSignal para Elixir
Por que uma NIF?
A integração AppSignal for Elixir depende de uma NIF que chama uma biblioteca para fazer o trabalho pesado, escrita em Rust. Seu trabalho é receber dados da aplicação Elixir, normalizá-los e gravá-los em um processo agent separado por um socket Unix. O agent então envia os dados para o AppSignal.com periodicamente para processamento adicional. Veja nossa página como o AppSignal opera para mais informações sobre como nosso agent funciona.
Embora usar uma NIF tenha riscos inerentes, usá-la neste caso tem várias vantagens: