- De overhead is zeer laag. De functies in de NIF doen niets meer dan data ontvangen en doorsturen naar een worker thread, zodat de C-functie direct kan retourneren. Het is ontworpen om zo snel mogelijk te zijn met zeer weinig impact op de aanroepende thread, en om minimale garbage collection-belasting te genereren.
- Het maakt het gebruik mogelijk van dezelfde bibliotheek en agent die door AppSignal voor Ruby worden gebruikt, die op duizenden productieservers over de hele wereld draait. Het is battle-tested technologie, die in totaal 1 miljard requests per dag verwerkt (november 2016).
- De bibliotheek en agent zijn geschreven in Rust, en de primaire ontwerpoverwegingen waren (en blijven) robuustheid en performance.
AppSignal voor Elixir
Waarom een NIF?
De AppSignal voor Elixir-integratie vertrouwt op een NIF die een bibliotheek aanroept om het zware werk te doen, geschreven in Rust. De taak is om data van de Elixir-app te ontvangen, te normaliseren en naar een afzonderlijk agent-proces te schrijven via een Unix-socket. De agent stuurt de data vervolgens periodiek naar AppSignal.com voor verdere verwerking. Zie onze pagina hoe AppSignal werkt voor meer informatie over hoe onze agent werkt.
Hoewel het gebruik van een NIF inherente risico’s met zich meebrengt, heeft het in dit geval verschillende voordelen: