Ahmet İhtiyar
Veri Hattı Vakalar Sistemler İlkeler İletişim
Üretimde Aktif · Diverjans IT · Telemetri ve Veri Altyapısı

Gömülü uç sistemlerden dağıtık mimarilere telemetri ve veri altyapıları geliştiriyorum.

Diverjans IT bünyesinde telemetri, dağıtık arka uç servisleri ve veri altyapıları üzerine çalışıyorum. Endüstriyel saha cihazlarının haberleşmesi, zaman serisi verilerinin güvenilir aktarımı ve sistem kararlılığı odaklandığım temel alanlar.

100K+
Hedef Cihaz Kapasitesi
<15ms
Arrow İkili Akış Gecikmesi
<1ms
O(1) Yetki İptal Süresi
0
Kesintide Veri Kaybı
Ahmet İhtiyar
İstanbul · Diverjans IT ● Aktif

Veri Akış Hattı

Uç donanımlardan kalıcı depolamaya ve raporlama servislerine uzanan telemetri mimarisi. Saha kısıtları, hücresel kesintiler ve yüksek veri hacmine karşı uygulanan savunma katmanları.

İstasyon 01 · Donanım Seviyesi

Cihaz & Saha Sensörü

ESP32 Modbus RTU (RS-485) Modbus TCP FreeRTOS GPIO / UART

Çekirdek İşlev

Endüstriyel soğutma santralleri, chiller panoları ve hassas sensörlerden Modbus holding register okumalarını yöneten FreeRTOS firmware geliştirdim. Ağ kesintilerinde veriyi dahili flaş ring-buffer'da saklayacak şekilde yapılandırdım.

Mimari Karar Gerekçesi

Dinamik bellek tahsisi (malloc) yerine statik bellek yapıları tercih ettim; bellek parçalanmasını önleyerek cihazların uzun süre yeniden başlamadan kararlı çalışmasını sağladım.

Elenen Alternatif Yöntem

Raspberry Pi ve gömülü Linux elendi; yüksek sıcaklıkta donma, anlık elektrik kesilmelerinde SD kart bozulması ve 3W+ enerji tüketimi sahada kabul edilemezdi.

Saha Riski ve Savunma Mekanizması

Endüstriyel kompresörlerin devreye girmesi sırasında RS-485 hattında oluşan elektriksel gürültü ve CRC bozulmaları; donanımsal optik izolasyon ve sliding-window hata düzeltme ile aşıldı.

Altyapı Temeli
Proxmox VE 8 ZFS RAID-Z PBS Docker Nginx / Caddy Prometheus / Grafana Oracle Database

Seçilmiş Vaka Çalışmaları

Saha kısıtları, ağ kopmaları ve veri hacmi altında çalışan üç kritik sistemin mimari analizi. Çözülen problemler, teknik tercihler, ölçülen metrikler ve sinyal akış topolojisi.

Dosya 01 · 100K+ Cihaz Ölçeği · Saha Hücresel Failover Doğrulaması

Plasmon: 100K+ Edge Cihaz İçin Telemetri Mimarisi

ESP32 firmware, MQTT/TLS RPC, yerel ring-buffer ve RabbitMQ ingest hattı

ESP32 (C/FreeRTOS) Modbus RTU/TCP MQTT/TLS RabbitMQ TimescaleDB
100K+ Edge Cihaz %85 Hücresel Kota Tasarrufu · 0 Paket Kaybı

Problem

Fabrikalarda GSM/4G bağlantısı sık sık dalgalanıyor, saatlik baz istasyonu kesintileri yaşanıyordu. Geleneksel HTTP yoklamaları bellek taşmalarına ve veri boşluklarına yol açıyordu. Cihazların hem telemetri akıtması hem de güvenli uzaktan setpoint ve OTA alması gerekiyordu.

Mimari Karar ve Savunma

ESP32 üzerinde C ve statik bellek tahsisi kullanılarak dinamik malloc fragmentasyonu önlendi. REST yerine kalıcı MQTT/TLS (QoS 1) soketi kurularak hücresel veri tüketimi %85 azaltıldı. Hücresel modemin kilitlenmesine karşı bağımsız transistör güç kesme anahtarlaması eklendi.

