Demo ile deploy arasındaki boşluk
Devraldığımız her edge AI projesi aynı soruna sahipti: mühendisin tezgâhındaki demo güzelce çalıştı. Fabrika zemininde deploy ilginç ve pahalı şekillerde başarısız oldu. Aşağıdaki desenler bu boşluğu tutarlı şekilde kapatmak için uyguladıklarımız.Provisioning: 12 cihazı elle inşa etmeyin
Bir veya iki birimde manuel provisioning iyi. Onda problem. Otuzda kendi başına bir proje.İşe yarayan:
- Bir altın görüntü — CI'da inşa edilmiş, imzalanmış, tamamen yapılandırılmış OS + binary'ler + bağımlılıklar.
- Cihaz başına bootstrap config — cihaz ID'si, ağ config, sertifika, şifreleme anahtarları — küçük cihaz başına partition'a yazılır veya ilk boot'ta provisioning servisinden çekilir.
- Manuel SSH yok — deploy sonrası cihaza SSH yapıyorsanız provisioning'iniz eksik.
Güncellemeler: OTA veya kontrolde değilsiniz
Modeller drift eder, kod buglıdır, bağımlılıkların CVE'si vardır. Sahadaki bir cihaza fabrikaya gitmeden merkezî bir yerden güncelleme push edemiyorsanız, sistemi çalıştırmıyorsunuz — her bireysel cihazı çalıştırıyorsunuz.Minimum uygulanabilir güncelleme hikâyesi:
- Versiyonlu sürümler (model + kod + config birlikte paketlenmiş).
- Merkezî repo'dan çeken, imza doğrulayan, atomik takas eden cihaz tarafı updater.
- Başarısızlıkta rollback yolu.
- Aşamalı rollout — bir cihaza push, sonra %10, sonra herkes — hepsi-bir-kerede değil.
Bunu her cihazda küçük bir Go binary olarak gönderiyoruz. 800 satır kod ve sahip olduğumuz en yüksek kaldıraçlı altyapı parçası.
Telemetry: gerçekten ne loglanmalı
Cihaz başına:- Inference gecikmesi (frame başına, kayan 5 dakikalık pencerede p50/p95/p99).
- Inference throughput (saniyede gerçekten işlenen frame).
- Kamera sağlığı (düşürülen frame'ler, reconnect'ler, pozlama stabilitesi).
- Anomali skor dağılımı (ortalama, p95).
- CPU / GPU / accelerator kullanımı.
- Disk kullanımı, bellek kullanımı, termal durum.
- Uygulama uptime, son başarılı inference timestamp'i.
Hücre başına:
- Reject oranı, override oranı, throughput.
- Vardiya başına operatör etkileşimi.
Merkezî Prometheus + Grafana'ya push ediyoruz.
A/B model deployment
Her model değişikliği önce bir cihaza, sonra filonun bir kesrine, sonra geri kalana gönderilmeli. Altyapı:- Deploy manifesti cihaz başına model sürümünü belirler.
- Runtime modelleri hot-swap edebilir.
- Telemetry model sürümünü içerir, böylece dashboard'lar sürüme göre metrikleri böler.
Güvenlik minimumları
- Hiçbir cihazda varsayılan parola yok. Cihaz başına üretilen kimlik bilgileri.
- Herhangi bir control-plane trafiği için TLS.
- İmzalanmış binary'ler ve model artifact'leri.
- Firewall: bilinen endpoint'lere yalnızca outbound. Fabrika ağından inbound yok.
- Cihaz çekip gidebilirse disk şifreleme. (Gider.)
Herkesin unuttuğu devir
Altı ay sonra müşterinin IT ekibi operasyonel sorumluluğu devralır. Devralacakları:- Cihaz envanteri — make/model/serial/konum/sürüm.
- Güncelleme iş akışı — nasıl yeni sürüm push edilir, nasıl rollback edilir.
- Telemetry dashboard'u — neyin normal, neyin alarm olduğu.
- Gerçekten gördüğünüz en üst 5 başarısızlık modu için runbook.
- Model düzeyi değişiklikler için escalation yolu (retrain, eşik değişikliği).
Asla tekrarlamayacağımız bir desen
Mühendisin laptop'undan deploy çalıştırmak. Mühendis şirketten ilk ayrıldığında müşteri arar. Uzun yeniden platforma geçiş içermeyen ileri yol yok. Müşterinin birinci günden sahip olabileceği altyapı üzerine inşa edin.Deploy hikâyeniz neye benziyor? Tek repo'dan 50+ edge node çalıştıran var mı?
The gap between a demo and a deployment
Every edge AI project we've inherited had the same problem: the demo on the engineer's bench worked beautifully. The deployment on the factory floor failed in interesting and expensive ways. The patterns below are what we apply to close that gap consistently.Provisioning: don't build twelve devices by hand
At one or two units, manual provisioning is fine. At ten, it's a problem. At thirty, it's a project on its own.What works:
- A golden image — fully configured OS + binaries + dependencies, built in CI, signed.
- Per-device bootstrap config — device ID, network config, certificate, encryption keys.
- No manual SSH — if you're SSHing into the device after deployment, your provisioning is incomplete.
Updates: OTA or you are not in control
Models drift, code has bugs, dependencies have CVEs. If you can't push an update from a central place to a device in the field without driving to the factory, you're not running the system.The minimum viable update story:
- Versioned releases (model + code + config bundled).
- A device-side updater that pulls from a central repo, validates a signature, swaps atomically.
- Rollback path on failure.
- Staged rollout — push to one device, then 10 %, then everyone.
Telemetry: what to actually log
Per-device:- Inference latency (per-frame, p50 / p95 / p99 over rolling 5-min window).
- Inference throughput.
- Camera health (frames dropped, reconnects, exposure stability).
- Anomaly score distribution.
- CPU / GPU / accelerator utilization.
- Disk usage, memory usage, thermal state.
- Application uptime, last successful inference timestamp.
Per-cell:
- Reject rate, override rate, throughput.
- Operator interactions per shift.
We push to a central Prometheus + Grafana.
A/B model deployment
Every model change should ship to one device first, then a fraction of the fleet, then the rest.- The deployment manifest specifies model version per device.
- The runtime can hot-swap models.
- Telemetry includes the model version.
Security minimums
- No default passwords on any device.
- TLS for any control-plane traffic.
- Signed binaries and signed model artifacts.
- Firewall: outbound-only to known endpoints.
- Disk encryption if the device might walk away.
The handover everyone forgets
- Device inventory — make/model/serial/location/version.
- Update workflow.
- Telemetry dashboard.
- Runbook for the top 5 failure modes.
- Escalation path for the model-level changes.
One pattern we'd never repeat
Running the deployment from the engineer's laptop. The first time the engineer leaves the company, the customer calls.What does your deployment story look like?