SLO/ipoid
Status: draft
Organizational
Service
IPoid provides an API for retrieving reputation data for individual IP addresses, as well as retrieving lists of IP addresses matching a particular set of labels (e.g. list of IP addresses that are associated with VPNs).
The service has two parts:
- A web application for serving requests to access the data
- A data pipeline for downloading data from an external data source (spur.us), and loading it into a MariaDB database
Teams
- Trust and Safety Product
- DBA
- Service ops
Architectural
Environmental dependencies
WikiKube cluster
Service dependencies
Hard dependencies
- Production MariaDB on the misc cluster MariaDB/misc
Soft dependencies
- Spur.us API availability. If Spur.us is offline or we are unable to access, it means we don't update the data in the application's database. If we are unable to access the data source at Spur.us for more than N days, then the service is less useful, as the data is out of date.
Client-facing
Clients
- MediaWiki
- via the IPInfo extension
- via CentralAuth PreSecondaryAuthenticationProvider (to be moved to Extension:IPReputation)
- ...
Request Classes
- Primary use case is look up for a single IP address
- Endpoints exist for looking up all IPs for a particular risk type (e.g. all VPNs)
There are no write requests.
Service Level Indicators (SLIs)
The percentage of all requests that complete within [fill in] milliseconds and receive a non-error response, defined as percentage of requests that receive a non-5xx response.
Operational
Monitoring
How is the service monitored?
Troubleshooting
How complex is the service to troubleshoot?
Deployment
How is the service deployed?
Service Level Objectives
Realistic targets
What are the realistic targets for each SLI? Why?
Ideal targets
What are the ideal targets for each SLI? Why?
Reconciliation
Reconcile the realistic vs. ideal targets, documenting any decisions made along the way.
Once the SLO is final, consider collapsing the above three sections.
What are the agreed-upon SLOs, for each SLI and each request class?