Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature Flags Rewrite: List of things to get done #22131

Open
7 of 36 tasks
neilkakkar opened this issue May 7, 2024 · 0 comments
Open
7 of 36 tasks

Feature Flags Rewrite: List of things to get done #22131

neilkakkar opened this issue May 7, 2024 · 0 comments
Assignees
Labels

Comments

@neilkakkar
Copy link
Collaborator

neilkakkar commented May 7, 2024

Bug Description

There's a lot of things we need to do to make flags on rust production ready. This is a necessary-but-not-sufficient list - will add more things as I (re)discover them.

Verification Criteria

  • Audit existing feature flag integration tests to make sure we're covering enough
  • Staged rollout plan
    • Rollout percentages
    • Mirror traffic in contour
    • Verification plan for mirrored traffic
    • Decide rollout order

Local dev

  1. Migrate hog-rs into main posthog repo, invest in CI to make this seamless.
  2. Write RFC for this if necessary (RFC: Bringing back the monorepo for rust services and main app meta#207)
  3. Add cross-directory integration tests, so changes to posthog's data model doesn't bork flags service
  4. Figure out local dev flow - with using an image when not developing the flags/capture repo, and without for developing.

Business logic

  1. Add geoIP maxmind DB, query data for IP addresses
  2. Handle token validation + distinct id parsing
  3. Add basic matching logic
  4. Connect to pg to fetch person properties
  5. Handle early access feature properties
  6. Handle multivariate flags
  7. Handle variant overrides
  8. Handle evaluation reasons
  9. Handle billing - adding info to redis
  10. Setup populating and fetching token/team/flags from redis
  11. Handle experience continuity + write path for flags
  12. Handle group properties
  13. Copy all tests from main repo
  14. ensure flag responses are consistent irrespective of internal handling of hashes
  15. Handle payloads
  16. Handle optimisation for not going to db if flags can be evaluated locally.
  17. Handle dynamic cohorts property matching (at rust level)
  18. Handle static cohorts property matching (at db level)
  19. [Not necessary for first production deploy, but necessary to deprecate old functionality]: Add additional endpoints for internal calling - bulk evaluation, evaluation reason.

Production readiness

  1. Replicate prometheus metrics
  2. Setup DDOS protection rate limiting
  3. Handle db healthchecks / timeouts
  4. Setup env vars for controlling sampling for billing / skipping write path / adjusting rate limits
  5. Setup sentry error reporting
  6. Setup profiling the endpoint
  7. Add liveness/readiness checks

Timeline

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant