Geo: Self Service Framework - Second Implementation for Snippet replication
Engineering Owner: @mkozono
### Problem to solve
- Snippets will be implemented as repositories. Geo does not currently replicate
- This is an opportunity for the Geo team to tackle the repository data type for the self service framework
### Intended users
This is relevant for GitLab customers and users who already have a working Geo setup and/or who are considering enabling Geo for either DR or Geo replication features.
### Further details
<!-- Include use cases, benefits, and/or goals (contributes to our vision?) -->
Our customers have a reasonable expectation that new data types being made in Geo in a timely manner. This is a step towards adding another data type and it will bring us close to finishing work on [adding all unreplicated data types](https://gitlab.com/groups/gitlab-org/-/epics/893)
### Proposal
This epic serves two purposes:
1. Provide Geo support for snippets
1. Create a second implementation of the Geo self-service framework for repositories
These are the likely steps needed:
* Geo: Produce events for Repository replication
* Geo: Add Geo token support to snippet authentication
* Geo: Consume the events for Repository replication on the secondary
* Geo: Implement Snippets front-end in Admin screen
* Geo: Developer documentation on Repository replication
### Permissions and Security
Follow existing permissions and restrictions already in place for other Geo and repositories replication.
### Documentation
In order to make the Geo self-service framework a success we should start writing developer documentation that highlights exactly how to add a new data type. A first iteration should be part of this epic.
### Testing
Ideally we should be able to generalize the tests so that anyone using the framework can just reuse the them as shared_examples.
For end-to-end tests see the [testing section of the parent epic](https://gitlab.com/groups/gitlab-org/-/epics/2161#testing).
### What does success look like, and how can we measure that?
* Snippets repositories should be supported - they can be replicated and the status is shown on the admin UI
* Developer implementation for the self-service framework should include how to replicate repository types
### What is the type of buyer?
* Ultimate
* Premium
### Links / references
* https://gitlab.com/groups/gitlab-org/-/epics/2161
* https://docs.gitlab.com/ee/user/snippets/
epic