500+ Mikro Servis mi?

İlk defa 2019 yılında Yıldız Holding ile yaşanılan sorunları tanımlamak ve çözümü için alternatif geliştirmek üzere yanyana geldiğimizde; holding bünyesindeki firmaların arasındaki iletişimi devam ettirmek için devasa bir ESB uygulaması olduğunu, bu uygulamaların geliştirilmesi için çeşitli zorluklar yaşandığını ve devamlılığını sağlamanın da hem maliyetli hem de operasyonel zorluğunu fark ettik. O günlerde mikro servis konusunun popülaritesi yazılımcılar arasında çok fazlaydı. Bunun yanında gereklilik konusunda çok net sebepler ve örnekler bulunmadığı için yönetimler hakkında karar vermemiz çok zordu.  

ID3 olarak Türkiye’nin en büyük holdinglerinden biri olan Yıldız Holding’e ait elliden fazla firmanın birbiriyle haberleşmesini sağlayacak bir sistemi kurmak için en uygun seçenek bir mikro servis mimarisi üzerinde tasarım yaparak sürekliliğin sağlamanın daha rahat olacağı konusunda mutabık kalarak kollarımızı sıvadık. 

Projeye 2019 son çeyreğinde başladığımızdan bu yana, proje kapsamında entegrasyon işlerinden sorumlu olarak beş yüzden fazla mikro servis geliştirdik. Java ve Spring Boot kullanarak geliştirdiğimiz bu mikro servisler halen konteyner mimarisiyle çalışıyor. 500’den fazla mikro servisle çalışmanın getirdiği zorlukların ve bu zorlukları nasıl başarıya dönüştürdüğümüz ile ilgili yaşadığımız sürecin detayları ise şu şekilde!

Operasyonel Zorluklar ve Sorumluluklarımız 

Holding bünyesinde birçok alt şirket bulunurken, entegrasyon katmanı, birbiriyle haberleşmesi gereken onlarca sistem ve şirketin tam ortasında konumlanıyor. 7/24 yürütülen bir operasyonun teknik altyapısını sağlamak, milyonlarca mesajın kesintisiz ve yüksek performanslı bir altyapı ile hizmete sunmak bizim en büyük sorumluluğumuz. Bu operasyonun ortasında doğan bütün problemlerde ilk iletişim noktası olarak görev yapıyoruz. Haliyle yaşanan bütün sorunlarda aktif rol alıyoruz. Sadece yazılım ve entegrasyon hizmeti veren bir firma olmaktan çok müşterimizin çözümlerinde de aktif rol alan ve birlikte çözüme giden bir iş birlikteliği yaratıyoruz.

Entegre olduğumuz sistemlerde yaşadığımız sorunlar, firmaların iş akış sağlığını ciddi şekilde engelleyebildiği için sistemi şeffaf bir şekilde takip edebilmek, hata ve anomali durumlarında alarmlar üretmek bizim günlük operasyonlarımız arasında yer alıyor. 

İşin doğası gereği bu kadar çok müşterinin bulunduğu bir ortamda sorun yaşanmasa bile bir hayli yüklü miktarda soru ile karşılaşıyoruz. Yeni çıkan teknolojileri öğrenmek, anlamak, bize uygunluğunu tartmak ve gerektiği takdirde uygulamaların yenilenmesi sürekli olarak canlı ve hareketli bir ortamda yaşamamızı bize adeta zorunlu kılıyor. 

Ekip üyelerimizin arasındaki bilgi paylaşımı ve uyum, stresli iş döngüsünde bize en çok yardımcı olan özelliklerimizden birisi.Bu konuda uzun yıllardır büyük projelerde edindiğim tecrübe ve stres yönetimini iyi yapmamızın etkisi çok büyük. Yazılımcı olmak, daha da detaya inersek eğer entegrasyon katmanından sorumlu olmak, bizim iş yükümüzün önemli bir bölümünü ekipler arası iletişimi sağlıklı tutmak için çabalamamızı gerektiriyor. 

Mikro Servis Geliştirme Sebeplerimiz 

Öncelikle mikro servis yapısına geçme kararımızın ilk sebebini şöyle açıklayabilirim: 

Sektörde yazılım mühendislerinin büyük bir bölümü programlama dili üzerinde yetkinliklerini geliştirmiş durumda. Gerek üniversitelerin eğitim müfredatları gerekse online eğitime ulaşım kolaylığı aynı zamanda ESB veya benzeri sistemlerdeki tecrübeyi çok tercih etmemesi, yazılımcıları programlama dillerinde hakimiyete sürüklüyor. Mülakatlara girdiğimiz zaman hemen herkes .net, Java, Python veya bir programlama diline hâkim. Rest servisler, HTTP, web sitesi, API kavramları artık standartlaştığı için bunları öğrenmek ve öğretmek için harici bir çabaya gerek kalmıyor. 

Mikro servis yapısı kullanınca bütün servislerimiz kendine ait fonksiyonaliteyi gerçekleştirebiliyor ve bir problem çıkması durumunda bir yazılım geliştirici servis bazında araştırma, sorun ayıklama yapabiliyor. 

Bu kadar büyük bir operasyonu yönetmek için, projelerin isimlendirmelerinden kod yapılarına kadar standartlar oluşturmak ve sistemi daha da anlaşılır şekle getirmek bizim görevlerimiz arasındaydı. Bu standartlar, ekibe yeni katılan arkadaşların hızlı adaptasyonunu sağladı ve bakım süreçlerini kolaylaştırdı. Teknik olarak, oluşturduğumuz kod havuzu örnek alınabilir, üzerinde gerekli görülen geliştirme ve işlemler kolayca yapılabilir durumda. 

Tek bir sistemden yüzlerce alt parçaya bölünen bir sisteme geçince bu sefer de farklı zorluklar önümüze çıkmaya başladı. 

Kazanımlarımız 

Projenin başından bugüne kadar gelişi sırasında bir sürü kazanımlarımız oluştu diyebilirim.  

  • Açık kaynaklı kütüphaneler ve konteyner mimarisi ile çalışmak teknik ekip için motivasyon kaynağı oldu. 
  • Güncel teknolojileri kullanarak, yüksek performanslı ve güvenli sistemler geliştirdik. 
  • Bu süreçte mühendislik kabiliyetlerimizi en üst seviyede kullanarak, karşılaştığımız zorlukları çözdük ve büyük bir operasyonu başarıyla yürüttük. 

Yönetim açısından baktığımda, bir ekip yöneticisi olarak 5 yılda bir sürü ekip üyemiz oldu. Kimileri daha güzel fırsatlar yakalayıp kariyerlerine devam etti, kimileri şirketimiz bünyesinde farklı sorumluluklar aldı. Onlarca stajyer irili ufaklı bir sürü projede yer alma fırsatı buldu. Biz de verdiğimiz karar sonucu Yıldız Holding işlerinin sürekliliğini daha makul seviyelere çıkardık. Yeni ekip üyelerimiz göreve başladığı zaman verimli hale gelebilmeleri çok hızlı oldu. 

Mikro servislere geçince hiç mi zorluk yaşamadık ya da hangi konularda yardıma ihtiyacımız oldu? Bunu da bir sonraki yazımda paylaşmak üzere!

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir