Slide 35
Slide 35 text
Convention
Observability: Rollout
In the Rollout world, we make a lot of assumptions about "the best" monitoring setup, and as such have removed these knobs completely. If you deploy an app and
specify a log format in the `Docker
fi
le`, that applies to all processes using that `Docker
fi
le`, otherwise you get JSON.
Similarly, we make assumptions about how metrics are collected, and inject the correct con
fi
g to get APM properly shipped. One nice property of this is that we can have
a uni
fi
ed answer as to why a system works a certain way, or
fi
x bugs wholesale across the platform. This has cut down on support costs signi
fi
cantly, albeit with some
pain as we migrate systems or con
fi
gurations.
We really only recommend something as formalized as Rollout when most/all of your applications act the same. If your developers use the same logging and metrics
libraries con
fi
gured in the same way, using a convention can be quite powerful.
However, if you’re in a heterogeneous environment with many languages or many frameworks, this approach will be di
ffi
cult to do. At SeatGeek, this has been a bit of a
struggle over the years, as we’ve run as many languages as there were developers early on, and many older applications are harder to modify for various reasons.
The other case where this might not be recommended is if you deploy third-party applications where some of these knobs are not con
fi
gurable. In our case, we run a few
applications where we had to build custom metric proxies to expose metrics in a consumable format. Similarly, many third-party systems might log in JSON but decide
on “interesting” ways to set log levels in their output, necessitating remapping to get logs to show up the right way.