Database Team Sessions

Overview

This issue is intended to organize team sessions, once a month, where we can share database knowledge with other folks within database and across GitLab too.

Goal

Organize video calls, with 40 min to 50 min duration, to share database topics with other team members. We'll have these sessions recorded to share on the database page and with other teams across GitLab.

Each session will focus on a different part of the database of what we maintain, and each session will demonstrate how we operate and manage the database at GitLab.

If the topic is too wide, the person responsible for the topic can choose to split it into more than one session.

Format

Free format. Each speaker can predefine the format of the presentation. We can use any assets, like:

  • Slides
  • Live demos
  • Presentation Only

Topics

The topics (or themes) are organized to demonstrate how each part interconnects with each other, to show the lifecycle of a user connection until it finds its way to the database, with everything in between:

Engineering and Development

Database Reviews | Presented By put your handle here

    • How we can use pg.ai to measure the impact on the database
    • How the changes can impact self-managed customers

Database Observability | Presented By put your handle here

    • What are the tools we use to monitor database at GitLab?
    • How do we collect metrics from the database?
    • What are the metrics available to monitor the DB health?

Architecture

Patroni, PGBouncer | Presented By put your handle here

    • What are Patroni and PGBouncer?
    • How does the two work at GitLab?
    • The DB connection life cycle
    • How do the DB connections work: PgBouncer vs. direct connection

Working of db-testing pipeline project | Presented By put your handle here

    • How does the project works?
    • The lifecycle of the db-testing pipeline
    • How we test the migrations against a production clone
    • How do we sample BBM

Replication & Logical | Presented By put your handle here

    • How do we handle replication at GitLab?
    • The role of WAL in replication

Database Load Balancing | Presented By put your handle here

    • How does load balancing work at GitLab?
    • What type of load balancing do we use?
    • How do we check for readiness?
    • Replicas, Sidekiq and Primary Stycking: How do we check if a node is up to date?
    • How do we handle failovers?

Operations

Batched Background Migrations | Presented By put your handle here

    • How does BBM works?
    • The lifecycle of the BBM
    • BBM scopes: How can a scope time out a BBM?
    • How do we ensure idempotency?
    • Batch optimizer
    • BBM Health Checks
    • BBM finalization and required stops

Customer Upgrades | Presented By put your handle here

    • How do self-managed customers upgrade?
    • How post-migrations work for zero downtime upgrades
    • Most common database problems customers face when updating
Edited by Leonardo da Rosa