Menu
Sign In Search Podcasts Charts People & Topics Add Podcast API Pricing

John Gallagher

👤 Person
314 total appearances

Appearances Over Time

Podcast Appearances

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

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?

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

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?

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

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.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

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.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

So I would say for now, the best option we have is relying on the vendor tracing tools, I would say.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

So I would say for now, the best option we have is relying on the vendor tracing tools, I would say.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

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.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

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.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

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.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

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.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

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.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

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.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

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.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

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.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

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.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

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.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

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.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

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.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

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.

Ruby Rogues
Practical Observability: Logging, Tracing, and Metrics for Better Debugging - RUBY 656

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.