Barqarorlik — mahsulot tamoyili, keyingi oʻylash emas. AiHummer SemVer ga amal
qiladi, oldinga xavfsiz maʼlumotlar bazasi migratsiyalarini avtomatik qoʻllaydi
va CDN’dan oʻzini-yangilay oladi — shu sababli yangilanishlar xavfli emas, balki
odatiy ishdir.
Versiyalash (SemVer)
Relizlar Semantik Versiyalashga amal qiladi. Versiya /healthz va aihummer version
tomonidan xabar qilinadi, shu sababli yangilanishdan oldin va keyin nima ishlayotganini
har doim aniq tasdiqlay olasiz.
Migratsiyalar oldinga xavfsiz va avtomatik
Ishga tushishda gateway kutilayotgan maʼlumotlar bazasi migratsiyalarini avtomatik
qoʻllaydi. Ikkita xususiyat buni xavfsiz saqlaydi:
Oldinga xavfsiz. Migratsiyalar shunday yoziladiki, yangiroq binary u migratsiya
qiladigan sxema bilan ishlaydi, va aynan shu narsa avtomatik qoʻllash va bosqichma-bosqich
yangilanishlarni xavfsiz qiladi.
Advisory lock orqali yagona qoʻllovchi. Migratsiyalar PostgreSQL advisory
lock ostida bajariladi, shu sababli bir nechta gateway bir vaqtda ishga tushganda
faqat bittasi ularni qoʻllaydi va qolganlari kutadi — hech qachon ikki marta
migratsiya boʻlmaydi.
[!NOTE]
Migratsiyalar har doim owner maʼlumotlar bazasi pooli ustida bajariladi.
Cheklangan RLS roli (AIHUMMER_DB_APP_URL) trafikka xizmat qilish uchun, sxema
oʻzgarishlari uchun emas.
CDN’dan oʻzini-yangilash
Gateway oʻzini reliz CDN’dan yangilay oladi. Xatti-harakat uchta muhit oʻzgaruvchisi
bilan boshqariladi:
Oʻzgaruvchi
Maqsad
AIHUMMER_AUTO_UPDATE
off | check | apply — oʻchirilgan, faqat-xabar yoki avtomatik qoʻllash
AIHUMMER_UPDATE_CHANNEL
Kuzatiladigan reliz kanali (masalan, stable / alfa / beta / dev)
AIHUMMER_DOWNLOAD_BASE_URL
Yangilanish tortib olinadigan asosiy URL
Yangilanishlar kanalning CDN’dagi latest.json orqali aniqlanadi. Yangilanishlarni
CLI bilan qoʻlda ham boshqarishingiz mumkin:
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]
Yangi relizlardan xabardor boʻlish uchun AIHUMMER_AUTO_UPDATE=check bilan
boshlang va kanalga nazoratsiz rolloutlar uchun ishonganingizda apply ga oʻting.
Toʻxtatishsiz rolloutlar
AiHummer uzilishsiz yangilanish uchun qurilgan:
Proxy ortida 2+ gateway ishga tushiring. Ularni birma-bir aylantiring;
tayyorlik probasi (/readyz) qayta ishga tushayotgan tugunni xizmat qilmaguncha
aylanmadan tashqarida tutadi.
Rejalashtiruvchi yagona-yetakchi. Fondagi rejalashtirish PostgreSQL advisory
lock orqali yagona yetakchini saylaydi, shu sababli bir nechta gateway ishlatish
rejalashtirilgan ishni takrorlamaydi.
Yetkazib berish idempotent. Kafolatlangan yetkazib beruvchi outbox va
idempotentlik kalitlari javob qayta ishga tushish boʻylab hech qachon ikki marta
yuborilmasligini bildiradi, va aynan shu narsa flotni aylantirishni xavfsiz qiladi.
Barqarorlik — mahsulot tamoyili, keyingi oʻylash emas. AiHummer **SemVer** ga amal
qiladi, **oldinga xavfsiz maʼlumotlar bazasi migratsiyalarini avtomatik qoʻllaydi**
va CDN'dan **oʻzini-yangilay oladi** — shu sababli yangilanishlar xavfli emas, balki
odatiy ishdir.
## Versiyalash (SemVer)
Relizlar Semantik Versiyalashga amal qiladi. Versiya `/healthz` va `aihummer version`
tomonidan xabar qilinadi, shu sababli yangilanishdan oldin va keyin nima ishlayotganini
har doim aniq tasdiqlay olasiz.
## Migratsiyalar oldinga xavfsiz va avtomatik
Ishga tushishda gateway kutilayotgan maʼlumotlar bazasi migratsiyalarini avtomatik
qoʻllaydi. Ikkita xususiyat buni xavfsiz saqlaydi:
- **Oldinga xavfsiz.** Migratsiyalar shunday yoziladiki, yangiroq binary u migratsiya
qiladigan sxema bilan ishlaydi, va aynan shu narsa avtomatik qoʻllash va bosqichma-bosqich
yangilanishlarni xavfsiz qiladi.
- **Advisory lock orqali yagona qoʻllovchi.** Migratsiyalar **PostgreSQL advisory
lock** ostida bajariladi, shu sababli bir nechta gateway bir vaqtda ishga tushganda
faqat bittasi ularni qoʻllaydi va qolganlari kutadi — hech qachon ikki marta
migratsiya boʻlmaydi.
> [!NOTE]
> Migratsiyalar har doim owner maʼlumotlar bazasi pooli ustida bajariladi.
> Cheklangan RLS roli (`AIHUMMER_DB_APP_URL`) trafikka xizmat qilish uchun, sxema
> oʻzgarishlari uchun emas.
## CDN'dan oʻzini-yangilash
Gateway oʻzini reliz CDN'dan yangilay oladi. Xatti-harakat uchta muhit oʻzgaruvchisi
bilan boshqariladi:
| Oʻzgaruvchi | Maqsad |
|---|---|
| `AIHUMMER_AUTO_UPDATE` | `off` \| `check` \| `apply` — oʻchirilgan, faqat-xabar yoki avtomatik qoʻllash |
| `AIHUMMER_UPDATE_CHANNEL` | Kuzatiladigan reliz kanali (masalan, stable / alfa / beta / dev) |
| `AIHUMMER_DOWNLOAD_BASE_URL` | Yangilanish tortib olinadigan asosiy URL |
Yangilanishlar kanalning CDN'dagi `latest.json` orqali aniqlanadi. Yangilanishlarni
CLI bilan qoʻlda ham boshqarishingiz mumkin:
```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]
> Yangi relizlardan xabardor boʻlish uchun `AIHUMMER_AUTO_UPDATE=check` bilan
> boshlang va kanalga nazoratsiz rolloutlar uchun ishonganingizda `apply` ga oʻting.
## Toʻxtatishsiz rolloutlar
AiHummer uzilishsiz yangilanish uchun qurilgan:
- **Proxy ortida 2+ gateway ishga tushiring.** Ularni birma-bir aylantiring;
tayyorlik probasi (`/readyz`) qayta ishga tushayotgan tugunni xizmat qilmaguncha
aylanmadan tashqarida tutadi.
- **Rejalashtiruvchi yagona-yetakchi.** Fondagi rejalashtirish PostgreSQL advisory
lock orqali yagona yetakchini saylaydi, shu sababli bir nechta gateway ishlatish
rejalashtirilgan ishni takrorlamaydi.
- **Yetkazib berish idempotent.** Kafolatlangan yetkazib beruvchi outbox va
idempotentlik kalitlari javob qayta ishga tushish boʻylab hech qachon ikki marta
yuborilmasligini bildiradi, va aynan shu narsa flotni aylantirishni xavfsiz qiladi.
## Keyingi qadam qayerda
- Bosqichma-bosqich qayta ishga tushirishni boshqaradigan probalar:
[systemd va salomatlik tekshiruvlari](/uz/v1.0/operations/systemd-health).
- Yirik yangilanishdan oldin zaxiralash:
[Zaxiralar va falokatdan tiklash](/uz/v1.0/operations/backups-dr).
- Rolloutni kuzating:
[Kuzatuvchanlik](/uz/v1.0/operations/observability).