Mimari kata · K—01

Soğuk Zincir Telemetri ve Uyumluluk Platformu

Mimari kata · kurgusal bir problem tanımı üzerine tasarım çalışması

Sektör
İlaç lojistiği
Teknolojiler
EMQX, Apache Kafka, Apache Flink, ClickHouse, Apache Iceberg, Ceph, PostGIS, immudb, OpenBao, Apache APISIX, MapLibre, Trino
Akış: araç telemetrisi MQTT ve Kafka ile girer, Flink tekilleştirir ve uyarır; üç depo harita, analitik ve denetim kanıtını sunar.
Tasarım tek bakışta: 30 dakikalık, tek sayfalık canlı çizim. Diyagram etiketleri İngilizcedir.

Kısaca

20.000 soğutmalı araç, 72 saatlik çevrimdışılık ve denetçinin güvenmek yerine doğrulayabildiği GDP raporları.

Problem

Avrupalı bir ilaç lojistiği şirketi, 25 ülkede yaklaşık 20.000 soğutmalı araç ve 300 depoyla aşı ve biyolojik ürünleri İyi Dağıtım Uygulaması (GDP) kapsamında taşıyor. Her araç 10 saniyede bir konum, iki sıcaklık probu, kapı durumu ve nem bildiriyor. Üç cihaz tedarikçisinin her birinin kendi veri formatı ve portalı var. Dispatcher’lar üç portal arasında geçiş yapıyor, sıcaklık sapmaları çoğunlukla teslimattan sonra fark ediliyor ve her sevkiyatın uyumluluk raporu elle derleniyor. Araçlar 72 saate kadar bağlantısız kalıyor ve sonra birikimi yüklüyor. Hiçbir şey kaybolmamalı ve bir rapor on yıl sonra doğrulanabilmeli.

Yaklaşım

Tasarımı tek bir gerilim belirliyor: araçlar sürekli bağlantı kaybediyor, ama hiçbir ölçüm kaybolmamalı ve bir denetçi kaydın eksiksiz ve değişmemiş olduğunu doğrulayabilmeli. Kayıp sorunu cihazda çözülüyor. Kanıt sorunu depoda çözülüyor. Cihaz, broker onaylayana kadar her ölçümü tutuyor ve her birine kendi zaman damgasını ve artan bir sıra numarasını ekliyor. Geri kalan her şey bu sıra numarasına dayanıyor.

Mimari

  • Giriş: MQTT cihazları için EMQX ve yalnızca dışa aktarım sunan tedarikçi için bir HTTPS batch API’si. Bir downlink topic’i, platformun cihazdan bir sıra aralığını yeniden göndermesini istemesine izin veriyor.
  • Omurga: Avro sözleşmeli Kafka. Taşıma sisteminden referans veri Debezium ile geliyor.
  • İşleme: Flink cihaz ve sıra numarasıyla tekilleştiriyor, boşlukları gerçek zamanlı tespit ediyor, sapma ve geofence kurallarını değerlendiriyor ve geç veriyi 72 saat kabul ediyor.
  • Erişim desenine göre depolar: 90 günlük sıcak analitik için ClickHouse. On yıllık ham kayıt için Object Lock’lu Ceph üzerinde Iceberg. Operasyonel durum için PostGIS’li PostgreSQL.
  • Kanıt: her rapor ham veriden üretiliyor, özeti alınıp OpenBao ile imzalanıyor ve özet bir immudb defterine ekleniyor.
  • Erişim: 500 dispatcher ve 200 müşteri için APISIX ve Keycloak, canlı harita için MapLibre.
Mimari: araç cihazları EMQX üzerinden Kafka'ya ulaşır, Flink akışı işler, üç depo ve bir defter tüketicilere hizmet eder.
Çözüm genel bakışı: araç cihazlarından EMQX, Kafka ve Flink üzerinden ClickHouse, Iceberg, PostgreSQL, immudb defterine ve bunları okuyan servislere. Diyagram etiketleri İngilizcedir.Tam boyutta aç (yeni sekmede açılır)