Üretim Sonucu

100K+ cihaz ölçeğine göre modellendi. 4G hücresel hat kopsa bile 320KB dahili flaş ring-buffer telemetri kaydını RAM taşması yaşamadan sakladı; hat geldiğinde 0 paket kaybıyla kuyruğa boşaltıldı.

Geriye Bakış (Neyi Farklı Yapardım?):

Başlangıçta telemetri paketleri için JSON formatı kullanılmıştı. Baştan Protobuf veya saf ikili (packed struct) mimarisine geçseydim hücresel tüketimi ilk günden %65 daha aşağı çekebilirdim.

Telemetri Deltası & Mühendislik Kazancı ✓ Ölçüldü
Ağ Protokolü
HTTP Polling → MQTT/TLS QoS 1
Bellek Tahsisi
Dinamik malloc → Statik Ring-Buffer
Hat Kesintisi
RAM taşması & veri kaybı → 320KB Flaş Dairesel Tampon
Veri Akış Topolojisi Failover Bus
01 · Saha Donanımı & Sensörler
Endüstriyel Chiller & İklimlendirme Panoları
RS-485 Modbus RTU · Optik İzolasyon · CRC Doğrulama
Seri Veri Yolu (FreeRTOS Statik Bellek)
02 · Uç Geçit Donanımı (ESP32)
İkili Ağ Denetimi & Donanımsal Watchdog
Donanımsal modem güç anahtarlama · Statik bellek tahsisi
Hücresel Hat Durumuna Göre Yönlendirme
Çevrimiçi Hat (4G Aktif)
MQTT / TLS (QoS 1)
%85 kota tasarrufu · Anında RabbitMQ kuyruğu
Çevrimdışı (Hat Kesintisi)
Dairesel Flaş Bellek
320KB tampon · Yeniden bağlanınca kayıpsız aktarım
Dosya 02 · 250K+ Sıcaklık Kaydında Sıfır Kopyalama · 5070 Sayılı Kanun Uyumlu

Sapmapayı: Soğuk Zincir Uyum Takibi ve Sıfır Kopyalama Raporlama

TimescaleDB, Apache Arrow Zero-Copy IPC akışı, X.509 e-İmza ve RFC 3161 Zaman Damgası

TimescaleDB Apache Arrow (IPC) C# .NET 10 X.509 / PKCS#11 RFC 3161 QuestPDF
Sıfır Kopyalama IPC <15ms Tarayıcı Gecikmesi · %87 Ağ Tasarrufu

Problem

Bir deponun 30 günlük sıcaklık geçmişi sorgulandığında ~250.000 veri noktası dönüyordu. Bunu JSON formatında tarayıcıya yollamak ~25MB payload yaratıyor ve JavaScript JSON.parse ana iş parçacığını 800ms'den fazla kilitliyordu. Ayrıca üretilen raporların yasal delil niteliği taşıması için resmi e-imza ve zaman damgası zorunluydu.

Mimari Karar ve Savunma

JSON REST yerine Apache Arrow IPC streaming seçildi; ikili sütunsal tampon doğrudan Float64Array belleğine kopyalamasız eşlendi. Raporlama katmanında yüksek bellek harcayan headless Chromium terk edilerek doğrudan C# QuestPDF motoruna geçildi. Donanımsal HSM imzalama kuyrukları web thread'lerinden izole edildi.

Üretim Sonucu

250.000 satırlık veri JSON ile ~24.8MB iken Arrow IPC ile ~3.1MB seviyesine indi (~%87 ağ tasarrufu). Tarayıcıdaki 850ms'lik donma <15ms'ye geriledi. Tüm raporlar 5070 sayılı kanuna uyumlu X.509 e-imza ve TÜBİTAK Kamu SM zaman damgasıyla mühürlendi.

Geriye Bakış (Neyi Farklı Yapardım?):

İlk sürümde HTML-to-PDF kütüphanesi olarak Puppeteer kullanılmıştı. Headless Chrome sunucuda konteyner başına 400MB+ RAM tüketip kilitlenmelere yol açtı. C# yerel çizim motoruna baştan geçilmeliydi.

