Gitlab hero border pattern left svg Gitlab hero border pattern right svg


Complexity at Scale

As GitLab grows, through the introduction of new features and improvements on existing ones, so does its complexity. This effect is compounded by the care and feeding of a single codebase that supports the wide variety of environments in which it runs, from small self-managed instances to large installations such as The company itself adds to this complexity from an organizational perspective: nearly 1300 employees world-wide contribute in one way or another to both the product and the company, using on a daily basis to do their job. Teams members in Engineering are directly responsible for the codebase and its operation, for the infrastructure powering, and for the support of customers running self-managed instances. Likewise, team members in the Product organization chart the future of the product.

Our values, coupled with strong know-how and unparalleled dedication, provide critical guidance to manage these complexities. At the same time, we have known for some time we are crossing a threshold in which complexity at scale, both technical and organizational, is playing a significant role. We know we need to fine-tune our both our technical discipline (so we can integrate it across the organization) and our organizational amplification (so we can span and leverage the entire organization) to ensure we can continue to deliver on our values. In this context, we have been exploring the adoption of Architecture or Engineering Practice to help us in this regard.


Martin Fowler's Software Architecture Guide provides an excellent discussion on the notion of Architecture, and there is much to be learned from this and other sources. The question before us is, then, how to contextualize those learnings and apply them at GitLab.

Much like the rest of the software world, we have been wary of all the negative baggage that Architecture implies, particularly as some of that baggage would seemingly fly in the face of our values. This is why we have taken the time to carefully consider what Architecture means for us, and how to implement it in alignment with our values and at the scale that both the product and the company demand.

We have intuitively known that, at GitLab, Architecture is not a role proper (i.e., no such title exists in the company). We understand Architecture as a component of all technical roles, a set of practices to leverage the vast amount of experience distributed across the company, and a workflow to ensure we can continue to scale efficiently.

Architecture at GitLab

At GitLab, Architecture is:

Such definition implies a solid reliance on influence rather than authority to efficiently and transparently drive decisions, engage stakeholders, and promote trust across the organization

Artifacts: roadmaps and blueprints

We strive for results and concrete outcomes, which in this case entail roadmaps and blueprints.

Roadmaps plot a long-term technical path of initiatives to work on over the following 12 months and how we can weave them together to meet our business needs. Their content is focused on technical topics but they are themselves not technical. Roadamps are kept in the handbook because of their 12-month outlook and less technical focus.

Blueprints in their various forms are more technical than roadmaps at a high-level (logical architecture, etc, without dictating implementation), distilling roadmap items and presenting forward-looking "next steps" for the approprite time-span. Furthermore, they must include one or more examples of how the solve specific use-cases. Blueprints are hosted in docs and are generated according to the Architecture Workflow.

Architecture as a practice is everyone's responsibility

Architecture at GitLab is not a role but it is notably engrained in senior technical leadership roles, where the roles' levels and their sphere of influence determine DRI responsibilities within the practice:

It is worth stressing that partnerships and close working relations as outlined above are not exclusionary. GitLab relies heavily on cross-functional, cross-level relationships, and we will continue to foster those relationships to their maximum potential. Thus, the above relationship descriptions simply outline a responsibility perspective vs a boundary of any kind.

Architecture Workflow

The Architecture Evolution Workflow is used to create 12-month, 6-month and 3-month blueprints captured in epics. These artifacts should be aligned with our OKRs cadence.

  1. Anyone can create an architecture change proposal
  2. This is a collaborative workflow that fosters collaboration between Engineering, Product and technical Domain Experts,
  3. An Architecture Evolution Coach is an advisor and a bridge between Individual Contributors, Engineering Leaders and Product Managers
  4. Successfully executed workflow usually results in creation of 3/6/12-month technical strategy with Directly Responsible Individuals (DRIs) assigned
  5. 12-month blueprints captured in epics require one of the DRIs assigned to the roadmap execution should be an Engineering Fellow
  6. 6-month blueprints captured in epics require a Distinguished Engineer or a Staff Engineer to be assigned as a DRI
  7. Blueprints should have DRIs assigned from Product Team and Engineering Leadership too
  8. DRIs propagate the document across sub-departments and ensure that work gets scheduled.

A detailed description of the workflow is available.


Following our Transparency value, our architecture roadmap and blueprints are public.

Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license