01Production topologiyasi#
Nginx TLS’ni yakunlaydi va trafikni loopback’da tinglayotgan servisga beradi. API, Admin, public sayt va PostgreSQL Compose orqali boshqariladi. Ushbu docs sayt alohida statik root’dan beriladi; API yoki DB credential talab qilmaydi.
| Qism | Joriy model |
|---|---|
| Compute | Bitta Linux host; multi-zone HA kuzatilmagan. |
| Ma’lumotlar bazasi | PostgreSQL 17, persistent Docker volume, pg_isready healthcheck. |
| Ingress | Nginx, alohida hostname’lar, Let’s Encrypt TLS. |
| Artefakt saqlash | Private R2; production’da lokal storage fallback yo‘q. |
| IaC holati | Compose, Nginx va shell/systemd konfiguratsiyasi repository’da. Terraform/Pulumi resource graph mavjudligi tasdiqlanmagan. |
02Server release va rollback#
- Kod snapshot’i va konfiguratsiya tekshiriladi; unit/integration/build testlari o‘tkaziladi.
- Versiyalangan image yaratiladi. Schema o‘zgarsa, migration faqat backup va moslik tekshiruvidan keyin bajariladi.
- Kerakli servis yangilanadi; API/database/object storage health hamda autentifikatsiya smoke testlari tekshiriladi.
- Oldingi image saqlanadi. Xatoda image qaytariladi; database restore oddiy image rollback’dan alohida, boshqariladigan operatsiya.
Repository’da Tauri desktop bundle’lari uchun GitHub Actions mavjud. Bu native SwiftUI, API va firmware release’larining to‘liq avtomatik production CI/CD orqali tarqatilishini isbotlamaydi. Joriy release yo‘li lokal testlar va operator tomonidan boshqariladigan deploy’ni ham o‘z ichiga oladi.
03Imzolangan release paketi#
Hamroh-X.Y.Z-BNN.hrelease
├── firmware.bin
├── release-metadata.json
├── firmware.sig
├── release-metadata.sig
└── release-notes.txtPaket deterministic ZIP: ruxsat etilgan beshta fayl, qat’iy hajm va yo‘l cheklovlari. Metadata version, build, securityVersion, protocolVersion, hardwareRevision, binarySize, SHA, source commit, build timestamp, provisioning, A/B va rollback bayroqlarini hamda build evidence hash’larini saqlaydi.
- ESP-IDF 5.5.2 bilan isolated clean build; normal customer firmware’da provisioning o‘chiq.
- Firmware va canonical metadata alohida Ed25519 imzoga ega. Private kalit lokal/offline qoladi.
- Server SHA, ikkala imzo, ESP image header, hardware, build/security va konfiguratsiyani qayta tekshiradi.
- Path traversal, ortiqcha fayl, symlink, dublikat entry va mos kelmaydigan immutable obyekt rad etiladi.
04Release lifecycle va tarqatish#
DRAFT tekshirilgach READY bo‘ladi. Faqat ROLLING_OUT holatidagi release qurilma uchun candidate bo‘lishi mumkin. PAUSED yangi takliflarni to‘xtatadi, ammo allaqachon boshlangan transferni masofadan ortga qaytarmaydi.
INTERNAL uchun aniq bitta mos target talab qilinadi. BETA/STABLE foizli cohort siyosatidan foydalanadi. Channel, hardware, version, build/security va target tekshiruvlari release taklifini cheklaydi. Artefaktni boshqa kanalga ko‘chirish uning binary mazmunini o‘zgartirmaydi.
05Normal mijoz OTA oqimi#
Desktop faylni tekshiradi, bitta eksklyuziv USB descriptor’ni ushlab turadi va READY kelmaguncha chunk yubormaydi. Firmware inactive slot’ga yozadi. Muvaffaqiyat reboot’dan keyingi versiya/build va VALID tasdig‘iga bog‘liq.
| Bosqich | Asosiy invariant |
|---|---|
| BEGIN → PREPARING → READY | Metadata qabul qilish va flash tayyorlash alohida timeout bilan. READY oldidan byte 0 yo‘q. |
| Transfer | Chegaralangan chunk/window, cumulative ACK, tekshirilgan offset, TIOCEXCL va same FD. |
| OTA_END | To‘liq hajm, SHA va qurilmadagi imzo tekshiruvi; shundan keyin boot target tanlanadi. |
| PENDING_VERIFY | Grace interval’dan keyin identity va runtime readiness tekshiriladi; mark-valid va security commit tashxislanadi. |
| VALID / rollback | Critical failure sababi saqlanadi; ESP-IDF rollback himoyasi saqlanadi. Optional touch xatosi darhol panic emas. |
06Monitoring, backup va tiklash#
Health endpoint API, PostgreSQL va object storage holatini qaytaradi. Authenticated heartbeat eng so‘nggi firmware/build/slot va last-seen qiymatlarini saqlaydi; default javob keyingi heartbeat’ni 300 soniyaga belgilaydi. Bu kuzatuv signalidir, SLA o‘lchovi emas.
| Nazorat | Dalil holati |
|---|---|
| Health va heartbeat | Kodda mavjud; production health tekshiruvi o‘tkazilgan. |
| Log rotation | Compose: json-file, 10 MB × 3 fayl. |
| DB backup | pg_dump script va restore runbook mavjud. Offsite scheduler, encryption va oxirgi restore drill dalili bu snapshot’da tasdiqlanmagan. |
| RPO / RTO | Tasdiqlangan o‘lchov yo‘q; biznes talabi va restore mashqi bilan belgilanadi. |
| Silicon security | Secure Boot / flash encryption uchun alohida manufacturing tekshiruvi kerak; eFuse yozish oddiy deploy tarkibiga kirmaydi. |
07Test dalillari va keyingi talablar#
1.6.8 Build 53 lokal release tekshiruvida ESP-IDF clean build, mustaqil signature/SHA verifikatsiyasi, 33 ta package testi, 18 ta host regressiya guruhi va 12 ta LVGL render holati PASS bo‘ldi. Exact ELF fixed serial/handler stack budget 288 bayt; bu physical runtime high-water o‘lchovi emas.
Oldingi normal OTA zanjiri test qurilmada ishlaganligi qayd etilgan. Biroq yangi 1.6.8 image uchun ushbu hujjat physical acceptance yoki yangi transfer tezligini tasdiqlamaydi. PTY benchmark natijalarini real USB/flash vaqtiga tenglashtirish mumkin emas.
- Release gate: alohida ruxsatli bir qurilma OTA, power-loss/rollback sinovi va post-boot heartbeat tekshiruvi.
- Operatsion gate: mustaqil security review, dependency patch, backup/restore mashqi va o‘lchanadigan RPO/RTO.
- Scale gate: yuklama sinovi, shared throttling, DB recovery va server fault-domain ajratilishi.