Telemetri Deltası & Mühendislik Kazancı ✓ Ölçüldü
Veri Yükü (250K Satır)
24.8 MB JSON → 3.1 MB Arrow IPC
Tarayıcı UI Donması
850 ms (JSON.parse) → <15 ms (Float64Array)
Rapor Oluşturma RAM
400 MB+ (Headless Chrome) → 15 MB (QuestPDF)
Veri Akış Topolojisi Zero-Copy Pipeline
01 · Zaman Serisi Katmanı
TimescaleDB Hypertables
250.000+ periyodik sıcaklık ve nem kaydı
Sütunsal Veri Akışı
02 · İkili Akış Motoru (.NET 10)
Apache Arrow IPC Aktarımı
24.8MB JSON yerine 3.1MB ikili paket · Sıfır ayrıştırma gecikmesi
Doğrudan Bellek Eşleme
Ön Yüz İkili Çizim
Canvas & WebGL
<15ms gecikme · Kilitsiz akıcı grafik
Resmi Yasal Rapor
PKCS#11 HSM & QuestPDF
X.509 e-imza · Kamu SM RFC 3161 Zaman Damgası
Dosya 03 · <1ms Yetki Doğrulama Gecikmesi · Anında Oturum Feshi

Ortak Auth Servisi: Dağıtık Sistemlerde Anında Yetki İptali

Yetkileri JWT payload'undan çıkarıp Redis'te versiyonlama; Plasmon, Sapmapayı ve Diventra WMS ortak omurgası

Spring Boot 3 C# .NET 10 Redis (Redlock) Keycloak SSO OAuth2 / OIDC
<1ms İptal Gecikmesi O(1) Redis Karmaşıklığı · <400B Token Boyutu

Problem

Tamamen durumsuz (stateless) JWT yaklaşımı kurumsal sahada kritik bir açık oluşturdu: Bir operatör işten çıkarıldığında veya yetkisi alındığında, elindeki token süresi (örn. 60 dk) bitene kadar sisteme erişebiliyordu. Rollerin token içine gömülmesi HTTP başlıklarını 6KB'a kadar şişiriyordu.

Mimari Karar ve Savunma

Hibrit model uygulandı: JWT yalnızca sabit kimliği ve bir sürüm tamsayısını (ver) taşır. Değişken izinler Redis'te saklanır. İptal durumunda sürüm numarası artırılarak eski token'lar anında (<1ms) geçersiz kılındı. Token blacklist tutulmadı; böylece bellek ve arama karmaşıklığı O(1) seviyesinde sabitlendi.

Üretim Sonucu

Yetki iptal gecikmesi 60 dakikadan <1 milisaniyeye indi. JWT boyutu 5.2KB'tan <400 bayta düşürüldü. Downstream servislerdeki Redis pipeline sorgusu ortalama 0.3ms ek gecikmeyle çalıştı. Plasmon, Sapmapayı ve Diventra WMS ortak omurgasında çalıştırıldı.

Geriye Bakış (Neyi Farklı Yapardım?):

Redis kümesindeki geçici ağ bölünmelerinde (network partition) meşru isteklerin fail-closed reddedilmesini önlemek için kısa süreli (5 saniye) yerel RAM önbellek (fallback cache) mekanizmasını en baştan kurmalıydım.

Telemetri Deltası & Mühendislik Kazancı ✓ Ölçüldü
Yetki İptal Gecikmesi
60 Dakika (Token TTL) → <1 Milisaniye (Redis Bump)
HTTP Başlık Boyutu
5.2 KB (Şişkin Rol JWT) → <400 Bayt (Kompakt ID)
Arama Karmaşıklığı
O(N) Büyüyen Kara Liste → O(1) Redis Sürüm Kontrolü
Veri Akış Topolojisi O(1) Verification
01 · Gelen İstemci İsteği
Kompakt Yetki Başlığı
Kompakt token (<400B): Sabit kimlik ve oturum sürüm damgası
İki Aşamalı Doğrulama Hattı
02 · Doğrulama Katmanı
İmza Denetimi & Redis Bellek İçi Sürüm Kontrolü
<0.3ms yanıt süresi · O(1) sabit zamanlı arama
Sürüm Karşılaştırma Sonucu
Sürüm Geçerli
İstek Onaylandı (200 OK)
Hedef mikroservise iletildi
Yetki İptal / Değişmiş
Erişim Engellendi (401)
<1ms anında oturum sonlandırma

