Database Engineering

This page is dedicated to database application engineering and provides an entry-point for resources on this topic.

Also see Database Team in Enablement.

GitLab development

Please refer to the development documentation for database guidelines.

Database Roles at GitLab

We have two primary job roles that are focused on the database aspect:

  1. Backend Engineer, Database - in Development
  2. Database Reliability Engineer - in Infrastructure

The Backend Engineer, Database role is a software engineering role concentrated on application-side improvements and foundational database work in the GitLab codebase.

The Database Reliability Engineer is an operational role targeting and running the database infrastructure for GitLab.com from within the Reliability Engineering teams.

Database Maintainer

For the GitLab codebase, Database Maintainers contribute to the code review process by reviewing database-related changes and applying database review guidelines. They typically engage into conversations about database queries and their performance, database schema design and database migrations.

The Database Maintainer role:

  • Is an additional role, typically for Backend Engineers.
  • Follows the same definition as any other GitLab maintainer.
  • It does not come with operational responsibility for GitLab.com and its database infrastructure. This responsibility belongs to the Database Reliability Engineer.
  • It is not expected to participate in incident management issues.
  • Adheres to the review turnaround time of 2 working days.

If you’re interested in participating in database reviews, please start by reviewing the the Database maintainer process which contains all the resources for a reviewer.

GitLab resources
Books

(In no particular order.)

Other resources