Neden bu bileşenler

İhtiyaç Seçim Neden
Cihaz girişi EMQX (MQTT 5) MQTT cihaz protokolü: on binlerce kalıcı bağlantı, küçük mesaj, QoS 1 teslim onayı, çevrimdışı istemci için kalıcı oturum. EMQX kümeleniyor ve cihaz başına X.509 sertifika doğruluyor. Mosquitto ve HiveMQ CE kümelenmediği için elendi.
Broker ile log arasındaki köprü EMQX Kafka data integration Kafka’ya acks=all ile yazıyor ve cihaza onayı ancak Kafka onayladıktan sonra veriyor; kaybolacak MQTT offset’i kalmıyor. Enterprise özelliği; açık alternatif Kafka Connect MQTT source, en az bir kez.
MQTT konuşamayan kaynaklar Alım API’si; HTTPS toplu gönderim ve idempotency anahtarı Üçüncü vendor yalnızca portal dışa aktarımı sunuyor. Aynı ham topic’e yazan ikinci bir kapı; idempotency anahtarı tekrar gönderimi zararsız kılıyor.
Olay omurgası Apache Kafka (KRaft, Strimzi) MQTT broker kalıcı bir log değil, bir dağıtım noktası. Kafka cihaz bazında sıralı, tekrar oynatılabilir bir log veriyor; üç replika ve acks=all kaybı önlüyor. Redpanda, Business Source License nedeniyle elendi.
Şema sözleşmesi Apicurio Registry (Avro) Üç vendor formatı ve gelecekteki vendor’lar için sürümlü bir sözleşme. Uyumsuz değişiklik üretimde değil, CI’da kırılıyor. Confluent Schema Registry, Community License nedeniyle elendi.
Taşıma referans verisi Debezium ile değişiklik yakalama Sevkiyat, araç ve sürücü eşlemesini taşıma sisteminin günlüğünden okuyor; sorgu yükü yok, o sisteme dokunulmuyor. Flink bunu broadcast state olarak kullanıyor.
Akış işleme Apache Flink (Kubernetes operatörü) Olay zamanı, watermark, 72 saat izinli gecikme, durum bilgili join ve kurallar tek yerde. Tekilleştirme monoton sıra numarasını kullanıyor: cihaz başına son numara ve küçük bir boşluk kümesi; milyarlarca değil, 20.000 anahtar.
Sıcak analitik ClickHouse (Altinity operatörü) 90 günlük veride saniyenin altında zaman serisi sorgusu; cihaz ve sıra üzerinde ReplacingMergeTree ile idempotent yazım. TimescaleDB elendi: sıkıştırma ve sürekli toplamalar Timescale License altında.
Kanıt arşivi Apache Iceberg, Rook ile Ceph RGW üzerinde On yıllık ham veri için ucuz nesne depolama, ACID snapshot’lı açık tablo formatı ve S3 Object Lock ile bir kez yazılır saklama. MinIO topluluk sürümü 2025’te daraldığı için Ceph.
Operasyonel durum PostgreSQL ve PostGIS (CloudNativePG) Sevkiyat, geofence, uyarı durumu ve son konum: ilişkisel ve coğrafi sorgular tek yerde. Küçük, sıcak, sık güncellenen veri için sıkıcı ve doğru seçim.
Önbellek ve pub/sub Valkey Redis uyumlu, Linux Foundation altında BSD lisanslı; canlı konum önbelleği ve WebSocket dağıtımı için. Redis 8 AGPL’e döndü, o da kabul edilebilirdi; Valkey lisans tartışmasının dışında kalıyor.
Değiştirilemez defter immudb Rapor özeti, imza, Iceberg snapshot kimliği ve rapor sürümü ekle-sil-yok bir deftere yazılıyor. Merkle kanıtı, denetçinin hiçbir şeyin değişmediğini bağımsız doğrulamasını sağlıyor. Codenotary kurumsal destek veriyor.
Sır ve anahtar yönetimi OpenBao Cihaz PKI’ı, sürücü başına tokenizasyon anahtarı ve transit imzalama. HashiCorp Vault Business Source License’a geçtiği için Linux Foundation çatalı, MPL 2.0.
API geçidi Apache APISIX OAuth2 doğrulama, müşteri başına kota, sürümleme ve WebSocket proxy. Kong OSS kurumsal özellikleri kapalı sürüme taşıdığı için Apache lisanslı APISIX.
Kimlik Keycloak Çalışanlar için kurumsal kimlik sağlayıcısına federe OpenID Connect, kurumsal müşteriler için client credentials. Destek Red Hat build of Keycloak ile.
Harita ve arayüz React, MapLibre GL ve Martin vektör tile’ları Kendi tile sunucusuyla harita çağrısı başına ücret yok. MapLibre, Mapbox GL v2 kapandıktan sonra çıkan BSD lisanslı çatal. 500 dispatcher için yeterli.
Analitik erişim Trino, Apache Superset, JupyterHub Veri bilimciler Iceberg’i Trino üzerinden SQL ile sorguluyor; panolar Superset’te, defterler JupyterHub’da. Kanıt arşivi aynı zamanda analitik kaynak; kopya gerekmiyor.
Platform Kubernetes ya da OpenShift, Argo CD, cert-manager, step-ca, Cilium Her iş yükü operatör yönetimli; GitOps kurulumu yeniden üretilebilir kılıyor. step-ca cihaz sertifikalarını basıyor; Cilium mTLS ve ağ politikası uyguluyor.
Gözlemlenebilirlik OpenTelemetry, Prometheus, Grafana, Loki, Tempo Cihaz canlılığı, consumer lag, checkpoint sağlığı, cihaz zamanından teslimata uyarı gecikmesi ve rapor birikimi tek yığında.

