Stabilitatea este un principiu de produs, nu o adăugare ulterioară. AiHummer
respectă SemVer, aplică migrări de bază de date sigure înainte în mod
automat și se poate autoactualiza dintr-un CDN — astfel încât actualizările
sunt o rutină, nu un risc.
Versionare (SemVer)
Lansările respectă versionarea semantică. Versiunea este raportată de /healthz și
de aihummer version, astfel încât poți confirma întotdeauna exact ce rulează
înainte și după o actualizare.
Migrările sunt sigure înainte și automate
La pornire, gateway-ul aplică automat migrările de bază de date în așteptare. Două
proprietăți mențin acest lucru sigur:
Sigure înainte. Migrările sunt scrise astfel încât un binar mai nou să
funcționeze cu schema către care migrează, ceea ce face ca aplicarea automată și
actualizările progresive să fie sigure.
Aplicator unic prin blocaj consultativ. Migrările rulează sub un blocaj
consultativ PostgreSQL, astfel încât atunci când mai multe gateway-uri pornesc
simultan, doar unul le aplică, iar restul așteaptă — niciodată o migrare dublă.
[!NOTE]
Migrările rulează întotdeauna pe pool-ul de bază de date al proprietarului. Rolul
RLS restricționat (AIHUMMER_DB_APP_URL) este pentru servirea traficului, nu
pentru modificări de schemă.
Autoactualizare din CDN
Gateway-ul se poate actualiza singur din CDN-ul de lansare. Comportamentul este
guvernat de trei variabile de mediu:
Variabilă
Scop
AIHUMMER_AUTO_UPDATE
off | check | apply — dezactivat, doar notificare sau aplicare automată
AIHUMMER_UPDATE_CHANNEL
Canalul de lansare de urmărit (de ex. stable / alfa / beta / dev)
AIHUMMER_DOWNLOAD_BASE_URL
URL-ul de bază din care este preluată actualizarea
Actualizările sunt descoperite prin latest.json-ul canalului de pe CDN. Poți
conduce actualizările și manual cu CLI:
aihummer update --check # report whether a newer version is availableaihummer update # download and apply the update
# gateway.env — notify-only on the stable channelAIHUMMER_AUTO_UPDATE=checkAIHUMMER_UPDATE_CHANNEL=stable
[!TIP]
Începe cu AIHUMMER_AUTO_UPDATE=check pentru a fi notificat despre lansările
noi și treci la apply odată ce ai încredere în canal pentru lansări
nesupravegheate.
Lansări fără timp de nefuncționare
AiHummer este construit pentru a se actualiza fără o întrerupere:
Rulează 2+ gateway-uri în spatele unui proxy. Lansează-le câte unul pe rând;
sonda de pregătire (/readyz) menține un nod care repornește în afara rotației
până când servește.
Planificatorul este cu lider unic. Planificarea de fundal alege un singur
lider printr-un blocaj consultativ PostgreSQL, astfel încât rularea mai multor
gateway-uri nu dublează lucrarea planificată.
Livrarea este idempotentă. Outbox-ul cu livrare garantată plus cheile de
idempotență înseamnă că un răspuns nu este trimis niciodată de două ori la o
repornire, ceea ce face sigură lansarea unei flote.
Stabilitatea este un principiu de produs, nu o adăugare ulterioară. AiHummer
respectă **SemVer**, aplică **migrări de bază de date sigure înainte în mod
automat** și se poate **autoactualiza** dintr-un CDN — astfel încât actualizările
sunt o rutină, nu un risc.
## Versionare (SemVer)
Lansările respectă versionarea semantică. Versiunea este raportată de `/healthz` și
de `aihummer version`, astfel încât poți confirma întotdeauna exact ce rulează
înainte și după o actualizare.
## Migrările sunt sigure înainte și automate
La pornire, gateway-ul aplică automat migrările de bază de date în așteptare. Două
proprietăți mențin acest lucru sigur:
- **Sigure înainte.** Migrările sunt scrise astfel încât un binar mai nou să
funcționeze cu schema către care migrează, ceea ce face ca aplicarea automată și
actualizările progresive să fie sigure.
- **Aplicator unic prin blocaj consultativ.** Migrările rulează sub un **blocaj
consultativ PostgreSQL**, astfel încât atunci când mai multe gateway-uri pornesc
simultan, doar unul le aplică, iar restul așteaptă — niciodată o migrare dublă.
> [!NOTE]
> Migrările rulează întotdeauna pe pool-ul de bază de date al proprietarului. Rolul
> RLS restricționat (`AIHUMMER_DB_APP_URL`) este pentru servirea traficului, nu
> pentru modificări de schemă.
## Autoactualizare din CDN
Gateway-ul se poate actualiza singur din CDN-ul de lansare. Comportamentul este
guvernat de trei variabile de mediu:
| Variabilă | Scop |
|---|---|
| `AIHUMMER_AUTO_UPDATE` | `off` \| `check` \| `apply` — dezactivat, doar notificare sau aplicare automată |
| `AIHUMMER_UPDATE_CHANNEL` | Canalul de lansare de urmărit (de ex. stable / alfa / beta / dev) |
| `AIHUMMER_DOWNLOAD_BASE_URL` | URL-ul de bază din care este preluată actualizarea |
Actualizările sunt descoperite prin `latest.json`-ul canalului de pe CDN. Poți
conduce actualizările și manual cu CLI:
```bash
aihummer update --check # report whether a newer version is available
aihummer update # download and apply the update
```
```ini
# gateway.env — notify-only on the stable channel
AIHUMMER_AUTO_UPDATE=check
AIHUMMER_UPDATE_CHANNEL=stable
```
> [!TIP]
> Începe cu `AIHUMMER_AUTO_UPDATE=check` pentru a fi notificat despre lansările
> noi și treci la `apply` odată ce ai încredere în canal pentru lansări
> nesupravegheate.
## Lansări fără timp de nefuncționare
AiHummer este construit pentru a se actualiza fără o întrerupere:
- **Rulează 2+ gateway-uri în spatele unui proxy.** Lansează-le câte unul pe rând;
sonda de pregătire (`/readyz`) menține un nod care repornește în afara rotației
până când servește.
- **Planificatorul este cu lider unic.** Planificarea de fundal alege un singur
lider printr-un blocaj consultativ PostgreSQL, astfel încât rularea mai multor
gateway-uri nu dublează lucrarea planificată.
- **Livrarea este idempotentă.** Outbox-ul cu livrare garantată plus cheile de
idempotență înseamnă că un răspuns nu este trimis niciodată de două ori la o
repornire, ceea ce face sigură lansarea unei flote.
## Unde mergi mai departe
- Sondele care filtrează o repornire progresivă:
[systemd și verificări de sănătate](/ro/v1.0/operations/systemd-health).
- Fă o copie de rezervă înainte de o actualizare majoră:
[Copii de rezervă și recuperare în caz de dezastru](/ro/v1.0/operations/backups-dr).
- Urmărește lansarea:
[Observabilitate](/ro/v1.0/operations/observability).