Comparing DBA, DBRE, and SRE Roles
August 11, 2022
Monitoring and Observability
As I navigate further into my career, I’m finding the scope of my role has shifted over the years. I thought I’d take some time to help relay the differences I’ve seen between traditional database administrators (DBAs), database reliability engineers (DBREs), and site reliability engineers (SREs). Joey D’Antoni recently explained what an SRE does here: What Is Site Reliability Engineering (SRE)? The SRE Role Explained
Before I start, I want to get a disclaimer out of the way: some of the comparisons here reflect only what I’ve seen and may not match what you’ve experienced. Please assume every sentence starts with “Typically, …” and I’m not trying to generalize or claim anything I’ve seen is better (or worse) than anything you’ve seen.
But how does this compare to my current role (DBRE) and, further, to a DBA role? It comes down to multiple things: responsibilities, skills, and mindsets. This can be different from company to company—some places have DBAs who are DBREs but don’t know it or don’t think about it that way. In a recent interview, I explained how a DBRE might have a slightly higher-level view than a DBA in terms of overall architecture and future direction, and they may perform fewer everyday tasks that are operational or firefighting in nature. Though I can tell you from experience, we help with those too.
In my current role, being a DBRE is fully inclusive of a DBA’s responsibilities—we haven’t traditionally had someone who was “just” a DBA, due to our architecture. We optimize for end-user load time; queries are in the application code, so development, testing, and tuning has been handled primarily by C# engineers. At other places, DBAs may play a more direct role in making schema changes, reviewing and approving queries and tuning performance on top of managing availability, security, backups, and so on. A DBA might ensure a specific server has a configuration that makes sense, while a DBRE steps back to ensure all servers have consistent settings across the environment and to automate the process of keeping them that way. This was actually one of the first projects I took on when I started at Stack Overflow, which I talked about in a previous article. We’re still working on the automation part.
Back to a higher level, this is where the SRE role comes in, as there are different types of optimizations required when you want to prevent the database from being a bottleneck. We focus on the deep technical knowledge on the database side, and they focus on the deep technical knowledge of everything else. Networking, caching, queuing, and searching all become key elements at our scale compared to a traditional client-server application. We use Redis and Elasticsearch, for example, to minimize database load—SREs and engineers configure and maintain those parts of the architecture, but DBREs (and/or DBAs) need to have at least some peripheral knowledge about them. We often collaborate with those teams to understand current and future needs in terms of scalability and environment or to troubleshoot problems in real time. For future needs, some short- or long-term changes may involve moving from Windows to Linux, migrating to the cloud, or implementing stronger security (TLS/Always Encrypted). These are “all hands on deck” changes.