Kararlar ve ödünleşimler

  • Cihaza ancak Kafka onayladıktan sonra yanıt. EMQX Kafka entegrasyonuyla kaybolacak MQTT offset’i kalmıyor; cihaz her örneği o ana kadar tutuyor. Sıra numarasında boşluk, downlink topic’inden bir “aralığı yeniden gönder” komutu tetikliyor. Bedeli EMQX Enterprise lisansı; açık kaynak kuralına adı konmuş bir istisna. O bütçe yoksa Kafka Connect MQTT source kullanırdım: en az bir kez, offset konnektörde.
  • At-least-once artı idempotent yazım. Zincir şöyle: cihazda QoS 1 ve sıra numarası, Kafka sonrası onay, durum ve offset için Flink checkpoint, depolarda iki aşamalı commit ya da idempotent upsert. Sonuç, okumada tekilleştirmeyle etkin tek sefer; exactly-once iddiası değil. Bedeli: panolar ClickHouse’u FINAL ya da argMax ile sorgulamak zorunda.
  • Erişim desenine göre iki depo. Dispatcher 90 günde saniyenin altında sorgu istiyor. Denetçi on yıl sonra dokunulmamış ham veri istiyor. ClickHouse sıcak ve hızlı, Iceberg ucuz ve kilitli. Gerçeğin kaynağı ham katman; ClickHouse ondan yeniden kurulabiliyor. Bedeli, iki depoyu birden işletmek.
  • Güvenme, doğrula. Üç katman: Object Lock ham nesneleri silinemez kılıyor, OpenBao rapor özetini imzalıyor, immudb onu Merkle kanıtıyla kaydediyor. Denetçi PDF’i yeniden özetleyip kanıtı istiyor. Bedeli: Object Lock altında compaction yok; dosya boyutu 10 dakikalık checkpoint aralığıyla kontrol ediliyor.
  • Sürücü gizliliği ile on yıllık kanıt. Telemetri araca ait. Sürücü ve araç eşlemesi tek kişisel veri ve sürücü başına bir anahtarla tokenize ediliyor. Silme eşlemeyi kaldırıp anahtarı yok ediyor; token’ın her kopyası anlamsızlaşıyor, kanıt bozulmuyor. Bedeli: sürücü izleme çalışan verisi; canlıya geçmeden önce işçi temsilcileriyle danışma gerekiyor.
  • Geç veri yeni bir rapor sürümü üretiyor. Geç gelen örnek aynı kurallardan geçiyor ve “retrospektif” işaretleniyor: SMS yok, ama kalite yöneticisine bildirim ve ürün için karantina bayrağı var. Rapor sürüm 2 yayımlanıyor, sürüm 1’in özeti defterde kalıyor. Bedeli, müşterilerin rapor revizyonu alması.
