Document how to know whether a new feature needs Geo support
Follow up for !97172 (comment 1148615680):
How does someone decide that Geo support is needed? Looking at https://docs.gitlab.com/ee/development/geo/framework.html, I think it would help to have a decision tree or some criteria. For example, something along the lines: "If you add a new ActiveRecord model that uses object storage or repository data, you need to add support for Geo replication. For example, a few years ago snippets used to be managed in the database alone. We later made it managed by a Git repository. If you're simply adding a model that only stores data in the database (e.g.
issues
), you do not need to do anything more."
Proposal
(Mike proposed this but do whatever is clearest)
- Add a doc section called e.g.
How to determine whether a new feature requires work to be supported by Geo
above https://docs.gitlab.com/ee/development/geo.html#steps-needed-to-replicate-a-new-data-type - Write introduction
- Write a doc subsection e.g.
Git repositories
(a one-liner saying it needs to be added with the SSF framework) - Write a doc subsection e.g.
Files or blobs
(Mention that reusing Upload model gains Geo support for free, but this should not be done when large amount of data is expected. Otherwise, it likely needs to be added with the SSF framework. Mention that !102207 (merged) is supposed to detect this by failing on the addition of new blobs.) - Write a doc subsection e.g.
Features with more than one kind of data
(use Designs as an example) - Write a doc subsection e.g.
Other
(use Container Repositories as an example. Also mention that if data is not tracked in the main or CI Postgres databases, then likely an ActiveRecord Model should be added, which will enable Geo to use the above approaches.) - Reference the data types doc
- Update
ee/spec/uploaders/every_gitlab_uploader_spec.rb
to point to this doc section
Edited by Michael Kozono