Sistem Kayıt Defteri

Üretim ortamlarında tasarlanan, kurulan ve yönetilen operasyonel sistemler, hipervizör kümeleri ve kurumsal altyapılar.

SYS-01

MetaDB

Çok kiracılı veri kataloğu ve soykütüğü (lineage) platformu; multi-terabayt üretim veritabanlarında sıfır kilit (Zero-Lock) ile metadata çıkarma

Stack: Spring Boot 3 · Memgraph (Bolt/Cypher) · FastAPI · PostgreSQL · TimescaleDB
2024–2025
SYS-02

Diventra WMS

Depo yönetim sistemi ve kurumsal ERP entegrasyonu; paletleme, seri/lot takibi, el terminali iş akışları ve ortak auth entegrasyonu

Stack: C# .NET · SAP/Logo Entegrasyonu · PostgreSQL · Redis
2024–2025
SYS-03

Ulusal Medya Kuruluşu Ödeme Motoru (Anonim)

Çoklu istemci sanal POS ve merkezi işlem motoru; idempotent istek yürütme, Redis dağıtık kilitleri ve Keycloak SSO federasyonu

Stack: .NET 10 · Keycloak · Redis Distributed Lock · RabbitMQ · SQL Server
2025
SYS-04

Saha Servis PWA

Saha teknisyenleri için çevrimdışı öncelikli rota optimizasyonu, iş emri takibi ve cihaz arıza bildirim sistemi

Stack: .NET 10 · PostGIS · SignalR · Workbox PWA · PostgreSQL
2024
SYS-05

Proxmox & Linux Hipervizör Altyapısı

Bare-metal KVM/LXC sanallaştırma kümesi, ZFS depolama havuzları, PBS otomatik artımlı yedeklemeler ve WireGuard ağ izolasyonu

Stack: Proxmox VE 8 · Fedora Linux · ZFS · PBS · Docker · Caddy
2023–günümüz

Mimari İlkeler ve Değişmezler

Saha koşulları ve donanım kısıtları altında şekillenen mühendislik prensipleri. Olası hata modları, sistem savunması ve üretim doğrulama bağlamları.

01 · Veritabanı

Zero-Lock Katalog İstatistikleri

✓ Üretimde Doğrulandı
"Canlı multi-terabayt üretim veritabanlarında metadata çıkarma sırasında SELECT COUNT(*) ve tam tablo taraması (Seq Scan) çalıştırılmaz."

Hata Modu (Nasıl Bozulur?)

Tablo boyutu yüz milyonlarca satıra ulaştığında tam tarama tüm disk bloklarını OS buffer cache'ine çeker, disk I/O kapasitesini tüketir ve canlı operasyonel işlemleri bekletir (lock starvation).

Mühendislik Savunması

Doğrudan yerel veritabanı katalog istatistikleri (PostgreSQL'de pg_class.reltuples, Oracle'da ALL_TABLES.NUM_ROWS) asenkron okunur. Yaklaşık satır sayısı sıfır kilit ve <5ms içinde elde edilir.

Doğrulama Alanı: MetaDB projesinde multi-terabaytlık kurumsal Oracle ve PostgreSQL üretim sistemlerinde doğrulandı.
02 · Donanım & Edge

Edge Flash Ring-Buffer

✓ Üretimde Doğrulandı
"Ağ kesintisinde telemetri verisi kısıtlı mikrodenetleyici RAM'inde tutulmaz; yerel dairesel flaş belleğe yazılır."

Hata Modu (Nasıl Bozulur?)

ESP32'nin serbest heap alanı (~320KB) birkaç dakikalık veri yığınında tükenir, malloc NULL döner ve cihaz panikleyip yeniden başlar (heap crash & veri kaybı).

