How we organize and get things done with SERVICEOWNERS

Take CODEOWNERS and GitHub teams to the next level. Learn about how GitHub engineering solves the age old problem of who owns what.

Max Beizer
5 min readadvanced
--
View Original

Overview

The article discusses GitHub's implementation of SERVICEOWNERS, a new organizational layer that enhances how teams maintain services within their large Ruby on Rails monolith. It emphasizes the transition from a traditional ownership model to a maintainer model, facilitating better service management and communication.

What You'll Learn

1

How to implement SERVICEOWNERS for better service management

2

Why a maintainer model improves team collaboration

3

How to utilize the service catalog for onboarding new engineers

Prerequisites & Requirements

  • Understanding of service-oriented architecture concepts
  • Familiarity with YAML configuration files(optional)
  • Experience with Ruby on Rails applications(optional)

Key Questions Answered

What is the purpose of SERVICEOWNERS at GitHub?
SERVICEOWNERS serves as a new organizational layer that helps GitHub manage service maintenance more effectively. It allows teams to maintain services rather than own them, promoting better collaboration and clearer communication about service responsibilities.
How does the service catalog improve onboarding for engineers?
The service catalog centralizes information about services, including performance metrics and team responsibilities, which helps new engineers understand the platform's architecture and service relationships without relying on outdated documentation.
What rules does the SERVICEOWNERS file enforce?
The SERVICEOWNERS file enforces rules such as no duplicate patterns, mandatory service ownership for new files, and ensuring that all patterns match existing files. This ensures clarity in service maintenance and organization.
How does the serviceowners gem facilitate service management?
The serviceowners gem integrates data from SERVICEOWNERS and service-mappings files to automate the generation of the CODEOWNERS file and allows engineers to query service maintenance information, streamlining service management processes.

Key Statistics & Figures

Lines of code in GitHub's primary codebase
over 4.2 million
This highlights the scale of the GitHub monolith that SERVICEOWNERS aims to manage more effectively.
Number of files in GitHub's primary codebase
roughly 30,000
The large number of files necessitates a structured approach to service management, which SERVICEOWNERS provides.

Technologies & Tools

Some links below are affiliate links. We may earn a commission if you make a purchase.

Backend
Ruby On Rails
Used as the framework for GitHub's primary codebase.
Configuration
YAML
Used for defining SERVICEOWNERS and service-mappings files.

Key Actionable Insights

1
Implementing SERVICEOWNERS can streamline service maintenance by clearly defining team responsibilities.
This model reduces confusion over service ownership and allows teams to focus on maintaining their services, which can lead to faster incident resolution and improved service reliability.
2
Utilizing a service catalog can enhance onboarding processes for new engineers.
By providing a centralized resource for service information, new hires can quickly understand service dependencies and performance metrics, reducing the time needed to become productive.
3
Adopting a maintainer model fosters a culture of collaboration rather than competition among teams.
This shift encourages teams to work together on service improvements and share knowledge, ultimately benefiting the overall health of the codebase.

Common Pitfalls

1
Failing to maintain updated SERVICEOWNERS files can lead to confusion over service responsibilities.
Without regular updates, teams may not know who to contact for service issues, which can slow down incident response times.
2
Overcomplicating the service definitions can hinder the onboarding process.
If service definitions are not clear and concise, new engineers may struggle to understand the architecture, leading to longer ramp-up times.

Related Concepts

Service-oriented Architecture
Codeowners
Team Collaboration In Software Development
Incident Management Best Practices