← Yazılım

Finansal Hizmetlerde Kod Optimizasyonu

2 dk okuma

Bu yazının İngilizcesi de var: Optimizing Codes in Financial Services →

Büyük şirketlerde, mevcut sistem çalıştığı sürece onu korumak her zaman iyi bir fikirdir. Ama sistem, üzerinde çalışacak yeni iş taleplerine cevap vermeye yetmediğinde, yeni özellikleri uygulayabilmek için mevcut sistemi iyileştirmek bir zorunluluktur.

İşte bu, benim için daha kısa sürede daha fazlasını yapmayı talep etmek için bir fırsattı.

Mevcut sistem nasıldı ve neden yetersizdi:
Bu, kurumsal kredi kontrol sistemi; risk karşısındaki teminatların doğru marj ve oranlarda olup olmadığını kontrol eden bölüm. Ancak ne yazık ki bu işlem için 3 ana nesne vardı ve bunlardan ikisi birbirine oldukça benziyordu. Sanırım bunun sebebi, yeni gelen bütün yazılım mühendislerinin aynı şekilde düşünmesiydi: hiçbir şeyi etkilememek ve yeni bir stored procedure yazmak daha iyi.
Bu doğru değil. Basit tutmak, böl ve fethet; bunlar temel bir gerçek.
Her zaman önerilen şey, önce kodu debug ederek, izleyerek ve okuyarak öğrenmek ve anlamak; ancak bundan sonra düşünüp kodlamaktır.

Yukarıdaki hikâyede olduğu gibi, 5 yılı aşkın bir sürede, tek bir basit amaç için 25 bin satır kod birikmişti: teminatların yeterli olup olmadığını kontrol etmek. Bu nesneler, Oracle 12 g üzerinde çalışan bazı stored procedure ve function’lardı.

İki ayda, en az yüz alt fonksiyon, temel bir oturum yönetim sistemi ve bir loglama sistemi içeren yepyeni bir paket yazdık; yani bankacılık sistemleri için mükemmel bir mimari.
Paket, yalnızca üç özel yazılım mühendisi ve bir iş analistiyle, XP proje yönetimiyle oluşturuldu. Sonuç, mevcut iş kontrol kurallarını ve üzerine istenen yeni görevleri de barındıran, yalnızca 5 bin satırlık bir koddu.

Bu başarıyla, teminat sistemiyle ilgili yeni projelerde hataları azalttık. Teminat ve risk kontrol projelerinde yeni talepleri teslim etme hızımızı artırdık.

Global type’lar, paketler ve otonom loglama sistemi gibi yeni teknolojik yeniliklere açık olmanızı şiddetle tavsiye ederim. Bu özelliklerin hepsini bir araya getirerek her işlemi etiketleyebildik, yedekleyebildik ve her kredi riski işlemi için bağlantıyı koruyabildik. Bu da önemli kredi işlemlerinin her yönüyle raporlanmasını ve her birinin geriye dönük olarak açıklanabilmesini sağladı.

Bunu nasıl başardık?
Çok büyük bir monitör kullandık ve mevcut sistemin kodunun her satırını okuduk; gereksiz her şeyi çıkardık, temp table kullanımını en aza indirip onları global type’lara dönüştürerek tüm değişkenler için bir havuz sistemi kurduk. Genel öğeler ve mikro fonksiyonlar, her işlemde ve klasik kontroller ya da müşteriler üzerindeki kurallarla yapılan kontroller gibi alt kontrollerde tutarlılığı korumak için harika bir ortam yarattı.

Sonuç olarak, finansal hizmetlerde daha iyi ve daha güvenli bir kontrol sistemi sunmak için, bilgi ve zekâyı basit ama sağlam sistemler kurmakta kullanırken cesur ama alçakgönüllü olmayı her zaman öneririm.

  • #financial services
  • #optimize
  • #oracle
  • #plsql
  • #xp