Qapu Servis Audit ve Yapılacaklar
Bu sayfa, Qapu servis dokümantasyonunun mevcut kalite seviyesini ölçmek ve hedef kalite seviyesi olan 9.5+/10 için kalan eksikleri görünür hale getirmek amacıyla hazırlanmıştır.
Değerlendirme Metodu
Her servis aşağıdaki başlıklara göre değerlendirildi:
- Rol netliği: Servis ne yapıyor, ne yapmıyor açık mı?
- Girdi/çıktı sözleşmesi: Event, tablo, state ve çıktı net mi?
- Akış bütünlüğü: İşlem sırası ve hata akışı yeterince belirgin mi?
- Operasyonel olgunluk: Retry, DLQ, idempotency, latency, SLO, ownership gibi konular tanımlı mı?
- Dokümantasyon derinliği: FAQ, alt sayfalar, örnekler, referans bağlantıları ve karar kayıtları yeterli mi?
Puan Skalası
- 9.5 - 10.0: Yayınlanabilir, mimari olarak güçlü, operasyonel olarak güven veren doküman
- 8.5 - 9.4: Güçlü ama birkaç kritik boşluk var
- 7.0 - 8.4: Mimari iyi, operasyonel veya sözleşmesel detaylar eksik
- < 7.0: Şimdilik özet/index seviyesinde, derinleştirme şart
Genel Sonuç
Güçlü taraflar
- Core pipeline servislerinde mimari omurga belirgin.
stream_bufferreferans modeli dokümanlar arası ortak omurga haline gelmiş.- Ingest, Stream, Raw Writer, Synthesis ve Window tarafında event, Redis ve DB ilişkisi büyük ölçüde net.
- Çoğu kritik servis için alt akış sayfalarına referans verilmiş, bu iyi bir bilgi mimarisi işareti.
Ana problemler
- Bazı servisler çok olgun, bazıları ise yalnız index/özet seviyesinde. Doküman kalitesi homojen değil.
- Dil standardı tutarsız. Türkçe, İngilizce, ASCII-only ve farklı isimlendirme stilleri karışıyor.
- Bazı servislerde topic standardı ile diğer sayfalardaki naming aynı çizgide değil.
- Operasyonel sahiplik, failure mode ve replay stratejisi her serviste aynı derinlikte değil.
- Bazı sayfalarda "servis kontratı" ile "teknik not" aynı yerde karışıyor.
Servis Bazlı Puanlama
| Servis | Puan | Kısa yorum |
|---|---|---|
| Ingest | 9.4 | Çok güçlü, neredeyse referans kalite, ama fazla yoğun ve bazı bölümler sadeleştirilmeli |
| Stream | 9.1 | Envanter senkronizasyonu ve akış iyi, birkaç operasyonel netleştirme gerekli |
| Calibration | 8.8 | Temel model net, ancak hata matrisi ve edge-case kapsamı zayıf |
| Raw Writer | 8.9 | Segment yazım modeli güçlü, ama partial failure ve recovery daha net yazılmalı |
| Synthesis | 9.0 | Güçlü teknik içerik var, fakat sayfa biraz dağınık ve bazı bölümler çakışıyor |
| Window | 8.9 | Finalize mantığı iyi, ancak replay/revision politikası daha kesin olmalı |
| Rule | 8.3 | Fikir seviyesi iyi, ama sözleşme ve operasyonel disiplin diğer servislerin gerisinde |
| Observer | 8.7 | Operasyon fikri güçlü, ama veri modeli ve retry ownership daha fazla somutlaştırılmalı |
| Action Executor | 8.0 | İyi yön var, ama hâlâ tasarım notu seviyesi baskın |
| Communication | 8.6 | Komut çözümleme modeli net, ACK timeout ve downlink lifecycle daha da güçlenebilir |
| API | 8.2 | Şık özet var, ama endpoint sınıfları, auth akışı ve domain coverage daha detaylanmalı |
| Automation | 8.4 | Scheduler mantığı net, ama concurrency ve lock stratejisi eksik |
| Egress | 8.5 | Kurumsal entegrasyon yaklaşımı iyi, dönüşüm ve güvenlik policy örnekleri artırılmalı |
| FOTA | 8.3 | Amaç net, ancak FTP lifecycle ve güvenlik kısıtları daha formal olmalı |
| Heartbeat | 8.4 | İşlev net, ama alarm/eskalasyon ve batch davranışı genişletilmeli |
| Ledger | 8.2 | Güzel fikir, fakat zincir doğrulama ve snapshot kapsamı daha formal anlatılmalı |
| Redis | 8.0 | Güzel entry point, ama servis sayfasından çok portal/index gibi duruyor |
| Kafka | 8.8 | Merkezi referans olarak güçlü, fakat bazı event/topic isimleri diğer sayfalarla hizalanmalı |
9.5+ Hedefi İçin Öncelikli Eksik Listesi
P0, doğrudan kalite puanı yükselten işler
1. Doküman standardını tekle
Yapılacaklar:
- Tüm servislerde aynı başlık sırası kullanılmalı:
- Sorumluluk
- Girdiler
- Çıktılar
- İşlem akışı
- Veri kaynakları
- Hata modeli
- Retry/DLQ
- Gözlemlenebilirlik
- Güvenlik
- SSS / alt sayfalar
- Türkçe terim standardı sabitlenmeli.
- İngilizce başlık kalıntıları temizlenmeli (
Rule Servicegibi). - ASCII mecbur değilse Türkçe karakterler normalize edilmeli.
Beklenen etki:
- Doküman algısında ciddi profesyonellik artışı
- Servisler arası kıyas kolaylaşır
2. Topic ve event naming bütünlüğünü kilitle
Gözlenen problem:
- Bazı sayfalarda
qapu.ingest.raw, bazılarındaqapu.ingest - Bazı sayfalarda
qapu.action.requested, bazılarındaqapu.action - Bazı servislerde topic ve event ayrımı iyi, bazılarında karışık
Yapılacaklar:
- Tek bir naming policy sayfası referans alınmalı
- Her servis index sayfası yalnız kendi kullandığı canonical topic isimlerini göstermeli
- Eski veya alternatif adlar varsa “legacy/not preferred” olarak işaretlenmeli
Beklenen etki:
- Mimari güven artar
- Entegrasyon ekiplerinde kafa karışıklığı azalır
3. Her servis için net hata matrisi zorunlu hale getir
Eksik olan servisler:
- Calibration
- API
- Automation
- Egress
- FOTA
- Heartbeat
- Ledger
- Action Executor
Yapılacaklar:
- Her servise şu tablo eklensin:
- hata türü
- retryable mi
- event/log çıktısı
- DLQ davranışı
- operatör müdahalesi gerekiyor mu
Beklenen etki:
- 8.x servisleri rahatlıkla 9+ bandına taşır
4. Replay ve idempotency politikalarını servis bazında kapat
Eksik alanlar:
- Rule
- Observer
- Action Executor
- Communication
- Automation
- Ledger
- Heartbeat
Yapılacaklar:
- Her servis için tekrar işleme anahtarı tanımlanmalı
- Replay geldiğinde ne overwrite edilir, ne append edilir yazılmalı
- Duplicate event durumunda beklenen davranış belirtilmeli
P1, kaliteyi 9.5 üstüne taşıyan derinleştirme işleri
5. Rule Servisi tam profesyonel seviyeye çıkarılmalı
Şu an en kritik eksiklerden biri burada.
Yapılacaklar:
- Rule index sayfası diğer servisler gibi daha formal yeniden yapılandırılmalı
- Input/output contract bölümü açıklaştırılmalı
- Rule state Redis şeması ayrı kontrat sayfasına bağlanmalı
rule.completed.v1,rule.failed.v1,rule.triggered.v1,rule.reset.v1ayrımı kesinleştirilmeli- Duration counter reset, publish gating ve multi-trigger edge-case tabloları eklenmeli
- Latency/SLO ve retry ownership netleşmeli
Hedef puan:
- 8.3 → 9.4+
6. Action Executor servisini tasarım notundan kontrat seviyesine çıkar
Yapılacaklar:
action.execute.requested.v1payload alanları net tablo ile verilmeliaction_plan_stepsçözümleme modeli formalize edilmeli- Her channel type için adapter lifecycle anlatılmalı
- Circuit breaker, provider retry ve idempotency guarantee açık yazılmalı
- Başarı ve kalıcı hata ayrımı tabloya dökülmeli
Hedef puan:
- 8.0 → 9.2+
7. API sayfasını gerçek servis kontratına dönüştür
Yapılacaklar:
- Mobil, admin ve internal domain alanları tablo ile ayrılmalı
- Auth flow, refresh flow, session invalidation ve auth cache daha görünür olmalı
- Temel kaynak grupları listelenmeli: devices, rules, actions, automations, firmware, recipients, telemetry
- API event üretim haritası eklenmeli
- Audit log ownership ve idempotency davranışı yazılmalı
Hedef puan:
- 8.2 → 9.1+
8. Observer için operasyonel ownership çok daha net yazılmalı
Yapılacaklar:
- Retry kararı Observer mı verir, stage servisleri mi verir, sınır netleştirilmeli
observer_pipeline_runsalanları daha somut anlatılmalı- Stale stream replacement politikası örnek senaryo ile gösterilmeli
- Buffer cleanup koşulları tabloya dökülmeli
9. Cross-link temizliği ve referans bütünlüğü
Yapılacaklar:
Cıngakalan yerlerQapuile hizalanmalıysa temizlenmeli/projects/cinga/...kalan referanslar gözden geçirilmeli- FOTA sayfa/dizin adı
ftpvefotaarasında tekleştirilmeli - Backend index notlarındaki eski path'ler doğrulanmalı
P2, polish ve yayın kalitesi işleri
10. Dil ve anlatım sıkılaştırması
Yapılacaklar:
- Aynı sayfada hem çok kısa hem aşırı uzun bloklar dengelenmeli
- Gereksiz tekrarlar azaltılmalı
- Aşırı uzun pseudo-config blokları gerekiyorsa alt sayfaya taşınmalı
- “bu sayfada tekrar edilmez” denilen yerlerde gerçekten tekrar edilmemeli
11. Her servise kısa “neden var” paragrafı eklenmeli
Bazı servislerde çok iyi, bazılarında eksik. Özellikle API, Automation, Ledger, Redis, Heartbeat için güçlendirir.
12. Her servise gözlemlenebilirlik minimum paketi eklenmeli
Zorunlu alanlar:
- temel metrikler
- error code family
- trace bağlamı
- alarm üretim sınırı
Servis Bazlı Net Yapılacaklar
Ingest
- Çok uzun bölümler sadeleştirilmeli, özellikle rate limiting ve config kısmı ikiye bölünebilir
- Topic adı merkezi Kafka standardı ile birebir hizalanmalı
- Warning event isimleri Kafka sayfasıyla birebir kontrol edilmeli
Stream
- Envanter eventlerinin retry/idempotency davranışı daha formal yazılmalı
-
message_typesözlük çözümlemesinde observability alanları genişletilmeli - Başarı kriteri ve terminal state tek paragrafta özetlenmeli
Calibration
- Tam hata matrisi eklenmeli
- Kural bulunamadı, CT miss, stale cache, invalid range gibi edge-case tablosu eklenmeli
- Idempotency / replay açıklaması eklenmeli
Raw Writer
- Partial segment failure örnekleri eklenmeli
- Catch-all
measurementstablosu için conflict davranışı netleştirilmeli - Replay sonrası aynı stream için tablo tutarlılığı anlatılmalı
Synthesis
- Aynı sayfadaki bazı tekrarlar sadeleştirilmeli
- Observer ile SLO ownership bölümü daha temiz ayrılmalı
- Retry/DLQ bölümü daha kısa ve kontrat odaklı hale getirilmeli
Window
- Finalized pencere replay kuralı örneklenmeli
-
window.state.patch.v1canonical mi taslak mı netleştirilmeli - Rollup anında partial failure davranışı yazılmalı
Rule
- Sayfa tamamen yeniden düzenlenmeli, diğer servis formatına çekilmeli
- Event contract bölümü açıklaştırılmalı
- Redis runtime schema ayrı kontrata bağlanmalı
- Hata matrisi, retry ve idempotency açık yazılmalı
- SLO/metrik bölümü eklenmeli
Observer
- Replay ownership netleştirilmeli
- Terminal state tablosu eklenmeli
- Buffer cleanup kararı örnek akışlarla gösterilmeli
Action Executor
- Input event contract tablo halinde verilmeli
- Channel adapter yaşam döngüsü açıklanmalı
- Retryable/non-retryable hata matrisi eklenmeli
- Provider idempotency modeli yazılmalı
Communication
- ACK timeout, late ACK ve duplicate ACK davranışları eklenmeli
- Downlink command lock yaşam döngüsü yazılmalı
- Source bazlı yetki matrisi tabloya dökülmeli
API
- Domain bazlı endpoint haritası eklenmeli
- Auth/session invalidation akışı özet tablo ile güçlendirilmeli
- Event üretim matrisi eklenmeli
- Error contract ve audit trail detaylandırılmalı
Automation
- Scheduler concurrency ve distributed lock stratejisi eklenmeli
- Missed run / drift / node restart davranışı yazılmalı
- Replay / rerun farkı netleştirilmeli
Egress
- Policy dönüşüm pipeline örneği eklenmeli
- Security profile örnekleri artırılmalı
- Outbound signing ve replay protection kontratı eklenmeli
FOTA
-
ftpklasörü ilefotaslug/name standardı tekleştirilmeli - Transfer yaşam döngüsü ve durum geçiş tablosu eklenmeli
- Yetki modeli ve checksum doğrulama netleştirilmeli
Heartbeat
- Batch ping concurrency limiti yazılmalı
- Alarm/eskalasyon eşikleri tabloya dökülmeli
- ICMP yerine alternatif health yöntemleri notu eklenmeli
Ledger
- Hash üretim sözleşmesi formalize edilmeli
- Canonical snapshot kapsamı tablo ile tanımlanmalı
- Chain verification örneği eklenmeli
- Replay durumunda yeni halka mı, yeniden yazım mı olacağı netleştirilmeli
Redis
- Index/portal rolü korunup minimum operasyonel kontrat bölümü eklenmeli
- Key family ownership özeti tablo olarak üst seviyeye eklenmeli
- TTL/invalidation summary box eklenmeli
Kafka
- Tüm topic/event adları servis sayfalarıyla tek tek hizalanmalı
- DLQ standardı her servis için birebir örneklenmeli
- “Qapu” ve eski mimari isimleri tam normalize edilmeli
Hedef Durum Özeti
9.5+ kalite seviyesi için minimum başarı koşulları:
- Her servis aynı doküman iskeletine sahip olmalı
- Her servis için canonical input/output contract net olmalı
- Retry, DLQ, replay, idempotency net olmalı
- Topic/event naming tek standarda bağlanmalı
- Cross-link ve terminoloji temiz olmalı
- Rule, Action Executor ve API özellikle bir üst seviyeye çıkarılmalı
Kısa Yönetici Özeti
Bugünkü durumda Qapu servis dokümantasyonu genel olarak 8.7/10 civarında güçlü bir mimari tabana sahip.
9.5+/10'a çıkmak için en kritik sıralama:
- Rule Servisi yeniden düzenleme
- Action Executor kontrat derinleştirme
- API kontratını genişletme
- Topic/event naming standardını kilitleme
- Tüm servislerde hata matrisi + replay/idempotency bölümünü tamamlama
Bu 5 başlık kapatılırsa doküman seti ciddi biçimde yayınlanabilir, yatırımcıya/mühendise/ekibe güven veren bir seviyeye çıkar.