Cílová skupina: Tento článek je určen pro manažery firmware programů, inženýry OTA platforem, provozovatele flotil 5 000–60 000 čtecích per a B2B dovozce, kteří musí obhájit rozhodnutí o vydání před školskou radou nebo ministerstvem státu v Perském zálivu. Předpokládáme, že jste slyšeli o canary nasazeních, ale chcete přesně vědět, jak se kohorta vybírá, jaké signály rozhodují o postupu či rollbacku a jak se A/B testy zapojení s OID knihami izolují od metrik stability firmwaru.
Nasazení na 14 000 per pro vzdělávací program brazilského státu bylo naplánováno na firmware 3.3.1. Nenasadili jsme ho přímo na všech 14 000. Místo toho jsme v úterý v 09:00 místního času nasadili na 140 per – 1% canary – sledovali jsme metriky 96 hodin a teprve poté jsme rozšířili na zbývajících 99 %. Canary zachytila regresi v cestě OID vyhledávání, která by se odhaduje projevila u 1,4 % zařízení. O čtyři dny později jsme vydali verzi 3.3.2. Nulový výpadek flotily.
Právě tato disciplína je tím, co tento článek dokumentuje: výběr kohorty, definici signálů, prahové hodnoty rozhodnutí, izolaci A/B testů a pravidla pro povýšení canary na 100% nasazení. Vše níže uvedené platí pro B1, B2, F8, K7, KF1, L5, P2, Q6, Q8, T2 a Y6.
1. Životní cyklus canary
Každé vydání firmwaru projde pěti fázemi, než dosáhne 100 % flotily. Fáze jsou časově ohraničené, ne „uvidíme, jak to půjde". Každá fáze má explicitní výstupní kritéria a pojistku (kill switch).
| Fáze | Velikost kohorty | Doba trvání | Výstupní kritérium | Pojistka (kill switch) |
|---|---|---|---|---|
| Lab (R&D) | 12 referenčních per | 14 dní | 0 kritických chyb, <0,5 % závažných | Interní |
| Uzavřená beta | 120 per (inženýři + VIP) | 14 dní | 0 kritických, <0,3 % závažných | Interní |
| Canary | 1 % flotily, ≥ 140 per | 96 h | Úspěšnost bootu >99,5 %, žádná chyba S0 | Automatický rollback |
| Fázované nasazení | vlny 25 %, 50 %, 75 % | 7 dní každá | Bezporuchové relace >99,7 % | Automatický rollback |
| GA | 100 % | n/a | n/a | Opravné vydání (hotfix) |
Fáze canary je ta, která zachytí problém, jako byla regrese OID vyhledávání ve verzi 3.3.1. Bez ní by se chyba projevila u všech 14 000 per do 18 hodin a rollback by byl viditelný pro rodiče.
2. Výběr kohorty – jak se vybírá 1 %
Naivní canary vybere „první 1 %, co se přihlásí". Takto nepostupujeme. Kohorta canary je stratifikována podél tří os, aby byla zajištěna statistická platnost.
2.1 Stratifikační dimenze
| Osa | Segmenty | Důvod |
|---|---|---|
| Geografie | 6 strat (SA, EU, ME, APAC, LATAM, Afrika) | Zachytí regionálně specifické chyby (písmo, síť, regulace) |
| Mix modelů | Všech 11 SKU proporcionálně | Zachytí hardwarově specifické regrese |
| Konektivita | 60 % dostupných přes Wi-Fi, 40 % pouze offline | Zachytí chyby závislé na síti |
| Profil obsahu | Lehký (<5 knih), střední (5–20), těžký (>20) | Zachytí regrese v objemu obsahu |
Kohorta se při každém vydání obnovuje. Pero, které bylo v canary 3.3.0, má 35 % šanci, že bude v canary 3.3.1, protože chceme překrývající se signál, ale nechceme stále spalovat stejnou populaci.
2.2 Statistická síla
Aby canary zachytila 1% regresi s 95% spolehlivostí, musí kohorta činit alespoň 300 per. Naše politika zní 1 % flotily nebo 300 per, podle toho, co je více, s pevným minimem 140 per (nejmenší statisticky využitelná kohorta pro 3% regresi). Nasazení 14 000 per v Brazílii proto použilo 140per canary (1 %) a dosáhlo statistické síly pro 3% regrese, nikoli 1 %. Přijali jsme tento kompromis, protože lab a uzavřená beta již pokryly třídu 1 %.
3. Signály sledované během Canary
Sledujeme 17 signálů, ale pouze 5 z nich jsou brány pro povýšení canary. Zbývajících 12 slouží k diagnostice.
3.1 Klíčové signály
| Signál | Definice | Prahová hodnota | Zdroj |
|---|---|---|---|
| Úspěšnost bootování | (studené booty dosažení domovské obrazovky) / (studené booty) | >99,5 % za 96 h | Telemetrická událost boot.end |
| Bezchybná relace | (relace bez nezachycené výjimky) / (relace) | >99,7 % za 96 h | Telemetrická událost app.crash |
| Počet chyb S0 | Chyby v třídě závažnosti S0 (ztráta dat, znehodnocení zařízení) | 0 za 96 h | Telemetrická událost err.s0 |
| Latence vyhledávání OID p95 | 95. percentil OID-k-výslovnosti | <220 ms | Telemetrická událost oid.lookup |
| Nadměrné vybíjení baterie | Pera hlásící >8 % vybití za hodinu v nečinnosti | <0,5 % kohorty | Telemetrická událost pwr.drain |
3.2 Diagnostické signály
Mezi 12 diagnostických signálů patří: míra zásahů slovníku, úspěšnost načítání jazykového balíčku, latence TTS do prvního bajtu, přesnost slov ASR na sadě benchmarkových frází, náběh nabíjecího proudu USB-C, míra neodskoknutí tlačítek, prasknutí reproduktoru při zapnutí, drift kalibrace OID senzoru, delta opotřebení NAND, delta opotřebení NOR, doba asociace Wi-Fi a úspěšnost párování BLE.
Pokud se diagnostický signál zhorší o více než 2 směrodatné odchylky, spustí se lidská kontrola, nikoli automatický rollback.
4. Pravidla automatického rollbacku
Platforma OTA sleduje pět klíčových signálů v reálném čase. Pokud dojde k překročení prahové hodnoty, platforma vydá příkaz k automatickému rollbacku pro kohortu do 90 sekund.
| Překročení prahové hodnoty | Akce | Doba obnovy |
|---|---|---|
| Úspěšnost bootování <99,5 % | Automatický rollback kohorty + označení vydání | 14 h konvergence kohorty |
| Bezchybná relace <99,7 % | Automatický rollback kohorty + označení vydání | 14 h konvergence kohorty |
| Počet chyb S0 >0 | Okamžité globální zastavení + automatický rollback kohorty | 4 h globální zastavení |
| OID lookup p95 >220 ms | Diagnostický příznak, žádný automatický rollback | 96 h rozhodovací okno |
| Nadměrné vybíjení baterie >0,5 % | Diagnostický příznak, žádný automatický rollback | 96 h rozhodovací okno |
Pravidlo „S0 = 0“ je jediné s nulovou tolerancí. Jediná událost S0 zastaví všechny aktivní fáze rolloutu a převede všechna aktivní povýšení do manuální kontroly.
5. Izolace A/B testů
Někdy nejde o to „je firmware stabilní?“, ale o to „zlepšuje funkce X zapojení?“. A/B testy provádíme na kohortě canary, izolované od metrik stability, podle tří pravidel:
- Stabilita na prvním místě — Pokud canary poruší jakoukoli bránu stability, A/B test je neprůkazný; vracíme se zpět.
- Randomizováno v rámci kohorty — 50/50 rozdělení v rámci canary, vyvážené podle geografie, skladby modelů a profilu obsahu.
- Minimální detekovatelný efekt — Předem vypočítáme velikost vzorku potřebnou pro 80% sílu testu u primární metriky. U počtu OID ťuknutí na relaci canary kohorta 140 per (70 vs 70) detekuje 12% efekt při 80% síle.
Příklad A/B testu, který jsme provedli na firmwaru 3.2.x: hypotéza byla, že rychlejší spouštěcí animace (1,4 s vs 2,1 s) zvýší počet OID ťuknutí na relaci. A/B test běžel 14 dní. Výsledek: žádný statisticky významný efekt (p = 0,31). Změnu jsme vrátili, protože náklady na regresi (vnímanou jako „uspěchanou") nestály za nulový přínos.
6. Harmonogram propagace po úspěchu canary
Pokud canary projde všemi pěti bránami po 96 hodinách, propagujeme ve třech vlnách: 25 % → 50 % → 75 % → 100 %. Každá vlna trvá 7 dní se stejnými pěti signálovými branami, ale s přísnějšími prahovými hodnotami.
| Vlna | Velikost kohorty | Prahová hodnota stability | Prahová hodnota bez pádů | Doba držení |
|---|---|---|---|---|
| 25 % | 25 % flotily | >99,6 % | >99,75 % | 7 dní |
| 50 % | 50 % flotily | >99,65 % | >99,8 % | 7 dní |
| 75 % | 75 % flotily | >99,7 % | >99,85 % | 7 dní |
| 100 % | 100 % flotily | >99,7 % | >99,85 % | n/a |
Pokud některá vlna prahovou hodnotu poruší, vracíme se ke kohortě předchozí vlny, nikoli na „nulu". Vlna 50 %, která selže, se vrací ke kohortě 25 %, nikoli k canary. To je rychlejší než úplné opakování canary a neplýtvá statistickou silou.
7. SVG vizualizace životního cyklu canary a monitorování signálů
8. Co vidí distributor
Distributor využívající hostovanou službu OTA vidí canary dashboard s pěti čísly aktualizovanými každých 15 minut:
- Velikost kohorty (aktuální vs cílová)
- Hodiny od začátku canary
- 5 hodnot signálových bran
- Čas do dalšího rozhodovacího bodu
Dashboard také zobrazuje tlačítko „Promote“ (Propagovat), které se aktivuje, pouze pokud všech pět bran projde po 96 hodinách. Kliknutím na „Promote“ se spustí vlna 25 % s 7denním držením. Neexistuje tlačítko „Přeskočit na 100 %“.
9. Náklady a dodací lhůty
| Služba | Cena | Dodací lhůta |
|---|---|---|
| Fáze canary (za vydání) | součástí hostované OTA | 96 h |
| Konzultace A/B testu (za hypotézu) | 1 400 $ | 14 dní návrh, 14 dní realizace |
| Vlastní nastavení velikosti canary kohorty | 0 $ (v samoobslužném dashboardu) | okamžitě |
| Provedení rollbacku | součástí | 90 s od porušení prahové hodnoty |
| Vydání hotfixu (spuštěno S0) | součástí | cíl 24 h, strop 72 h |
Tip pro kupující: Pokud je váš flotila menší než 5 000 per, canary kohorta je 140 per (statistické minimum), ne 1 %. Plánujte s tím: 140 per je 2,8 % z flotily 5 000 per, což znamená mírně vyšší „burn“ kohorty na jedno vydání.
9. Příloha: Tři reálné výsledky canary a co nás naučily
86 vydání firmwaru, která jsme dodali od roku 2023, vytvořilo 27 odlišných canary kohort. Tři z těchto výsledků jsou obzvlášť poučné pro distributory, kteří budují vlastní canary programy. Jsou reprodukovány níže ve stejné podobě, jak je prezentujeme našemu týmu pro spolehlivost.
9.1 Výsledek 2024-09 — Firmware 3.1.1, saúdskoarabská flotila 9 000 per
Canary kohorta čítala 90 per (1 % zaokrouhleno dolů na nejbližších 90). Všech pět gate-keeperů prošlo na 96hodinové značce. Postup na 25 % pokračoval. Při 7denní revizi vlny diagnostický signál vybití baterie vzrostl z 0,18 % kohorty na 0,42 % kohorty — stále pod prahovou hodnotou 0,5 %, ale blízko. Vlnu 25 % jsme podrželi o dalších 7 dní. V den 14 se míra vyšplhala na 0,61 %, čímž překročila práh 0,5 %. 25 % kohorta byla vrácena; vydání bylo pozastaveno. Druhý canary s opravou byl vydán jako 3.1.2 o čtyři dny později. Poučení: diagnostické signály se mohou stát gate-keeper signály. Plánujte delší vlnu, pokud se jakýkoli diagnostický signál pohybuje.
9.2 Výsledek 2025-02 — Firmware 3.2.1, mexická flotila 11 500 per
Canary kohorta čítala 115 per. V 72hodinové značce byly sessions bez pádů na 99,4 % — těsně pod prahovou hodnotou 99,7 %. Platforma OTA vydala automatický rollback do 90 sekund. 115 per se vrátilo na 3.2.0 do 11 hodin. Šetření vystopovalo pád na memory leak v cestě Wi-Fi roamingu. Poučení: automatický rollback fungoval přesně podle návrhu a canary kohortu jsme kvůli vadnému vydání neztratili. Distributoři provozující self-hosted OTA musí zavést stejnou disciplínu 90sekundového auto-rollbacku; bez ní SLA pozbývá platnosti.
9.3 Výsledek 2026-05 — Firmware 3.3.2, indonéská flotila 4 800 per
Canary kohorta čítala 140 per (tvrdé minimum). Všechny brány prošly. Postup pokračoval. Vlna 25 % běžela 7 dní. 6. den vrátil A/B test (rychlejší bootovací animace) p = 0,18 — statisticky nevýznamné, ale směrová preference pomalejší animace. Vydání prošlo na 25 %, 50 %, 75 % a 100 % bez změny animace. Poučení: A/B testy uvnitř canary jsou nízkonákladový způsob, jak ověřit UX změnu před tím, než ji vystavíte 100 % flotily.
9.4 Mediánové chování kohorty napříč 27 canary
Napříč 27 canary, které jsme od roku 2023 provedli, vypadá mediánový výsledek jako tabulka níže. Použijte jej jako základní linii pro plánování vlastní flotily.
| Metrika | Medián | p25 | p75 |
|---|---|---|---|
| Úspěšnost bootu | 99,84 % | 99,71 % | 99,91 % |
| Sessions bez pádů | 99,91 % | 99,85 % | 99,95 % |
| Události S0 | 0 | 0 | 0 |
| OID lookup p95 | 168 ms | 142 ms | 198 ms |
| Nadměrné vybíjení baterie | 0,21 % | 0,12 % | 0,34 % |
| Čas do prvního porušení gate-keepera | 184 h | 96 h | 312 h |
| Obnova kohorty po porušení | 9 h | 4 h | 14 h |
Canary, který spadá do p25 všech šesti metrik, si vede lépe než 75 % našich historických kohort. Canary, který spadá do p75 všech šesti metrik, vyžaduje před postupem šetření.
10. Vizualizace: dosah kohorty a porušení gate-keeperů na 100 canary
Níže uvedená vizualizace kombinuje stohovaný sloupcový graf (kolik canary skončilo na které úrovni) s liniovým grafem toho, jak často se každé porušení gate-keepera spustilo napříč stejnými 100 canary. Recenzenti ji používají na pondělním reliability standupu.