Distributed tracing is een techniek om één aanvraag te volgen terwijl die door alle losse onderdelen van een moderne applicatie beweegt. Het legt elke stap vast met een tijdstip erbij, zodat je precies kunt aanwijzen waar het traag werd of misging.
Stel je een pakketje voor dat door vijf sorteercentra gaat voordat het bij je voordeur is. Komt het te laat aan, dan vertelt een track-and-trace welk centrum het ophield. Distributed tracing geeft een software-aanvraag datzelfde tracknummer, dus als een pagina vier seconden laadt, zie je of de database, de betaaldienst of een externe partij de boosdoener was. Elk stuk van de reis is een span, en samen vormen die spans de trace. De ene span laat zien dat de database in acht milliseconden antwoordde. De andere onthult dat een betaalaanroep twee volle seconden stond te wachten. Dat ene getal maakt van een vaag ‘de site voelt traag’ een precieze plek om te kijken.
Dit telt het zwaarst bij microservices, waar één klik soms een tiental aanroepen op de achtergrond start. Zonder trace betekent de trage eruit vissen dat je een tiental losse logbestanden opent en de tijdstippen met de hand naast elkaar legt. Gewone logging vertelt je alleen wat er binnen elke service op zichzelf gebeurde. Tracing koppelt die stukjes tot één geheel, en daarom zit het in het hart van goede observability. En als er om twee uur ‘s nachts iets faalt, scheelt dat plaatje je uren giswerk.
Bij TopDevs voegen we tracing toe aan systemen met veel bewegende delen, zodat we bij een klacht over traagheid de exacte stap kunnen aanwijzen in plaats van te gokken.