Ahmet İhtiyar
Veri Hattı Vaka Çalışmaları Sistem Kaydı Değişmezler İletişim
00 · GİRİŞ & KONUMLANDIRMA

Sensörden imzalı rapora, verinin yolunu baştan sona kuran mühendis.

Diverjans Bilgi Teknolojileri · Dağıtık Telemetri, Saha Donanımı ve Sistem Mimarisi

Diverjans Bilgi Teknolojileri bünyesinde; donanım seviyesinden (ESP32, Modbus) dağıtık mikroservislere, zaman serisi depolamadan (TimescaleDB) Apache Arrow sıfır kopyalama veri aktarımına ve resmi e-imzalı denetim raporlarına kadar uzanan uçtan uca veri hatlarını kuruyorum.

Ahmet İhtiyar — Portre
İstanbul
Diverjans IT
01 · Omurga Mimarisi

Verinin Yolu

Cihaz → Aktarım → Kuyruk → Depolama → Teslimat → Güven

Sensörden resmi e-imzalı rapora kadar uzanan 6 istasyonlu telemetri omurgası. Saha kısıtlarına ve ağ kesintilerine karşı geliştirilen donanım ve yazılım savunma katmanları.

İstasyon İndeksi
01 Donanım Seviyesi

Cihaz & Saha Sensörü

Protokol & Yığın: ESP32 · Modbus RTU (RS-485) · Modbus TCP · FreeRTOS · GPIO / UART
Ne Yaptım

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.

Karar Gerekçesi

Dinamik heap tahsisini (malloc) en aza indirip statik bellek yapıları kullandım; böylece bellek fragmentasyonunu sıfırlayarak sahadaki cihazların aylarca yeniden başlamadan çalışmasını sağladım.

Elenen Alternatif

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.

Zorlayan Nokta & Çözüm

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

İlgili Mühendislik Dosyası Dosya 01: Plasmon Vaka Çalışması
Altyapı Zemini (Infrastructure Ground)
· Proxmox VE 8 · ZFS RAID-Z · PBS · Docker · Nginx / Caddy · Prometheus / Grafana · Oracle Database
02 · VAKA ÇALIŞMALARI

Birincil Vaka Analizleri

3 Seçilmiş Sistem · Üretimde Doğrulandı

Saha kısıtları, ağ kopmaları ve yüksek veri yoğunluğu altında inşa edilmiş 3 kritik sistemin mimari dökümü. Doğrudan problem kökü, mimari kararlar, canlı metrikler ve üretim kodu çekirdeği.

Dosya 01 ÜRETİMDE DOĞRULANDI

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

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

Yığın: ESP32 (C/FreeRTOS) · Modbus RTU/TCP · MQTT/TLS
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 güncellemesi alması gerekiyordu.

Mimari Karar

ESP32 üzerinde C ve statik bellek tahsisi kullanılarak dinamik malloc fragmentasyonu önlendi. REST yerine persistent MQTT/TLS (QoS 1) soketi kurularak hücresel veri tüketimi %85 azaltıldı. İkincil failover hattı olarak GSM modemi için donanımsal güç anahtarlaması eklendi.

Neyi Farklı Yapardım?: Başlangıçta telemetri paketleri için JSON formatı kullanılmıştı. Baştan Protobuf veya saf ikili (binary) packed struct mimarisine geçseydim hücresel tüketimi ilk günden %65 daha aşağı çekebilirdim.
Mimari Şema & Veri Akışı
Failover Topolojisi
Saha Cihazı / Ekipman
Endüstriyel Chiller & HVAC
Sıcaklık, Basınç, Kompresör Akımı
RS-485 Modbus →
Uç Ağ Geçidi (Edge) FreeRTOS
ESP32 Firmware (C)
Statik RAM Tahsisi · Donanımsal Watchdog
Hücresel Ağ Durumuna Göre İkili Yönlendirme
4G LTE / GSM Failover
Ağ Kesintisi (Offline)
Flash Ring-Buffer (~320KB)

Dahili flaşta döngüsel kayıt. RAM fragmentasyonu sıfırlanır, hat gelene kadar telemetri korunur.

Bağlantı Aktif (Online)
EMQX MQTT Broker (TLS 1.3)

Persistent QoS 1 soket. %85 hücresel veri tasarrufu; biriken tampon 0 paket kaybıyla boşaltılır.

Mesaj Kuyruğu
RabbitMQ Cluster
Dead-Letter Exchange (DLX) · Backpressure Koruması
Ingest →
Zaman Serisi Veritabanı
TimescaleDB
Hypertables · Sıkıştırma · 100K+ Cihaz Ölçeği
Dosya 02 ÜRETİMDE DOĞRULANDI

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ı

Yığın: TimescaleDB · Apache Arrow (IPC) · C# .NET 10
0 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

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.

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.
Mimari Şema & Veri Akışı
Zero-Copy Hattı
Telemetri Deposu
TimescaleDB Hypertables
250K+ Yüksek Frekanslı Sıcaklık & Nem
Continuous Aggs →
İkili Akış Motoru .NET 10
Apache Arrow IPC Streamer
RecordBatch Sütunsal Akış · Sıfır JSON Maliyeti
Sıfır Kopyalama İkili Akış (Zero-Copy Binary Highway)
24.8MB JSON → 3.1MB Arrow (%87 Ağ Tasarrufu)
01 · Ön Yüz Sunumu <15ms Render
Tarayıcı GPU Canvas