Akış: teslim durak durak onaylanır, boşluklar sıra numarasıyla bulunur, imzalı rapor özetleri bir deftere eklenir.
Durak durak teslim garantileri, eksiksizlik kanıtı ve değiştirilemezlik zinciri; geç gelen verinin nasıl ele alındığı da dahil. Diyagram etiketleri İngilizcedir.Tam boyutta aç (yeni sekmede açılır)

Yeniden ele alacaklarım

  • Cihazların gerçek yetenekleri. Her vendor’ın cihazı 72 saat tampon tutabiliyor, sertifika yükleyebiliyor ve yeniden gönderme komutunu uygulayabiliyor mu? Yoksa geç veri yalnızca portal dışa aktarımıyla gelir; üçüncü vendor’ın toplu API’de kalıp kalmayacağını da bu belirler.
  • EMQX lisans bütçesi. Bütçe yoksa köprü Kafka Connect MQTT source olur, en az bir kez.
  • Saklama modu. On yıl her ülkede aynı mı; hukuk kimsenin silemediği compliance modunu mu, yoksa yalnızca governance modunu mu kabul eder?
  • Taşıma sistemine erişim. Veritabanı değişiklik yakalamaya açık değilse referans veri API sorgulamasıyla gelir ve tazelik bundan etkilenir.

Sonuç notları (tasarım varsayımları, ölçüm değil)

Bu bir tasarım çalışmasıdır, devreye alınmış bir platform değildir. Çıktı: dört sayfalık diyagram seti, tek sayfalık beyaz tahta sürümü ve kapasite hesapları ile açık soruları içeren 18 sayfalık Türkçe PDF. Uyarı gecikmesi tahmini (30 saniyelik hedefe karşı yaklaşık 8–10 saniye) bir tasarım tahminidir.

Kaynaklar

  • Mimari PDF (Türkçe, 18 sayfa).
  • draw.io diyagramları (İngilizce etiketler): dört sayfalık set ve 30 dakikalık tek sayfa sürüm.

Bu konudaki gerçek projeler

  1. P—01

    Tamamlandı

    Öne çıkan

    Kurumsal Veri Ambarının Google BigQuery'ye Taşınması

    80 TB'lık ambar SQL Server ve 15 düğümlü Cloudera kümesinden BigQuery'ye taşındı: yıllık $550K tasarruf, %75 düşük altyapı maliyeti, 7 kat hızlı iş akışları.

    • Veri platformu
    • Veri kalitesi
    • Analitiğe hazır veri
    • Orkestrasyon
    • Bulut

    Rol

    Tasarım ve liderlik · Kıdemli Veri Mühendisliği ve Veri Mimarisi Grup Yöneticisi

  2. P—08

    Tamamlandı

    Veri Yönetişimi, Metadata ve Ana Veri Yönetimi (MDM)

    100+ kaynak sistem genelinde veri yönetişimi, metadata yönetimi ve ana veri yönetimi (MDM); veri kataloğu ve soy ağacı (lineage) araçlarıyla.

    • Veri yönetişimi
    • Veri izlenebilirliği
    • Veri kalitesi

    Rol

    Uygulama · Büyük Veri Yönetimi ve Veri Mimarisi Yöneticisi

Güvenilir veri: projeler, katalar ve yayınlar

Katalar hakkında

Benzer bir tasarım problemi için yazın.