Konrad Kowalski (rootsher)Principal Platform & Reliability Architect011011111100011011111101101110110101111010101110

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:

text
czy nowa wersja psuje system?

Targeted rollout pyta inaczej:

text
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.

text
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.

js
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.

js
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:

text
X-Ring: internal

albo cookie:

text
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:

text
która wersja daje lepszy efekt?

Canary ma pytanie operacyjne:

text
czy nowa wersja jest bezpieczna?

Te mechanizmy mogą wyglądać podobnie technicznie.

Cel jest inny.

W A/B testach ważne są:

text
eksperyment
kohorta
sticky assignment
metryka sukcesu
istotność wyniku

W rolloutach ważniejsze są:

text
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.