Delivery Team — CargoBrokerAPI Modernizasyonu
Bildiğiniz gibi teknoloji ilerledikçe mevcut yazılımlar zamanla körelmeye, yeniliklere adapte olamazlarsa gün geçtikçe kullanılamaz hale gelmeye, dahası yeni istekler geldikçe cevap verememeye başlıyorlar.
Delivery ekibi olarak şirketimizin uzun bir süredir üzerine kafa yorduğu ve hızlıca adapte etmeye başladığı modernizasyon işlerinden biz de payımıza düşeni yapmaya karar verdik. Sprint dışı iş yapmak istemediğimiz için öncelikle altyapısının kurulması adına kısa zamanda hızlıca geliştirmesini tamamlayabileceğimiz şekilde görevler oluşturup ufak adımlar atmaya başladık.
https://agilemanifesto.org/iso/tr/manifesto.html
Bugün sizlere .NET Core teknolojisi kullanarak geliştirmeye başladığımız CargoBroker projemizden bahsetmek istiyorum. Bununla beraber Pars.Core kütüphanesinin de ekip içinde yaygınlaşmasına vesile olmak benim için heyecan verici bir deneyim oldu diyebilirim.
Cargobrokerapi isimli modernizasyon projemizi LCWaikiki mimari ekibimizin geliştirdiği Pars.Core altyapısını kullanarak geliştirmeye başlamıştık. Kargo entegrasyon süreçlerinde ilk olarak sevkiyat durum sorgulama akışlarını buraya taşıdık. Emeği geçen, katkıda bulunan tüm IT ekibimize bir kez daha çok teşekkürler.
Altyapıyı tasarlarken öncelikli hedefimiz ihtiyaçlarımızın belirlenip mevcut akışımızda karşılaştığımız engelleri ve bunların giderilmesi için neler yapabileceğimizi bulmaktı. Bütün kargo firmaları ile yaptığımız entegrasyonlarda bizi en çok zorlayan kısım sevkiyatların durumlarını sorgularken geç cevap dönmesi yada sorgulama sürelerinin uzun olmasıydı.
Yazılıma başlarken temel prensiplere bağlı kalmaya özen gösterdik. Bunlar SOLID, KISS, DRY, YAGNI diye bildiğiniz en temel ve artık el alışkanlığına dönüşmüş olanlar diyebiliriz :)
Bununla beraber kullanacağımız birçok yeni araç vardı.
- Prometheus (https://prometheus.io/docs/introduction/overview/),
- Grafana (https://grafana.com/)
- Kibana (https://www.elastic.co/kibana/)
Mimari kararımızı uygularken en büyük yol göstericimiz Pars.Core kütüphanesi oldu. Önyüzde API console uygulamamız, diğer katmanlarda class librarylerimizle işe koyulduk. Data katmanında CargoBroker’ın kendi veritabanı olarak MongoDB seçtik. Diğer servislerden buraya, sorgulanacak olan sevkiyat veri akışını gerçekleştiriyoruz. Daha sonra bir hangfire kullanan (https://www.hangfire.io/) batch uygulaması, sorgulanacak sevkiyat verisini bu Mongodbden seçip içerideki factory pattern ile hangi kargo firmasına gideceğine karar vererek ilgili kargo servislerinden dönüşleri almaya başlıyor. Bunu yaptığımızda her kargo firması için ayrı projeler oluşturup her biri için ayrı schedule joblar tanımlama külfetinden de kurtulmuş oluyoruz. Bundan sonrası hayatın normal akışına devam ediyor :)
Şimdilik bahsetmek istediklerim bu kadar. Bir sonraki dijital dönüşüm maceramızda görüşmek üzere.
Sevgiler
:)