A Beginner’s Guide to Database Reliability Engineering
By: Kovid Rathee
Tags: Data, Software Development, Data Engineering, Cloud Computing, Database

DATA ENGINEERING

A Beginner’s Guide to Database Reliability Engineering

When Site Reliability Engineering meets Data Engineering

Background

This is not news. A new branch of engineering has taken birth with the evolution of highly scalable and highly available systems that process, store and analyse huge amounts of data. It’s called Database Reliability Engineering. It has its obvious roots in Google’s new approach to DevOps called Site Reliability Engineering. A lot has been published on how DevOps & SRE are different. It’s important to understand why that is the case.

Database Reliability Engineering is a subfield of SRE. The way SRE holistically deals with the reliability of all the systems for a company, DRE deals with all the systems of the data infrastructure of a company. The first question that comes to mind is why is this separation required? It is a valid question. Data Engineering has evolved into a huge domain in itself over the last decade. The variety of tools, technologies and processes is humungous.

Database Reliability Engineering

Database Reliability has become a specialization in its own right within the framework of SRE. A DRE then becomes a person who takes care of (the reliability of) data infrastructure — which includes data pipelines, databases, deployments, CI/CD, HA, access & privileges (in some cases), data warehouses, storage & archival. In short, a DRE takes care of all the pieces of the infrastructure a Data Engineer needs for doing their job properly. It is also worth noting —

Data Reliability Engineering is not a fancy word for Database Administration.

Database Administration is a highly specific job. Most of the work of a DBA has already been eaten up by either DevOps or DRE. Database Reliability Engineers, as mentioned earlier, don’t just take care of databases but the whole data infrastructure. However, some companies use the DBRE position to be specific about managing the reliability of databases. I’d point you to a French Home Improvement tech company ManoMano which helps people do DIY stuff has described the role of a Database Reliability Engineers

Database Reliability Engineers are responsible for keeping database systems that support all user-facing services and many other production systems running smoothly 24/7/365. DREs are a blend of database engineering and administration gear-heads and software developers that apply sound engineering principles, operational discipline and mature software development and automation, specialising in databases.

Roles & Responsibilities of a DRE

The responsibilities of a DRE range from advising on data modelling to making sure that the database is ready to scale when the time comes. The tools and technologies used by a DRE are very similar, in most cases, those used by a SRE such as IaC (Terraform, Pulumi, CloudFormation), CI/CD (Jenkins), Configuration Management (Ansible, Chef, Puppet) and so on. In addition to that a Database Reliability Engineer subsumes the responsibilities of a Data Analyst, Data Engineer, Database Engineer, DevOps etc. at times modelling data, writing & optimizing queries, analysing logs & access patterns, security & compliance, managing replication topologies, disk space, alerts, monitoring, billing and so on.

A number of companies have started to realize and open positions for Database Reliability Engineers in their growing engineering teams. I analysed some of those job profiles at Vimeo, Twitch, Pinterest, Okta, DataDog, Fastly, Box, ActiveCampaign, Mambu, Peloton, InVision, Airbnb, Yelp, Everbridge, Foursquare and more. I found that many companies include the DBA & data modelling aspect to the job and others don’t. Just like any other job, it depends on how the company decides to define a Database Reliability Engineer.

Based on my experience and the trends in the tech industry, I have listed down the most common responsibilities of a Database Reliability Engineer in the order of decreasing commonness —

High Availability & High Scalability for Database — including Data Warehouses & Data Lakes

Expertise in Database Internals for Performance Tuning, Optimization and recommendations on best practices

Infrastructure Reliability for Data Pipelines, Big Data Processing Systems (MPP), Distributed Systems, Storage & Archival

Security & Compliance across the Data Infrastructure including all the areas mentioned above and more

All of these responsibilities assume a certian level of expertise in data engineering services in more than one cloud platform.

DataOps vs. Database Reliability Engineering

DataOps is another field that is often confused with DRE. The same analogy that applies in DevOps & SRE applies here too. While a DRE takes care of the working of data systems, a DataOps person helps Data Engineers by making infrastructure available, granting access & permissions to use the infrastructure.

As mentioned before, the lines that divide these jobs into separate ones get blurred out in many companies. In early stage startups, for instance, there might be only one person who’s DataOps and DBRE and there’s a fair chance that the same person is acting as a SRE and DevOps Engineer.

Conclusion

The evolution of job profiles is inevitable. As newer technologies continue being developed, the job profiles of engineers will keep changing and that too at a very fast pace. Jobs will keep getting redundant. Newer technology will make space for newer but fewer jobs.

Database Reliability Engineering as a concept has only been around for about half a decade and is still a very young profession. It will keep evolving. Roles and responsibilities will keep changing, probably reducing as more and more automation takes place in managing infrastructure. For now, though, it is a great field to get into. Do check out the book on Database Reliability Engineering by Liane Campbell & Charity Majors for a thorough introduction to the domain.

Resources