Targeted rollout: A/B testy, ringi i segmenty
- data
- kategoria
- CI/CD
- także w
- Reliability Engineering
- czytanie
- 1 min / 264 słów
5% ruchu nie zawsze znaczy to samo.
Może oznaczać losową próbkę requestów.
Może oznaczać pięć procent użytkowników przypisanych na stałe.
Może oznaczać jeden region, jednego tenanta albo pracowników firmy.
Canary zwykle pyta:
czy nowa wersja psuje system?
Targeted rollout pyta inaczej:
komu pokazujemy zmianę najpierw?
Po co to powstało
Sam procent ruchu jest zbyt biedny, kiedy ryzyko nie jest równomierne.
Wewnętrzni użytkownicy mogą zaakceptować błąd szybciej niż klienci.
Beta klienci mogą świadomie testować nowe zachowanie.
Jeden region może mieć prostsze integracje.
Jeden plan płatny może mieć funkcję, której inni nie używają.
Stąd ringi i segmenty.
ring 0: internal
ring 1: beta
ring 2: selected customers
ring 3: everyone
To nie jest już tylko rozkład ruchu.
To polityka ekspozycji.
Minimalny przykład
Najprostszy mechanizm to decyzja w aplikacji.
function variantFor(user) {
if (user.email.endsWith("@example.com")) return "new";
if (user.plan === "beta") return "new";
return "old";
}
Inny minimalny mechanizm to sticky assignment po user_id.
function bucket(userId) {
return hash(userId) % 100;
}
const useNewVersion = bucket(user.id) < 5;
Użytkownik powinien trafiać do tej samej wersji w kolejnych requestach.
Bez tego testujemy losowe mieszanie zachowań, nie rollout.
Na poziomie routingu można użyć nagłówka:
X-Ring: internal
albo cookie:
variant=B
To może obsłużyć aplikacja, gateway albo edge.
A/B test to nie canary
A/B test ma zwykle pytanie produktowe:
która wersja daje lepszy efekt?
Canary ma pytanie operacyjne:
czy nowa wersja jest bezpieczna?
Te mechanizmy mogą wyglądać podobnie technicznie.
Cel jest inny.
W A/B testach ważne są:
eksperyment
kohorta
sticky assignment
metryka sukcesu
istotność wyniku
W rolloutach ważniejsze są:
blast radius
rollback
alerty
kompatybilność
kontrola ekspozycji
Gdzie nazwa kłamie
Targeted rollout brzmi precyzyjnie.
Precyzja zależy od miejsca, w którym podejmujemy decyzję.
Gateway widzi request, host, path, nagłówki i cookie.
Aplikacja widzi użytkownika, tenant, plan i kontekst biznesowy.
Feature flag system może widzieć jeszcze więcej, ale wtedy dochodzi koszt utrzymania reguł.
Jeżeli mechanizm nie ma sticky assignment, użytkownik może dostać dwa różne światy w jednej sesji.
Jeżeli segment jest źle dobrany, rollout nie obniża ryzyka, tylko daje fałszywy spokój.
Targeted rollout realnie służy do kontrolowania tego, kto pierwszy widzi zmianę.
Nie zastępuje metryk.