Global Reference Architecture Patterns

Next to “no GRA pattern” there are four styles of GRA patterns.

5 icons of GRA patterns: no GRA, split, bulk, separate and monorepo.

No GRA pattern

An icon that depicts "no GRA"

When a GRA pattern is not used, each Adobe Commerce instance is a unique application. There is no code reuse, except by manually moving code from one instance to another. These copies always diverge. The amount of effort to ensure that each instance has the same changes but still works as expected can become overwhelming. In this scenario, three instances need three times the maintenance effort of one instance.

A diagram depicting 3 stores, where each is a copy from the former, with unique development happening in all 3 copies.

The split Git GRA pattern

An icon depicting the "split" GRA pattern

This pattern consists of Git repositories for development and one Git repository per instance. Each file in the instance is maintained in one of the development repositories. They come together as a braid forming the whole GRA. Each line of code only exists in a single development repository and is installed to the instances using the braiding technique, leading to code reuse.

A diagram showing where code is stored in a split GRA pattern

The bulk packages GRA pattern

An icon representing the "bulk" GRA pattern

The Adobe Commerce core and third-party modules are directly installed through Composer repositories. Git repositories can be used as Composer repositories. In this pattern, the entire GRA shared codebase is hosted in a single or a few Git repositories and installed through Composer. The key characteristic is that multiple modules, language packs or themes are hosted in a single composer package, simplifying development.

A diagram showing where code is stored in a bulk packages GRA pattern