Catalog
Where you store your organization's patterns
What is the catalog component?
The catalog is the system of record for all your organization's infrastructure patterns.
When a member of your organization goes to ask "how do we approach infrastructure problem X around here?", you need a system of record to point them to. Or when you update a pattern, your pattern authors need to know which pattern version is canonical and where to place their updates. That system of record is the catalog.
Good catalogs
Minimum requirements
To qualify as a catalog, you need only meet one requirement. The catalog is:
- A system of record. The latest available information about your patterns lives in the catalog.
Effective catalogs
To be an effective catalog, we need a few more requirements. Effective catalogs are:
- Browsable. Users can browse the available patterns using their preferred interface.
- Searchable. Users can search for exactly the pattern they want.
- Detailed. Users can browse detailed information about each pattern.
- Extensible. As the catalog maintainer, you can add support for new patterns.
- Reports pattern usage. Users can see how often patterns are consumed.
- Educational. Users can learn background information necessary to be a savvy consumer of a pattern.
- Connect authors and consumers. Users can connect easily with pattern authors, creating a virtuous feedback loop.
- Connect to self-service. When user identifies a pattern they want to instantiate, the catalog directs them right to the applicable runbook.
Catalog options
You have several options when implementing a catalog. In order from least favorable to most favorable:
No system of record
You simply do not have a system of record. If a user wants to know whether a pattern exists, they verbally ask, but there is no written resource to consult.
Documentation site
You have a documentation site that users visit to learn about what patterns are available, but the patterns themselves are scattered across the organization.
Git repository
All your patterns are collected in one or more git repositories.
Catalog UI
You have a Terminal UI and/or Web UI that enables users to browse the catalog. The underlying system of record may still be a git repository.
In our open source tool, Terragrunt, we expose a terragrunt catalog command that presents a Terminal UI to select the desired module from a specified set of git repos.