İkili tampon doğrudan Float64Array belleğine eşlenir. JSON.parse ana iş parçacığını kitlemez, 250K nokta pürüzsüz çizilir.

02 · Yasal Denetim 5070 Sayılı Kanun
PKCS#11 HSM + QuestPDF

TÜBİTAK Kamu SM RFC 3161 zaman damgası ve X.509 dijital sertifikasıyla mühürlenen delil niteliğinde denetim raporu.

Dosya 03 ÜRETİMDE DOĞRULANDI

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ı

Yığın: Spring Boot 3 · C# .NET 10 · Redis (Redlock)
<1ms İptal Gecikmesi
O(1) Redis Kontrolü · <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

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.

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.
Mimari Şema & Veri Akışı
Doğrulama Akışı
İstemci / Saha Cihazı
HTTP Yetkilendirme Başlığı
Bearer JWT (ver=3, <400 bayt)
JWKS →
Aşama 1: Durumsuz Doğrulama Gateway
Yerel Kriptografik İmza Kontrolü
Asimetrik açık anahtarla yerel CPU doğrulama (Ağ çağrısı yok)
Aşama 2: Redis Versiyon Karşılaştırması
<0.3ms Gecikme · O(1) Sabit Karmaşıklık
Komut: GET auth:ver:{userId} → Redis'teki güncel sürüm ile token'daki ver iddiası karşılaştırılır.
ver == 3 (Eşleşti / Aktif)
HTTP 200 OK
Yetkilendirme Onaylandı

İstek hedef mikroservise (Plasmon, Sapmapayı, Diventra WMS) gecikmesiz yönlendirilir.

ver != 3 (Uyuşmazlık / İptal)
HTTP 401
Anında Oturum Feshi (<1ms)

Sürüm tamsayısı artırıldığında tüm eski token'lar anında iptal olur. Şişen token kara listesi tutulmaz.

03 · İKİNCİL İŞLER

Sistem Kayıt Defteri

5 Sistem · Operasyonel Altyapı

Üretim ortamlarında bizzat kurduğum, idame ettiğim ve otomatize ettiğim sistemler, ağ altyapıları, hipervizör kümeleri ve açık kaynak araçlar.

REG-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
REG-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
REG-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
REG-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
REG-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
04 · DEĞİŞMEZLER

Mimari İlkeler ve Değişmez Kurallar

Kural → Nasıl Bozulur → Çözüm → Nerede Doğruladım

Saha kısıtları ve donanım gerçeklikleriyle sınanmış mühendislik kuralları. Bir kuralın nasıl bozulacağı öngörülmeden ve üretimde test edilmeden hiçbir mimari karar alınmaz.

01 · Veritabanı

Zero-Lock Katalog İstatistikleri

KURAL: KORUNUYOR
Kural

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

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 Çözümü

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.

Nerede Doğruladım

MetaDB projesinde multi-terabaytlık kurumsal Oracle ve PostgreSQL üretim sistemlerinde doğrulandı.

Hata Modu Güvencesi 01 · Veritabanı
02 · Donanım & Edge

Edge Flash Ring-Buffer

KURAL: KORUNUYOR
Kural

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

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 Çözümü

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.

Nerede Doğruladım

Plasmon telemetri ağ geçitlerinde ve endüstriyel soğutma panolarındaki 4G/GSM hücresel failover testlerinde doğrulandı.

Hata Modu Güvencesi 02 · Donanım & Edge
03 · Dağıtık Arka Uç

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

KURAL: KORUNUYOR
Kural

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

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 Çözümü

İ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.

Nerede Doğruladım

Ulusal medya kuruluşu merkezi ödeme mikroservisi ve Plasmon telemetri ingest hattında doğrulandı.

Hata Modu Güvencesi 03 · Dağıtık Arka Uç
04 · Altyapı & Depolama

ZFS Scrub ve PBS Tekilleştirme

KURAL: KORUNUYOR
Kural

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

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 Çözümü

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.

Nerede Doğruladım

Kendi Proxmox VE sunucularım ve homelab hipervizör kümesinde 3+ yıldır kesintisiz doğrulanmaktadır.

Hata Modu Güvencesi 04 · Altyapı & Depolama
05 · Güvenlik & Yetki

Anında Oturum ve Yetki İptali

KURAL: KORUNUYOR
Kural

Kullanıcı yetkileri durumsuz JWT payload'una gömülerek uzun süreli yetkilendirme yapılamaz.

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 Çözümü

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.

Nerede Doğruladım

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

Hata Modu Güvencesi 05 · Güvenlik & Yetki
05 · İLETİŞİM

İletişime Geçin

Doğrudan İletişim

Form yok. Dağıtık mimariler, telemetri hatları ve veritabanı optimizasyonu üzerine doğrudan mühendislik teması.