FTP Servisi (Firmware)
FTP Servisi, firmware dosyalarının cihazlar tarafından indirilebilmesi için dağıtım katmanıdır.
Sorumluluk
- Firmware binary dosyalarını servis etmek
- Sürüm bazlı klasörleme ve manifest sunmak
- Checksum/signature dosyaları yayınlamak
- İndirme erişimlerini loglamak
- Eski sürümler için retention politikası uygulamak
Dizin Yapısı (Öneri)
/firmware/<device_family>/<version>/firmware.bin/firmware/<device_family>/<version>/firmware.sha256/firmware/<device_family>/<version>/firmware.sig/firmware/<device_family>/<version>/manifest.json
Manifest Örneği
{
"device_family": "ps-v1",
"version": "1.0.8",
"file": "firmware.bin",
"sha256": "ab12...",
"signature": "sig:9f3f...",
"released_at": "2026-03-12T20:00:00Z",
"min_bootloader": "1.0.2",
"mandatory": false,
"rollout_channel": "stable"
}
Firmware Release Akışı
Topic ve Event Standardı
- Topic:
cinga.firmware.releasedcinga.firmware.downloadedcinga.firmware.failed
- Event:
firmware.released.v1firmware.downloaded.v1firmware.failed.v1
Not: Event payload standardı arşiv referansı: /projects/cinga/backend/architecture/event-envelope.
Event Örnekleri
firmware.released.v1
{
"event": "firmware.released.v1",
"meta": {
"schema_version": 1,
"trace_id": "fw-9f3f...",
"producer_service": "api-service",
"produced_at": "2026-03-12T21:40:00.120Z",
"process_ms": 20
},
"context": {
"device_id": null,
"stream_id": null
},
"data": {
"device_family": "ps-v1",
"version": "1.0.8",
"rollout_channel": "stable",
"mandatory": false
},
"error": null
}
firmware.failed.v1
{
"event": "firmware.failed.v1",
"meta": {
"schema_version": 1,
"trace_id": "fw-9f3f...",
"producer_service": "ftp-service",
"produced_at": "2026-03-12T21:41:00.120Z",
"process_ms": 12
},
"context": {
"device_id": "400000011D081B70",
"stream_id": null
},
"data": {
"device_family": "ps-v1",
"version": "1.0.8"
},
"error": {
"failed_stage": "firmware_download",
"error_code": "FIRMWARE_NOT_FOUND",
"error_message": "artifact missing on ftp",
"retryable": false,
"failed_at": "2026-03-12T21:41:00Z"
}
}
Güvenlik
- Salt read-only erişim
- İndirme token veya IP policy (opsiyonel)
- Firmware release yalnız API/Admin akışıyla yapılır
- Artifact integrity doğrulaması zorunlu (
sha256+signature)
Retention Politikası
- Son
Nstable sürüm saklanır (öneri:N=5) - Eski sürümler
archivekanalına alınır - Aktif rollout sürümleri retention dışında tutulur
Entegrasyon
- API Servisi release metadata’yı yönetir
- Cihaz update akışı Communication/Automation ile tetiklenir
- FTP sadece dağıtım host katmanıdır
SLO (Öneri)
| Metrik | Hedef |
|---|---|
artifact availability | > 99.9% |
download success rate | > 99% |
checksum mismatch rate | < 0.01% |
p95 download init latency | < 300ms |
Çıktı
- Güvenli firmware indirme altyapısı