John Gallagher
👤 PersonAppearances Over Time
Podcast Appearances
maybe 20 years behind where everybody else is in programming in terms of observability. Because one of the questions I often have when I look at this stuff and even think about tracing, I maybe have like five, six, seven questions that even I can't resolve, which is what do I trace? How much detail do I trace in? How much is this going to cost me?
maybe 20 years behind where everybody else is in programming in terms of observability. Because one of the questions I often have when I look at this stuff and even think about tracing, I maybe have like five, six, seven questions that even I can't resolve, which is what do I trace? How much detail do I trace in? How much is this going to cost me?
And we're still in the stone age with a lot of this stuff. So I don't have any good answers for you in that regard. So we use... the vendor tooling for tracing. I'm sure Eurelic has its own version of that. In fact, I know they do. I know Sentry does. There are certain other providers that don't have any tracing capabilities at all.
And we're still in the stone age with a lot of this stuff. So I don't have any good answers for you in that regard. So we use... the vendor tooling for tracing. I'm sure Eurelic has its own version of that. In fact, I know they do. I know Sentry does. There are certain other providers that don't have any tracing capabilities at all.
So I would say for now, the best option we have is relying on the vendor tracing tools, I would say.
So I would say for now, the best option we have is relying on the vendor tracing tools, I would say.
definitely that's leading me up to my, one of my big kind of rants, passions, whatever within the observability space. And I don't see anybody talking about this. Um, I feel like it's either I'm onto a really great idea or it's an unbelievably idiotic idea for some reason that I don't know. It's usually the latter as a spoiler. Um, Okay.
definitely that's leading me up to my, one of my big kind of rants, passions, whatever within the observability space. And I don't see anybody talking about this. Um, I feel like it's either I'm onto a really great idea or it's an unbelievably idiotic idea for some reason that I don't know. It's usually the latter as a spoiler. Um, Okay.
So when I'm looking at traces, there's almost never enough information. Almost never enough information. And this is why charity majors and the team at Honeycomb and Liz Fong-Jones always talk about have wide context-aware events. That's their mantra. Wide context-aware events. And Events, we've already talked about. Context, we've already talked about. We haven't talked much about the wide.
So when I'm looking at traces, there's almost never enough information. Almost never enough information. And this is why charity majors and the team at Honeycomb and Liz Fong-Jones always talk about have wide context-aware events. That's their mantra. Wide context-aware events. And Events, we've already talked about. Context, we've already talked about. We haven't talked much about the wide.
So wide means lots of attributes. So their take on it is add as many attributes as you can to every event. And make them high cardinality attributes. What does that mean? It took me about three months to wrap my head around what high cardinality means. It means anything ending in an ID. There you go. That's an easy explanation. So a request ID. Oops. Sorry, that was me and my microphone.
So wide means lots of attributes. So their take on it is add as many attributes as you can to every event. And make them high cardinality attributes. What does that mean? It took me about three months to wrap my head around what high cardinality means. It means anything ending in an ID. There you go. That's an easy explanation. So a request ID. Oops. Sorry, that was me and my microphone.
Anything that looks GUID-like. Anything that is a unique identifier for anything, so that's user ID, request ID, but anything that is a domain object, and this is the real missed opportunity, I think, that we have in the Rails community and in observability community potentially in general. When something goes wrong, or even when something goes right, let's take the token as an example.
Anything that looks GUID-like. Anything that is a unique identifier for anything, so that's user ID, request ID, but anything that is a domain object, and this is the real missed opportunity, I think, that we have in the Rails community and in observability community potentially in general. When something goes wrong, or even when something goes right, let's take the token as an example.
When that token is created, the token is a domain object. Now, okay, it's to do with authentication. So it's not really a domain object in a way. But let's say that customer is signing up for an account. The account definitely is a domain object.
When that token is created, the token is a domain object. Now, okay, it's to do with authentication. So it's not really a domain object in a way. But let's say that customer is signing up for an account. The account definitely is a domain object.
And if you want to understand what I mean by domain object, I just mean an object that belongs to the domain, the business domain in which you're operating. It's a business object, a domain object, call it what you will. But when the CTO or even better, the CEO or somebody in marketing talks about this customer account, they talk about people creating accounts. They use that word account.
And if you want to understand what I mean by domain object, I just mean an object that belongs to the domain, the business domain in which you're operating. It's a business object, a domain object, call it what you will. But when the CTO or even better, the CEO or somebody in marketing talks about this customer account, they talk about people creating accounts. They use that word account.
That's your first clue that it's a really important concept in the domain. So that's what I say when I mean domain objects. I mean words that non-technical people use to describe your app. So they're domain objects. Why are we not adding every relevant domain object to every event? We don't do it.
That's your first clue that it's a really important concept in the domain. So that's what I say when I mean domain objects. I mean words that non-technical people use to describe your app. So they're domain objects. Why are we not adding every relevant domain object to every event? We don't do it.