GaiaExGaiaEx
İşlem Sistemleri için Yazılım Mühendisliği Tasarım Kalıpları
GeliştiriciProgramlama12 min read

İşlem Sistemleri için Yazılım Mühendisliği Tasarım Kalıpları

Borsaların kullandığı olay kaynaklama, CQRS ve mimari kalıplar

Paylaş

İşlem Sistemlerinde Tasarım Kalıpları Neden Önemli

Finansal yazılım pahalı şekillerde başarısız olur: tekrarlanan siparişler, tutarsız bakiyeler, sessiz kısmi başarısızlıklar. Tasarım kalıpları birer kupa değildir — tekrarlanan başarısızlık modlarına verilen tepkilerdir: denetlenebilirlik için olay kaynaklama (event sourcing), okumaları yazmalardan farklı ölçeklendirmek için CQRS, kademeli kesintileri durdurmak için devre kesiciler (circuit breaker) ve yeniden denemelerin çift işlem yaratmaması için idempotency.

CQRS + event log (conceptual) Write side commands validate append events Event log immutable ordered Read side projections Caches / SQL API queries Readers can lag slightly; writers stay the source of truth in the log.
Komutlar gerçekler üretir; tüketiciler hızlı sorgular için materyalize görünümler inşa eder.

Pub/Sub ve Gevşek Bağlaşım

Eşleştirme motorları, risk kontrolleri ve piyasa verisi yayıncıları, büyük bir karmaşa yumağı içinde birbirlerini doğrudan çağırmamalıdır. Bir yayınla/abone ol (publish/subscribe) otobüsü, eşleştiricinin gerçekleşen işlemleri yayınlamasına izin verirken aşağı akış servislerinin, yukarı akışın uygulama ayrıntılarını bilmeden abone olmasını sağlar — ama teslimat garantilerini (en az bir kez'e karşı tam olarak bir kez) ve yeniden oynatma için saklama süresini hâlâ sen seçmelisin.

Devre Kesiciler ve Bölmeler

Bir devre kesici (circuit breaker), tekrarlanan başarısızlıklardan sonra hasta bir bağımlılığı çağırmayı durdurur, ona toparlanması için zaman verir ve iş parçacığı havuzlarını korur. Bölmeler (bulkhead), kaynak havuzlarını izole eder, böylece kontrolden çıkmış bir analitik işi sipariş göndermeyi açlığa mahkûm edemez.

Circuit breaker states CLOSED calls pass failures OPEN fast-fail timeout HALF trial call Half-open probes decide whether to close again or reopen.
Başarısızlık dalgalarında devreyi kes; soğumaya bırak; tam trafikten önce tek bir çağrıyla test et.

Durum Makineleri ve Idempotency

Siparişlerin ve transferlerin yasal yaşam döngüleri vardır. İzin verilen geçişleri bir sonlu durum makinesinde (finite state machine) kodla, böylece geçersiz atlamalar imkânsız olsun. Bunu, ağ yeniden denemelerinin çift canlı sipariş yaratmasını önleyen idempotency anahtarlarıyla müşteri istekleri üzerinde eşleştir.

Eşleştirme Motorları: Fiyat-Zaman Önceliği

Merkezi platformlar, gelen siparişleri fiyat-zaman önceliğiyle bekleyen likiditeye karşı eşleştirir. Zincir üstü eşleştiriciler (birçok L1 DEX tasarımı gibi) deterministik olmalıdır: her doğrulayıcı aynı sırayı yeniden yürütür ve aynı duruma ulaşır — GaiaEx bu modeli Hyperliquid'in kurallarından miras alır.

Pragmatik Benimseme

İlk gün her kalıbı kutsal metin gibi taklit etme. Açık sınırlarla, yapılandırılmış loglarla ve para hareketi etrafındaki testlerle başla. Mutabakat ağrısı belirdiğinde bir olay günlüğü ekle; dış API'ler bozulduğunda devre kesiciler ekle. Kalıplar gerçek sıyrıkları çözer, hayali olanları değil.