Стабільнасць — гэта прынцып прадукту, а не другаснае меркаванне. AiHummer
прытрымліваецца SemVer, прымяняе бяспечныя для будучыні міграцыі базы даных
аўтаматычна і можа самаабнаўляцца з CDN — таму абнаўленні з’яўляюцца руцінай,
а не рызыкай.
Версіянаванне (SemVer)
Рэлізы прытрымліваюцца семантычнага версіянавання (Semantic Versioning). Версія
паведамляецца праз /healthz і праз aihummer version, таму вы заўсёды можаце
дакладна пацвердзіць, што менавіта запушчана, да і пасля абнаўлення.
Міграцыі бяспечныя для будучыні і аўтаматычныя
Пры запуску шлюз аўтаматычна прымяняе адкладзеныя міграцыі базы даных. Дзве
ўласцівасці захоўваюць гэта бяспечным:
Бяспечныя для будучыні. Міграцыі напісаны так, што больш новы бінарнік
працуе з схемай, у якую ён міграе, што і робіць аўтаматычнае прымяненне і
паступовыя абнаўленні бяспечнымі.
Адзіны выканаўца праз advisory lock. Міграцыі выконваюцца пад PostgreSQL
advisory lock, таму калі некалькі шлюзаў запускаюцца адначасова, толькі адзін
прымяняе іх, а астатнія чакаюць — ніколі не бывае падвойнай міграцыі.
[!NOTE]
Міграцыі заўсёды выконваюцца на пуле базы даных уладальніка. Абмежаваная роля RLS
(AIHUMMER_DB_APP_URL) прызначана для абслугоўвання трафіку, а не для змены схемы.
Самаабнаўленне з CDN
Шлюз можа абнаўляць сябе з рэлізнага CDN. Паводзіны кіруюцца трыма зменнымі
асяроддзя:
Variable
Purpose
AIHUMMER_AUTO_UPDATE
off | check | apply — адключана, толькі апавяшчэнне або аўтаматычнае прымяненне
AIHUMMER_UPDATE_CHANNEL
Рэлізны канал для адсочвання (напр. stable / alfa / beta / dev)
AIHUMMER_DOWNLOAD_BASE_URL
Базавы URL, з якога цягнецца абнаўленне
Абнаўленні выяўляюцца праз latest.json канала на CDN. Вы таксама можаце
кіраваць абнаўленнямі ўручную праз 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]
Пачніце з AIHUMMER_AUTO_UPDATE=check, каб атрымліваць апавяшчэнні аб новых
рэлізах, і перайдзіце на apply, калі будзеце давяраць каналу для абнаўленняў
без нагляду.
Разгортванне без прастою
AiHummer пабудаваны так, каб абнаўляцца без прастою:
Запускайце 2+ шлюзы за проксі. Абнаўляйце іх па адным; проба гатоўнасці
(/readyz) трымае вузел, які перазапускаецца, па-за ратацыяй, пакуль ён не
пачне абслугоўваць.
Планавальнік мае адзінага лідара. Фонавае планаванне выбірае адзінага лідара
праз PostgreSQL advisory lock, таму запуск некалькіх шлюзаў не дублюе
запланаваную працу.
Дастаўка ідэмпатэнтная. Outbox гарантаванай дастаўкі плюс ключы
ідэмпатэнтнасці азначаюць, што адказ ніколі не адпраўляецца двойчы пры
перазапуску, што і робіць бяспечным паступовае абнаўленне флоту.
Стабільнасць — гэта прынцып прадукту, а не другаснае меркаванне. AiHummer
прытрымліваецца **SemVer**, прымяняе **бяспечныя для будучыні міграцыі базы даных
аўтаматычна** і можа **самаабнаўляцца** з CDN — таму абнаўленні з'яўляюцца руцінай,
а не рызыкай.
## Версіянаванне (SemVer)
Рэлізы прытрымліваюцца семантычнага версіянавання (Semantic Versioning). Версія
паведамляецца праз `/healthz` і праз `aihummer version`, таму вы заўсёды можаце
дакладна пацвердзіць, што менавіта запушчана, да і пасля абнаўлення.
## Міграцыі бяспечныя для будучыні і аўтаматычныя
Пры запуску шлюз аўтаматычна прымяняе адкладзеныя міграцыі базы даных. Дзве
ўласцівасці захоўваюць гэта бяспечным:
- **Бяспечныя для будучыні.** Міграцыі напісаны так, што больш новы бінарнік
працуе з схемай, у якую ён міграе, што і робіць аўтаматычнае прымяненне і
паступовыя абнаўленні бяспечнымі.
- **Адзіны выканаўца праз advisory lock.** Міграцыі выконваюцца пад **PostgreSQL
advisory lock**, таму калі некалькі шлюзаў запускаюцца адначасова, толькі адзін
прымяняе іх, а астатнія чакаюць — ніколі не бывае падвойнай міграцыі.
> [!NOTE]
> Міграцыі заўсёды выконваюцца на пуле базы даных уладальніка. Абмежаваная роля RLS
> (`AIHUMMER_DB_APP_URL`) прызначана для абслугоўвання трафіку, а не для змены схемы.
## Самаабнаўленне з CDN
Шлюз можа абнаўляць сябе з рэлізнага CDN. Паводзіны кіруюцца трыма зменнымі
асяроддзя:
| Variable | Purpose |
|---|---|
| `AIHUMMER_AUTO_UPDATE` | `off` \| `check` \| `apply` — адключана, толькі апавяшчэнне або аўтаматычнае прымяненне |
| `AIHUMMER_UPDATE_CHANNEL` | Рэлізны канал для адсочвання (напр. stable / alfa / beta / dev) |
| `AIHUMMER_DOWNLOAD_BASE_URL` | Базавы URL, з якога цягнецца абнаўленне |
Абнаўленні выяўляюцца праз `latest.json` канала на CDN. Вы таксама можаце
кіраваць абнаўленнямі ўручную праз 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]
> Пачніце з `AIHUMMER_AUTO_UPDATE=check`, каб атрымліваць апавяшчэнні аб новых
> рэлізах, і перайдзіце на `apply`, калі будзеце давяраць каналу для абнаўленняў
> без нагляду.
## Разгортванне без прастою
AiHummer пабудаваны так, каб абнаўляцца без прастою:
- **Запускайце 2+ шлюзы за проксі.** Абнаўляйце іх па адным; проба гатоўнасці
(`/readyz`) трымае вузел, які перазапускаецца, па-за ратацыяй, пакуль ён не
пачне абслугоўваць.
- **Планавальнік мае адзінага лідара.** Фонавае планаванне выбірае адзінага лідара
праз PostgreSQL advisory lock, таму запуск некалькіх шлюзаў не дублюе
запланаваную працу.
- **Дастаўка ідэмпатэнтная.** Outbox гарантаванай дастаўкі плюс ключы
ідэмпатэнтнасці азначаюць, што адказ ніколі не адпраўляецца двойчы пры
перазапуску, што і робіць бяспечным паступовае абнаўленне флоту.
## Куды далей
- Пробы, што кіруюць паступовым перазапускам:
[systemd і праверкі стану](/en/v1.0/operations/systemd-health).
- Зрабіце рэзервовую копію перад буйным абнаўленнем:
[Рэзервовыя копіі і аднаўленне пасля збояў](/en/v1.0/operations/backups-dr).
- Назірайце за разгортваннем:
[Назіральнасць](/en/v1.0/operations/observability).