Dinamik, Modüler, İleri Düzey Yazılım Geliştirme Platformu-Wilabs
AGRA Fintech Yazılım Çözümleri
Dinamik, Modüler, İleri Düzey Yazılım Geliştirme Platformu-Wilabs
Proje İçeriği
Yazılım projelerinin altyapılarının oluşturulmasında öncelikle mimari yaklaşım belirlenmelidir. Projenin amacı, kullanıcı sayısı, tutulacak verilerin boyutu ve niteliği, uygulamanın hizmet edeceği platform (mobil, web, masa üstü vb.) gibi değişkenler projede uygulanacak olan mimarinin ve altyapı gereksinimlerine karar verilirken büyük önem arz etmektedir.
Yazılım projelerinin başarılı bir şekilde hayata geçirilmesi için sağlam bir mimari yaklaşım belirlemek kritik öneme sahiptir. Mimari yaklaşım, projenin amacını, kullanıcı sayısını, veri boyutunu ve niteliğini, ayrıca uygulamanın hizmet edeceği platformu göz önünde bulundurarak belirlenmelidir. Dikkate alınması gereken bazı ana unsurlar:
1.Projenin Amacı: Projenin neyi başarmayı hedeflediği, hangi sorunları çözeceği ve kullanıcıya nasıl bir değer sunacağı mimari seçimi etkiler.
2.Kullanıcı Sayısı: Uygulamanın kaç kullanıcıya hizmet edeceği, ölçeklenebilirlik ve performans gereksinimlerini belirler.
3.Veri Boyutu ve Niteliği: Verinin büyüklüğü ve türü (yapılandırılmış, yapılandırılmamış, gerçek zamanlı vb.) veri depolama çözümleri ve veri işleme mimarileri üzerinde doğrudan etkili olur.
4.Hizmet Edilecek Platform: Uygulamanın mobil, web veya masaüstü gibi hangi platformlarda çalışacağına göre farklı teknoloji stack'leri ve mimari yaklaşımlar kullanılması gerekebilir.
Bu unsurlar doğrultusunda, genellikle şu adımlar izlenir:
•Gereksinim Analizi: İş gereksinimleri ve teknik gereksinimler detaylı bir şekilde analiz edilir.
•Mimari Desenlerin Seçimi: MVC, MVVM, mikro servis mimarisi, katmanlı mimari gibi uygun desenler seçilir.
•Teknoloji Stack'inin Belirlenmesi: Programlama dilleri, veri tabanı yönetim sistemleri, bulut hizmetleri, ön ve arka uç teknolojileri gibi bileşenler seçilir.
•Prototipleme: Seçilen mimarinin küçük bir ölçekte prototipi oluşturulur ve test edilir.
•Detaylı Tasarım: Mimarinin detayları belirlenir, bileşenler arası entegrasyon planlanır ve tasarım dokümantasyonu hazırlanır.
Bu süreçlerin dikkatlice yürütülmesi, yazılım projesinin başarıya ulaşması ve sürdürülebilir bir şekilde yönetilmesi için hayati öneme sahiptir.
Bu süreçlerin yürütülmesi için yüksek tecrübeli ve maliyetli mimari ekiplere ihtiyaç vardır. Alınacak olan bu kararların ayrıca hayata geçirilmesi sırasında oluşabilecek hatalar proje maliyetlerini ve sürdürülebilirliğini son derece riskli bir duruma getirmektedir.
Bu kapsamda yazılım projesi oluşturulurken ihtiyaç duyulacak yazılım altyapı modüllerinin kompakt bir üründe toplanarak hızlı ve verimli yazılım üretme ortamının sağlanması için WiLabs platformu geliştirilmiştir.
Projenin Amacı
Proje sonucunda ortaya çıkan ürün şirket içerisinde yazılım geliştirme süreçlerinin iyileştirilmesi için geliştirilmiştir. WiLabs altyapısı ile java temelli “Reaktif Yazılım Geliştirme”(Reactive Software Development) yaklaşımı odağında kompakt bir yazılım platformu oluşturulmuştur. Bu platform ile bir yazılım projesinin temel bileşenleri hızlı bir şekilde aktif hale getirilerek yazılım iş gücünü iş hedefi yönlendirerek zaman ve maliyetten tasarruf sağlanması amaçlanmıştır. Ayrıca Wilabs microservis gibi güncel yazılım yaklaşımlarının hayata geçirilmesini de sağladığı modüller ile hızlı ve kolay hale getirmiştir. Bununla birlikte doğru teknoloji ve tekniklerin seçimi gibi stratejik kararların, kişilerin inisiyatifine bırakılmadan proje hedeflerine uygun şekilde konfigüre edilebilen WiLabs platformu ile daha etkin bir şekilde verilmesi sağlanmıştır. Kurum bünyesinde geliştirilen farklı farklı projelerde de teknik anlamda verilmiş stratejik kararların aynı şekilde uygulanması, standardın korunması ve yazılım kalitesinin sürekli en üst düzeyde tutulması sağlanmıştır.
Proje içindeki en büyük inovasyon nedir? (yeni bir teknoloji veya var olan teknolojinin farklı kullanımı gibi. IOT, M2M, AI vb.)
Bir yazılım projesini hayata geçirirken temel bileşenlerin güncel teknolojilere uygun, hızlı, verimli ve güvenli bir şekilde bir araya getirilmesi sağlanarak, bu süreçte harcanacak eforun en aza indirilmesi hedeflenmiştir. Bu bağlamda, WiLabs cluster mekanizması ile dağıtık sistemler için koordineli çalışabilen node sistemleri oluşturulmuş; özgün cluster discovery mekanizması ve eventbus mekanizması sayesinde node’lar arasında birçok farklı iletişim ve koordinasyon yöntemi sağlanmıştır.
Ayrıca, konsolide log mekanizması ile sistemin tüm parçalarında oluşan loglar erişilebilir ve analiz edilebilir bir yapıya kavuşturulmuştur.
Netty temelli özgün self hosting ve dinamik routing mekanizması geliştirilmiş, JWT temelli akıllı token mekanizması dayalı bir authentication sistemi tasarlanmıştır.
Periyodik işlemlerin hızlı ve verimli bir şekilde yapılabilmesi için queue worker mekanizmaları oluşturulmuş ve API Gateway kullanılarak 3rd party bileşenlere ihtiyaç duyulmadan load balancing yapılabilmesi sağlanmıştır.
Son olarak, tüm WiLabs sistemi legacy sunuculara, OpenShift ve Kubernetes gibi dağıtım altyapılarına uyumlu hale getirilmiştir. e-defter gibi büyük veride manuel ve insan gözüyle yapılması mümkün olmayan analizlerin, aktarma arındırma işlemlerinin hızlı ve otomatik bir şekilde yapılabilmesi projenin diğer bir yenilikçi özelliğidir.
Proje kurum içindeki hangi bölüme fayda sağlamıştır?(satış, pazarlama, finans, İK, IT, Üretim, Planlama, Satın alma, Lojistik Müşteri İlişkileri gibi)
Kurum içerisinde yazılım geliştirme departmanına aşağıdaki başlıklarda fayda sağlanmıştır. ● Çok sayıda mevcut teknoloji ve araç arasından en uygun olanını seçmek karmaşıktır. Teknolojilerin uyumluluğunu ve uzun vadede sürdürülebilirliğinin değerlendirilmesi önemlidir. Geliştirilen sistem ile; teknolojik araçların seçilmesi konusundaki zorlukların önüne geçilmiştir. ● Ölçeklenebilir altyapısı ile büyüyen kullanıcı sayısı ve veri hacmine uyum sağlayabilmektedir. ● Güvenlik duvarları, şifreleme, kimlik doğrulama, yetkilendirme alt yapısı ile güvenlik açıkları ve veri sızıntılarının önüne geçilmektedir. ● Farklı teknoloji ve sistemlerin kullanılması nedeniyle sürekli bakım yapmak, güncellemeleri takip edip yönetmek zordur. Geliştirilen sistem içerisinde otomasyon araçları ve süreçleri, yönetim ve izleme altyapısı ile takibini yapmak oldukça kolaylaştırılmıştır. ● Yazılım projesini gerçekleştirecek ekibin altyapı kurulumu ve yönetimi için gerekli teknik bilgi ve beceri eksikliğinin olması altyapıda sorunlar çıkmasına neden olmaktadır. Proje kapsamında geliştirilen alt yapı ile; kullanıcının bilgi ve tecrübesine bırakılmadan kullanıma hazır olması bu riskin önüne geçilmiştir. ● Geliştirilen alt yapı ile; her projede ayrı kaynak ve zaman ayrılması gerekmediği için oluşacak maliyetlerden tasarruf sağlanmıştır. Aynı zamanda proje başlatma sürelerinin de minimuma inmesi sağlanmıştır. ● İş gereksinimlerinin değişmesi veya yeni teknolojilerin ortaya çıkması durumunda uyumlu olarak çalışabilecek esnek ve modüler mimari tasarıma sahiptir.
Projenin hayata geçirilmesi konusunda üst yönetimin desteğini tam olarak alabildiniz mi?
Projenin başlatılma ve başarı ile sürdürülmesinin sağlanması aşamalarında üst yönetim aktif olarak rol alıp, proje ekibine gerekli motivasyonu sağlamaktadır.
Proje sonunda ortaya çıkan sonuçları analiz edebildiniz mi? Rakamsal verilerle ifade eder misiniz?(ROI, maliyetlerde yüzdesel azalma, üretim süresinde azalma, hata payının düşmesi vs.)
- Proje sonunda elde edilen çıktı, 5 GB boyutunda belge işleme süresini saatler mertebesinden 2 dakikaya indirmiştir.
- Dağıtık mimarisi ile hem orkestrasyon araçları ile hem de kendi başına dağıtık ve izole bir şekilde çalışabilmektedir. Sisteme bir node 2 saniyenin altında eklenebilmektedir. Uygulamaya ait herhangi bir düğümün update edilmesi için sistemin durdurulmasına gerek yoktur. Servis discovery tarafından eski düğüme bağlantı isteğinin kapatılması yeterli olmaktadır.
- Çalıştırılan node’lar yüksek hata toleransına sahiptir. Wilabs ile geliştirilen uygulamaların test ettiğimiz kadarıyla yük altında uptime kalması %99 üzerindedir.
- Wilabs altyapısı ile geliştirilen uygulamalar dağıtık memory kullanabilmekte ve belleğe alınan verileri hızlı bir şekilde işleme kabiliyetine sahiptir. Memory’ye alınmış bir belge birden fazla node tarafından işlenebilmektedir ve her bir node eş zamanlı 3 işlemde bu dosyayı kullanabilmektedir.
Projenizde şirket içinden kaç kişi aktif olarak görev almıştır? Ekip birimleri hakkında kısaca bilgi verir misiniz?
5
Projenizde (varsa)işbirliği kurduğunuz veya destek aldığınız bilişim şirketlerini belirtiniz.
-
Proje sırasında kullandığınız ve spesifik önemi olan markaları (varsa) belirtiniz. (Yazılım veya donanım markaları)
Java, OpenShift ve Kubernetes