Yazılımcılar İçin Finans ve Bankacılık Terimleri: Aslında Bildiğimiz Problemlerin Farklı İsimleri
Yazılım tarafında çoğu geliştirici ilk kez finans sistemlerine dokunduğunda bu gerçekle karşılaşıyor. Çünkü finans dünyası sandığımızdan çok daha fazla zaman, mutabakat, risk ve resmi kayıt üzerine kurulu çalışıyor.
Özellikle bankacılık terimleri ilk başta gereksiz karmaşık gibi görünse de, aslında yıllardır çözülemeyen operasyonel problemlerin ortak dili haline gelmiş durumda. Valor, virman, FX, VİOP, teminat ve likidite gibi kavramların büyük kısmı; farklı sistemlerin birbirleriyle güvenli ve tutarlı şekilde çalışabilmesi için ortaya çıkmış operasyonel gerçeklikleri temsil ediyor.
Valor Tarihi: Finans Dünyasının Eventual Consistency'si
Mesela valor tarihi, dışarıdan bakınca gereksiz bürokratik bir detay gibi görünebilir. Ancak büyük ölçekli finans sistemlerinde işlemin yapıldığı an ile resmi muhasebe kayıtlarının oluştuğu an çoğu zaman aynı değildir.
Yazılım dünyasında eventual consistency nasıl doğal bir gerçeklikse, bankacılıkta da işlemin ekranda görünmesi ile resmen işlenmesi farklı olaylardır.
Kullanıcı bugün dolar aldığını düşünür; fakat bankanın arka tarafta tamamlaması gereken;
- Takas süreçleri
- Mutabakat işlemleri
- Merkez Bankası kayıtları
- Karşı kurum süreçleri
bulunur.
Bu yüzden birçok finansal işlem aslında anlık değil, planlanmış bir state transition olarak ilerler. Valor tarihi de tam olarak bunun finans dünyasındaki karşılığıdır.
Virman, Havale, EFT ve FAST: Aslında Farklı Sistem Sınırları
Virman konusu da yazılımcı gözüyle ilk bakışta "para transferi işte" gibi görünür. Oysa bankacılık açısından transferin hangi sistem sınırları içerisinde gerçekleştiği kritik bir bilgidir.
- Aynı bankadaki kendi hesapların arasında yapılan işlem virman
- Aynı bankadaki başka bir kullanıcıya gönderilen para havale
- Farklı bankalar arasında yapılan işlem ise EFT veya FAST
olarak adlandırılır.
Teknik taraftan bakınca bu ayrım biraz mikroservis mimarisindeki service boundary kavramını andırıyor.
Aynı domain içerisindeki bir state güncellemesi ile farklı kurumlar arasında gerçekleşen bir distributed transaction aynı risk seviyesinde değildir. İşlem sınırları değiştikçe;
- operasyonel maliyet,
- güvenlik ihtiyacı,
- doğrulama mekanizmaları
da doğal olarak değişir.
FX: Sadece Kur Çevirmekten Çok Daha Fazlası
FX tarafı ise yazılımcıların çoğu zaman yalnızca "kur çevirme" olarak düşündüğü fakat arkasında ciddi risk yönetimi bulunan ayrı bir dünya.
Çünkü döviz işlemi yalnızca para değiştirmek değildir; zamana karşı pozisyon almak anlamına gelir.
Örneğin üç ay sonra milyon dolarlık ithalat ödemesi yapacak bir şirket için bugün küçük görünen kur değişimi, birkaç ay sonra milyonlarca liralık zarara dönüşebilir.
Bu nedenle;
- Forward işlemleri
- Hedge mekanizmaları
- Riskten korunma stratejileri
hayatın doğal bir parçası haline gelir.
Yazılım dünyasında cache invalidation ne kadar gerçek bir problemse, finans tarafında da gelecekte oluşacak fiyat belirsizliği aynı derecede gerçek bir problemdir.
VİOP: Gerçek Varlığı Değil, Geleceği Satın Almak
VİOP tarafına girince işler daha da ilginçleşiyor.
Burada insanlar çoğu zaman gerçekten varlığı satın almıyor; onun gelecekteki fiyat hareketine pozisyon alıyor.
Örneğin doların yükseleceğini düşünen biri fiziksel dolar almak yerine ilgili kontratı satın alabiliyor.
Teknik açıdan düşündüğünde bu yapı biraz Event Sourcing mantığını çağrıştırıyor. Gerçek nesneden çok, onun gelecekte göstereceği davranış üzerinden işlem yapıyorsun.
Üstelik işin içine kaldıraç girince sistem tamamen risk yönetimi problemine dönüşüyor.
Küçük sermayeyle büyük pozisyon açabilmek ilk bakışta avantaj gibi görünse de, aslında sistem sana kontrollü borç veriyor.
Production ortamında yanlış yapılan bir auto scale ayarı sistemi nasıl kısa sürede çökertiyorsa, finans tarafında da yanlış kullanılan kaldıraç yatırımcıyı aynı hızla sistem dışına atabiliyor.
Likidite: Trafiği Yoğun API ile Kimsenin Kullanmadığı Servis Arasındaki Fark
Likidite kavramı ise yazılımcıların sezgisel olarak en kolay anlayabileceği konulardan biri.
Çok kullanılan bir API endpoint ile yıllardır kimsenin dokunmadığı eski bir servis aynı davranmaz.
Finans piyasalarında da durum aynıdır.
Likit piyasalarda sürekli alıcı ve satıcı bulunduğu için işlem yapmak kolaydır.
Ancak düşük likiditede;
- spread açılır,
- fiyatlar daha sert hareket eder,
- bazen çıkmak istediğin pozisyondan çıkamazsın.
Özellikle kriz anlarında teorik olarak çalışan birçok finans modeli pratikte çalışmaz hale gelir. Çünkü modeller çoğunlukla normal zamanı varsayar; panik anını değil.
Finans Sistemleri Neden Bu Kadar Katı?
Finans dünyasının yazılımcılar için en öğretici taraflarından biri de tam olarak burada ortaya çıkıyor.
Sistemler çoğu zaman happy path için değil, failure scenario'ları için tasarlanıyor.
Bu yüzden;
- Çift kayıt mantığı
- Mutabakat süreçleri
- Rollback benzeri operasyonlar
- Audit log'lar
- Transaction geçmişi
- İzlenebilirlik
gibi mekanizmalar sistemin vazgeçilmez parçaları haline geliyor.
Bunların büyük bölümü yıllar boyunca yaşanmış finansal krizlerin ve operasyonel hataların sonucunda oluşmuş yapılar.
Yazılım tarafında;
- Observability
- Audit Log
- Idempotency
neden önemliyse, finans dünyasında da aynı refleks çok daha sert kurallar ve regülasyonlarla uygulanıyor.
Sonuç
Bir noktadan sonra muhasebe ve finans terimlerinin aslında hiç de yabancı olmadığını fark ediyorsun.
Sadece farklı bir sektörün, yıllardır çözmeye çalıştığı consistency, güven, risk yönetimi ve operasyonel süreklilik problemlerini farklı isimlerle anlattığını görüyorsun.
Özellikle bankacılık sistemleriyle çalışan geliştiriciler için bu kavramları öğrenmek yalnızca yeni terminoloji ezberlemek değil; büyük ölçekli state yönetimini, güven problemlerini ve gerçek hayat operasyonlarını anlamaya başlamak anlamına geliyor.