- La surcharge est très faible. Les fonctions du NIF ne font rien de plus que recevoir des données et les envoyer à un thread worker, afin que la fonction C puisse retourner immédiatement. Elle est conçue pour être aussi rapide que possible tout en ayant un impact très faible sur le thread appelant, et générer une charge de garbage collection minimale.
- Cela permet d’utiliser la même bibliothèque et le même agent utilisés par AppSignal pour Ruby, qui fonctionne sur des milliers de serveurs de production à travers le monde. C’est une technologie éprouvée, traitant un total combiné de 1 milliard de requêtes par jour (novembre 2016).
- La bibliothèque et l’agent sont écrits en Rust, et leurs principales considérations de conception étaient (et restent) la robustesse et la performance.
AppSignal pour Elixir
Pourquoi un NIF ?
L’intégration AppSignal pour Elixir s’appuie sur un NIF qui appelle une bibliothèque pour effectuer le gros du travail, écrite en Rust. Son rôle est de recevoir les données de l’application Elixir, de les normaliser et de les écrire dans un processus agent séparé via une socket Unix. L’agent envoie ensuite les données à AppSignal.com périodiquement pour un traitement supplémentaire. Consultez notre page how AppSignal operates pour plus d’informations sur le fonctionnement de notre agent.
Bien que l’utilisation d’un NIF présente des risques inhérents, son utilisation dans ce cas présente plusieurs avantages :