Stabilumas yra produkto principas, o ne požiūris po fakto. AiHummer laikosi SemVer, taikomas automatiškai saugios į priekį duomenų bazės migracijos, ir gali savarankiškai atnaujinti iš CDN — todėl atnaujinimai yra įprasti, o ne rizikingi.
Versijų valdymas (SemVer)
Leidimai laikosi semantinio versijavimo. Versiją nurodo /healthz ir pagal aihummer version, todėl visada galite tiksliai patvirtinti, kas veikia prieš ir po atnaujinimo.
Migracijos yra saugios ateičiai ir automatinės
Paleidimo metu vartai automatiškai taiko laukiančius duomenų bazės migracijas. Dvi savybės užtikrina tai saugiai:
Saugu į priekį. Migracijos yra rašomos taip, kad naujesnė dvejetainė versija veiktų su
schema, į kurią jis migruoja, todėl automatinis taikymas ir slankiojantys atnaujinimai yra saugūs.
Vienkartinis taikymas per patarimų užraktą. Migracijos vykdomos pagal PostgreSQL
įspėjamasis užraktas, todėl kai keli vartai prasideda vienu metu, tik vienas jų juos taiko
o likusieji laukia — niekada dvigubo migracijos.
[!NOTE]
Migracijos visada vykdomos naudojant pagrindinę duomenų bazės talpyklą. Apribota RLS rolė
(AIHUMMER_DB_APP_URL) yra skirta aptarnauti srautą, o ne schemų keitimams.
Atnaujinimas
Naujos versijos parsiunčiamos iš tiekėjo leidimų CDN. Įprastas būdas atsinaujinti
— viena komanda serveryje:
aihummer update --check # tik pranešti, ar yra naujesnė versijaaihummer update # atsisiųsti ir pritaikyti
--check nieko nerašo, todėl nereikalauja root teisių. Pats pritaikymas
perrašo diegimo šaknį ir perkrauna tarnybą, todėl paleidžiamas per sudo.
Laukiamas rezultatas:--check išveda esamą ir prieinamą versijas ir baigia
darbą nieko nekeisdamas. aihummer update atsisiunčia artefaktą, patikrina jo
sha256 kontrolinę sumą ir cosign parašą, pakeičia dvejetainį failą ir perkrauna
tarnybą — po to aihummer version rodo naują versiją. Jei patikra nesutampa,
atnaujinimas nutraukiamas prieš failo pakeitimą: veikianti versija lieka
nepaliesta.
[!NOTE]
Automatinį atnaujinimą įjungia tiekėjas, o ne jūs. Automatinio atnaujinimo
režimas ir tvarkaraštis priklauso leidimo priežiūrai ir nustatomi pasirašytu
tiekėjo nurodymu. Atitinkamų jungiklių nėra nei žiniatinklio sąsajoje, nei
aihummer settings, o į gateway.env įrašytų automatinio atnaujinimo kintamųjų
vartai neskaito — jei juos ten matote, jie nieko nekeičia. Kad atsinaujintumėte
pagal savo tvarkaraštį, naudokite aukščiau pateiktą komandą aihummer update.
Atstatymas
Ką galima grąžinti atgal — po vieną:
Dvejetainis failas — galima grįžti į ankstesnę versiją (ankstesnių leidimų
artefaktai lieka CDN; įdiekite reikiamą versiją iš naujo).
Duomenų bazės schema — migracijos yra saugios į priekį, todėl ankstesnis
dvejetainis failas veikia su naujesne schema; atskiro schemos atstatymo nėra.
Papildiniai — versijos tvarkomos kiekvienam diegimui atskirai; prireikus
grąžinkite ankstesnę papildinio versiją iš katalogo.
Konfigūracija — atnaujinant nekeičiama; prireikus atkuriama iš atsarginės
kopijos.
Atnaujinimai be prastovų
AiHummer sukurta atnaujinimams be nutrūkimo:
Vykdykite 2+ vartus už tarpinio serverio. Vartykite juos po vieną; pasiruošimo zondas
(/readyz) palaiko perkraunamą mazgą už borto tol, kol jis pradeda teikti paslaugas.
Tvarkaraštis turi vieną vadovą. Fono planavimas išrenka vieną lyderį
per PostgreSQL patarimų užraktą, todėl kelių vartų paleidimas nesukelia dubliavimosi
planuojami darbai.
Pristatymas yra idempotentinis. Patikimas pristatymas kartu su idempotencijos raktai reiškia
atsakymas niekada nėra siunčiamas du kartus per perkrovimą, kas ir sukuria ritinimą
saugiai paleiskite iš naujo per savo vartus.
Stabilumas yra produkto principas, o ne požiūris po fakto. AiHummer laikosi **SemVer**, taikomas **automatiškai saugios į priekį duomenų bazės migracijos**, ir gali **savarankiškai atnaujinti** iš CDN — todėl atnaujinimai yra įprasti, o ne rizikingi.
## Versijų valdymas (SemVer)
Leidimai laikosi semantinio versijavimo. Versiją nurodo `/healthz` ir pagal `aihummer version`, todėl visada galite tiksliai patvirtinti, kas veikia prieš ir po atnaujinimo.
## Migracijos yra saugios ateičiai ir automatinės
Paleidimo metu vartai automatiškai taiko laukiančius duomenų bazės migracijas. Dvi savybės užtikrina tai saugiai:
- **Saugu į priekį.** Migracijos yra rašomos taip, kad naujesnė dvejetainė versija veiktų su
schema, į kurią jis migruoja, todėl automatinis taikymas ir slankiojantys atnaujinimai yra saugūs.
- **Vienkartinis taikymas per patarimų užraktą.** Migracijos vykdomos pagal **PostgreSQL
įspėjamasis užraktas**, todėl kai keli vartai prasideda vienu metu, tik vienas jų juos taiko
o likusieji laukia — niekada dvigubo migracijos.
> [!NOTE]
> Migracijos visada vykdomos naudojant pagrindinę duomenų bazės talpyklą. Apribota RLS rolė
> (`AIHUMMER_DB_APP_URL`) yra skirta aptarnauti srautą, o ne schemų keitimams.
## Atnaujinimas
Naujos versijos parsiunčiamos iš tiekėjo leidimų CDN. Įprastas būdas atsinaujinti
— viena komanda serveryje:
```bash
aihummer update --check # tik pranešti, ar yra naujesnė versija
aihummer update # atsisiųsti ir pritaikyti
```
`--check` nieko nerašo, todėl **nereikalauja root teisių**. Pats pritaikymas
perrašo diegimo šaknį ir perkrauna tarnybą, todėl paleidžiamas per `sudo`.
**Laukiamas rezultatas:** `--check` išveda esamą ir prieinamą versijas ir baigia
darbą nieko nekeisdamas. `aihummer update` atsisiunčia artefaktą, patikrina jo
sha256 kontrolinę sumą ir cosign parašą, pakeičia dvejetainį failą ir perkrauna
tarnybą — po to `aihummer version` rodo naują versiją. Jei patikra nesutampa,
atnaujinimas nutraukiamas **prieš** failo pakeitimą: veikianti versija lieka
nepaliesta.
> [!NOTE]
> **Automatinį atnaujinimą įjungia tiekėjas, o ne jūs.** Automatinio atnaujinimo
> režimas ir tvarkaraštis priklauso leidimo priežiūrai ir nustatomi pasirašytu
> tiekėjo nurodymu. Atitinkamų jungiklių nėra nei žiniatinklio sąsajoje, nei
> `aihummer settings`, o į `gateway.env` įrašytų automatinio atnaujinimo kintamųjų
> vartai **neskaito** — jei juos ten matote, jie nieko nekeičia. Kad atsinaujintumėte
> pagal savo tvarkaraštį, naudokite aukščiau pateiktą komandą `aihummer update`.
### Atstatymas
Ką galima grąžinti atgal — po vieną:
- **Dvejetainis failas** — galima grįžti į ankstesnę versiją (ankstesnių leidimų
artefaktai lieka CDN; įdiekite reikiamą versiją iš naujo).
- **Duomenų bazės schema** — migracijos yra saugios į priekį, todėl ankstesnis
dvejetainis failas veikia su naujesne schema; atskiro schemos atstatymo nėra.
- **Papildiniai** — versijos tvarkomos kiekvienam diegimui atskirai; prireikus
grąžinkite ankstesnę papildinio versiją iš katalogo.
- **Konfigūracija** — atnaujinant nekeičiama; prireikus atkuriama iš atsarginės
kopijos.
## Atnaujinimai be prastovų
AiHummer sukurta atnaujinimams be nutrūkimo:
- **Vykdykite 2+ vartus už tarpinio serverio.** Vartykite juos po vieną; pasiruošimo zondas
(`/readyz`) palaiko perkraunamą mazgą už borto tol, kol jis pradeda teikti paslaugas.
- **Tvarkaraštis turi vieną vadovą.** Fono planavimas išrenka vieną lyderį
per PostgreSQL patarimų užraktą, todėl kelių vartų paleidimas nesukelia dubliavimosi
planuojami darbai.
- **Pristatymas yra idempotentinis.** Patikimas pristatymas kartu su idempotencijos raktai reiškia
atsakymas niekada nėra siunčiamas du kartus per perkrovimą, kas ir sukuria ritinimą
saugiai paleiskite iš naujo per savo vartus.
## Kur toliau
- Paprotės, užtveriančios nuolatinį perkrovimą:
[systemd ir sveikatos patikrinimai](/lt/v1.0/operations/systemd-health).
- Atlikite atsarginę kopiją prieš didelį atnaujinimą:
[Atsarginės kopijos ir nelaimių atsigavimas](/lt/v1.0/operations/backups-dr).
- Žiūrėkite diegimą:
[Stebimumas](/lt/v1.0/operations/observability).