Կայունությունը արտադրանքի սկզբունք է, ոչ թե հետին պլանի մտածմունք։ AiHummer-ը հետևում է
SemVer-ին, կիրառում է forward-safe տվյալների բազայի migration-ներ ավտոմատ կերպով, և կարող է
self-update անել CDN-ից — այնպես որ թարմացումները ռուտին են, ոչ թե ռիսկային։
Տարբերակավորում (SemVer)
Թողարկումները հետևում են Semantic Versioning-ին։ Տարբերակը հաղորդվում է /healthz-ով և
aihummer version-ով, այնպես որ միշտ կարող եք հաստատել, թե կոնկրետ ինչ է աշխատում նախքան և
թարմացումից հետո։
Migration-ները forward-safe են և ավտոմատ
Գործարկման ժամանակ gateway-ն ավտոմատ կիրառում է չավարտված տվյալների բազայի migration-ները։ Երկու
հատկություն պահում են սա անվտանգ.
Forward-safe. Migration-ները գրված են այնպես, որ ավելի նոր binary-ն աշխատի այն
schema-ի դեմ, որին այն migrate է անում, ինչն էլ auto-apply-ն ու rolling թարմացումները դարձնում է անվտանգ։
Single-applier՝ advisory lock-ով. Migration-ները աշխատում են PostgreSQL
advisory lock-ի տակ, այնպես որ երբ մի քանի gateway միաժամանակ գործարկվում են, միայն մեկն է կիրառում դրանք,
իսկ մնացածը սպասում են — երբեք կրկնակի migration։
[!NOTE]
Migration-ները միշտ աշխատում են owner database pool-ի վրա։ Սահմանափակ RLS դերը
(AIHUMMER_DB_APP_URL) տրաֆիկ սպասարկելու համար է, ոչ թե schema-ի փոփոխությունների։
Self-update CDN-ից
Gateway-ը կարող է ինքն իրեն թարմացնել release CDN-ից։ Վարքագիծը կառավարվում է
երեք environment փոփոխականով.
Փոփոխական
Նպատակ
AIHUMMER_AUTO_UPDATE
off | check | apply — անջատված, միայն-ծանուցում, կամ auto-apply
Թարմացումները հայտնաբերվում են ալիքի 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-ին, երբ վստահեք ալիքին անհսկելի rollout-ների համար։
Zero-downtime rollout-ներ
AiHummer-ը կառուցված է առանց անջատման թարմանալու համար.
Աշխատեցրեք 2+ gateway proxy-ի հետևում։ Roll արեք դրանք մեկ առ մեկ. readiness probe-ը
(/readyz) պահում է վերագործարկվող node-ը ռոտացիայից դուրս, մինչև այն սպասարկում սկսի։
Scheduler-ը single-leader է։ Ֆոնային scheduling-ը ընտրում է մեկ leader
PostgreSQL advisory lock-ի միջոցով, այնպես որ մի քանի gateway աշխատեցնելը չի կրկնում scheduled աշխատանքը։
Առաքումը idempotent է։ Երաշխավորված առաքման outbox-ը գումարած idempotency բանալիները
նշանակում են, որ պատասխանը երբեք երկու անգամ չի ուղարկվում վերագործարկման ընթացքում, ինչն էլ fleet-ը
roll անելը դարձնում է անվտանգ։
Կայունությունը արտադրանքի սկզբունք է, ոչ թե հետին պլանի մտածմունք։ AiHummer-ը հետևում է
**SemVer**-ին, կիրառում է **forward-safe տվյալների բազայի migration-ներ ավտոմատ կերպով**, և կարող է
**self-update** անել CDN-ից — այնպես որ թարմացումները ռուտին են, ոչ թե ռիսկային։
## Տարբերակավորում (SemVer)
Թողարկումները հետևում են Semantic Versioning-ին։ Տարբերակը հաղորդվում է `/healthz`-ով և
`aihummer version`-ով, այնպես որ միշտ կարող եք հաստատել, թե կոնկրետ ինչ է աշխատում նախքան և
թարմացումից հետո։
## Migration-ները forward-safe են և ավտոմատ
Գործարկման ժամանակ gateway-ն ավտոմատ կիրառում է չավարտված տվյալների բազայի migration-ները։ Երկու
հատկություն պահում են սա անվտանգ.
- **Forward-safe.** Migration-ները գրված են այնպես, որ ավելի նոր binary-ն աշխատի այն
schema-ի դեմ, որին այն migrate է անում, ինչն էլ auto-apply-ն ու rolling թարմացումները դարձնում է անվտանգ։
- **Single-applier՝ advisory lock-ով.** Migration-ները աշխատում են **PostgreSQL
advisory lock**-ի տակ, այնպես որ երբ մի քանի gateway միաժամանակ գործարկվում են, միայն մեկն է կիրառում դրանք,
իսկ մնացածը սպասում են — երբեք կրկնակի migration։
> [!NOTE]
> Migration-ները միշտ աշխատում են owner database pool-ի վրա։ Սահմանափակ RLS դերը
> (`AIHUMMER_DB_APP_URL`) տրաֆիկ սպասարկելու համար է, ոչ թե schema-ի փոփոխությունների։
## Self-update CDN-ից
Gateway-ը կարող է ինքն իրեն թարմացնել release CDN-ից։ Վարքագիծը կառավարվում է
երեք environment փոփոխականով.
| Փոփոխական | Նպատակ |
|---|---|
| `AIHUMMER_AUTO_UPDATE` | `off` \| `check` \| `apply` — անջատված, միայն-ծանուցում, կամ auto-apply |
| `AIHUMMER_UPDATE_CHANNEL` | Հետևելի թողարկման ալիք (օր.՝ stable / alfa / beta / dev) |
| `AIHUMMER_DOWNLOAD_BASE_URL` | Base 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`-ին, երբ վստահեք ալիքին անհսկելի rollout-ների համար։
## Zero-downtime rollout-ներ
AiHummer-ը կառուցված է առանց անջատման թարմանալու համար.
- **Աշխատեցրեք 2+ gateway proxy-ի հետևում։** Roll արեք դրանք մեկ առ մեկ. readiness probe-ը
(`/readyz`) պահում է վերագործարկվող node-ը ռոտացիայից դուրս, մինչև այն սպասարկում սկսի։
- **Scheduler-ը single-leader է։** Ֆոնային scheduling-ը ընտրում է մեկ leader
PostgreSQL advisory lock-ի միջոցով, այնպես որ մի քանի gateway աշխատեցնելը չի կրկնում scheduled աշխատանքը։
- **Առաքումը idempotent է։** Երաշխավորված առաքման outbox-ը գումարած idempotency բանալիները
նշանակում են, որ պատասխանը երբեք երկու անգամ չի ուղարկվում վերագործարկման ընթացքում, ինչն էլ fleet-ը
roll անելը դարձնում է անվտանգ։
## Ո՞ւր հաջորդիվ
- Probe-ները, որ դարպասավորում են rolling restart-ը.
[systemd և առողջության ստուգումներ](/hy/v1.0/operations/systemd-health)։
- Կրկնօրինակեք նախքան մեծ թարմացումը.
[Կրկնօրինակումներ և աղետից վերականգնում](/hy/v1.0/operations/backups-dr)։
- Հետևեք rollout-ին.
[Observability](/hy/v1.0/operations/observability)։