Ga naar inhoud

Targeting

Standaard serveert een omgeving elk apparaat de standaardwaarde van de flag. Targeting is hoe je sommige apparaten iets anders serveert: bètatesters, een specifieke appversie, 10% van iedereen. Deze pagina legt de machine uit; de rollout-handleiding neemt je mee in het gebruik ervan.

Regels toetsen tags — kleine sleutel/waarde-feiten over het apparaat dat de vraag stelt. De SDK’s sturen automatisch een paar ingebouwde tags mee (appVersion, appBuild, osVersion, platform, sdkVersion), en je app kan er zelf aan toevoegen, zoals cohort: "beta".

Twee dingen over tags zijn de moeite waard om vroeg te weten:

  • Tags worden geëvalueerd en vergeten. FortressFlag gebruikt ze om het ene verzoek te beantwoorden waarmee ze binnenkwamen, en gooit ze dan weg — ze worden nooit opgeslagen en nooit gelogd. Er bestaat nergens een taggeschiedenis, bewust.
  • Tags zijn beweringen van je app. Een tag kan alles bevatten wat je code erin stopt — stop er dus geen geheimen of persoonsgegevens van je gebruikers in. Houd het bij cohorten, versies en configuratie.

Regels: een geordende lijst, eerste match wint

Section titled “Regels: een geordende lijst, eerste match wint”

Elke flag + omgeving heeft een geordende lijst regels. Een regel is een groep condities die met AND aan elkaar hangencohort is beta AND appVersion ≥ 2.0 — plus de waarde die hij serveert bij een match.

De evaluatie is simpel en het waard om te verinnerlijken:

  1. Regels worden van boven naar beneden gecontroleerd.
  2. De eerste regel waarvan alle condities gelden bepaalt de waarde. Alles eronder wordt niet meer geraadpleegd — volgorde is betekenis, en je kunt regels in het dashboard herschikken.
  3. Een conditie op een tag die het apparaat niet meestuurde geldt niet. Geen tag, geen match — de regel wordt overgeslagen, nooit een fout.
  4. Als geen enkele regel matcht, serveert de standaard van de flag.

Een regel zonder condities matcht altijd — dat is de “alle anderen”-vorm die je onderaan een lijst zet.

Condities kunnen versies vergelijken: appVersion ≥ 2.0. Versies splitsen op punten en vergelijken numeriek, van links naar rechts, en ontbrekende onderdelen lezen als nul — dus 2.0 is gelijk aan 2.0.0, en 2.10 is nieuwer dan 2.9. Een apparaatversie die niet als gepunte getallen parseert (zeg, 2.0-beta) laat de conditie simpelweg niet gelden. Pre-release-achtervoegsels worden niet ondersteund — vergelijk gewone gepunte versies.

Segmenten: een stukje regel dat je benoemt en hergebruikt

Section titled “Segmenten: een stukje regel dat je benoemt en hergebruikt”

Een segment is een benoemde AND-lijst van condities — beta-testers, internal-devices — die je één keer definieert voor je hele organisatie en waarnaar je verwijst vanuit regels over flags en omgevingen heen. Bewerk het segment, en elke regel die het gebruikt volgt.

Dat bereik is precies waarom het bewerken van een segment rechten op productieniveau vereist: een segment waarnaar een productieregel verwijst, verandert productie wanneer het verandert, wie het ook opslaat.

Elke regel kan een rollout-percentage dragen: in plaats van elk apparaat te matchen dat zijn condities haalt, matcht hij alleen de eerste N% ervan. Zo werkt “10% van de bètatesters” — eerst condities, dan de percentagepoort.

Drie eigenschappen maken rollouts betrouwbaar om op te leunen:

  • Sticky. Of een apparaat binnen het percentage valt wordt berekend uit de identiteit van het apparaat en de sleutel van de flag — hetzelfde apparaat krijgt bij elk verzoek hetzelfde antwoord. Niemand flikkert een rollout in en uit, en 10% verhogen naar 20% houdt de oorspronkelijke 10% erin.
  • Per flag. De berekening mengt de flagsleutel mee, dus een 10%-rollout op de ene flag en een 10%-rollout op een andere raken verschillende tienden van je vloot. Er is geen permanent onfortuinlijke 10% van de apparaten die elk experiment tegelijk krijgt.
  • Er wordt niets opgeslagen. Cohortlidmaatschap is pure rekenkunde, per verzoek opnieuw berekend — FortressFlag houdt niet bij welke apparaten in welke rollout zitten. Er valt niets te lekken en niets op te ruimen.

Ruim genoeg om ze zelden tegen te komen, vast zodat payloads begrensd blijven: tot 20 regels per flag per omgeving, 5 condities per regel (een segmentverwijzing telt als één en kan er zelf tot 10 bevatten), tagsleutels tot 64 tekens, conditiewaarden tot 256.