Ana içeriğe geç

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.released
    • cinga.firmware.downloaded
    • cinga.firmware.failed
  • Event:
    • firmware.released.v1
    • firmware.downloaded.v1
    • firmware.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 N stable sürüm saklanır (öneri: N=5)
  • Eski sürümler archive kanalı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)

MetrikHedef
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ı