Mühendislik Savunması

Dahili flaşta SPIFFS/LittleFS üzerinde sabit boyutlu dairesel (circular) ring-buffer tutulur. Ağ kesintisinde ~320KB ring-buffer yaklaşık ~48 saatlik kesintisiz telemetri kaydı tutar; dolunca FIFO mantığıyla en eski kayıt üzerine yazılır. Bağlantı geldiğinde paketler sırayla boşaltılır.

Doğrulama Alanı: Plasmon telemetri ağ geçitlerinde ve endüstriyel soğutma panolarındaki 4G/GSM hücresel failover testlerinde doğrulandı.
03 · Dağıtık Arka Uç

Idempotent İşlem ve Dağıtık Kilit

✓ Üretimde Doğrulandı
"Ağ zaman aşımlarında istemcilerin veya gateway'lerin gönderdiği tekrar istekleri (retries) mükerrer işlem veya çift tahsilat oluşturamaz."

Hata Modu (Nasıl Bozulur?)

İstemci ağ gecikmesi nedeniyle yanıtı alamaz ve aynı ödeme isteğini yineler. Eğer arka uç atomik durum kontrolü yapmıyorsa ikinci kez bakiye düşülür.

Mühendislik Savunması

İstek başlığındaki benzersiz Idempotency-Key değeri Redis'te atomik kilit (SET NX EX) ile tutulur; işlem tamamlandığında sonuç anahtara bağlanır. Tekrar eden istekler doğrudan ilk işlemin sonucunu döndürür.

Doğrulama Alanı: Ulusal medya kuruluşu merkezi ödeme mikroservisi ve Plasmon telemetri ingest hattında doğrulandı.
04 · Altyapı & Depolama

ZFS Scrub ve PBS Tekilleştirme

✓ Üretimde Doğrulandı
"Fiziksel sunucularda donanımsal sessiz disk bozulmalarına (bit rot) ve yedekleme bütünlüğü riskine tolerans gösterilmez."

Hata Modu (Nasıl Bozulur?)

Standart dosya sistemleri (ext4) disk sektöründeki sessiz manyetik bozulmaları fark etmez; bozuk blok yedek arşivine de kopyalanır ve felaket anında veri kurtarılamaz.

Mühendislik Savunması

ZFS RAID-Z havuzlarında haftalık zpool scrub ile blok düzeyinde checksum doğrulanır ve bozukluk eşlik diskinden onarılır. Proxmox Backup Server (PBS) ile blok seviyesinde tekilleştirilmiş artımlı anlık görüntüler alınır.

Doğrulama Alanı: Kendi Proxmox VE sunucularım ve homelab hipervizör kümesinde 3+ yıldır kesintisiz doğrulanmaktadır.
05 · Güvenlik & Yetki

Anında Oturum ve Yetki İptali

✓ Üretimde Doğrulandı
"Kullanıcı yetkileri durumsuz JWT payload'una gömülerek uzun süreli yetkilendirme yapılamaz."

Hata Modu (Nasıl Bozulur?)

Bir saha operatörünün rolü geri alındığında ya da cihazı ele geçirildiğinde, elindeki JWT süresi (örn. 60 dakika) bitene kadar yetkili API uç noktalarına erişmeye devam eder.

Mühendislik Savunması

JWT yalnızca sabit kimliği ve bir sürüm damgasını taşır; operasyonel roller Redis'te tutulur. Yetki değiştiği mikrosaniyede Redis anahtarı güncellenir; sonraki <0.3ms içindeki istek 401 ile kesilir.

Doğrulama Alanı: Plasmon, Sapmapayı ve Diventra WMS mikroservisleri için kurulan ortak Auth servisinde doğrulandı.

İletişim ve Temas

Dağıtık mimariler, telemetri altyapıları ve sistem tasarımı üzerine doğrudan iletişim kanalları.

GitHub
github.com/ihtiyar07
Açık Kaynak Depolar
LinkedIn
in/ahmet-ihtiyar
Profili Görüntüle
Teknik Değerlendirme & Danışmanlık: Dağıtık telemetri hatları, IoT geçitleri, zaman serisi optimizasyonu