Microservice Mimarisi Hangi Projeler İçin Uygundur ?

Microservice mimarisi getirdiği avantajlar sayesinde oldukça kullanışlı gözüksede, her uygulama için uygun değildir, peki hangi uygulamalar için bu güzel mimariyi kullanabilirsiniz. Gelin cevaplarını inceleyelim.

Microservice mimarisi günümüzde çok popüler ve neredeyse her proje bu mimariye uygun geliştirilmekte ya da varolanlar bu mimariye geçirilmeye çalışıyor. Ancak microservice mimarisi her proje için uygun değildir. Bir yazılım projesine gerek olmadığı halde microservice mimarisi ile başlamak zaman ve maliyet açısından oldukça sorun yaratabilir. Yani bazı projelerde monolitik ilerlemek çok da mantıksız değildir.

Microservicelerin artılarını ve eksilerini iyi düşünmek gerekir. Microserviceler bağımsızlık, güçlü modüller yapı,ölçeklenebilirlik, servislerin bağımsız dağıtımı ve her küçük servis için uygun olan teknolojiyi kullanma fırsatı gibi avantajlar sunarlar. Dağıtılmış servis yapısı da doğal olarak, monolitik sistemlere göre daha fazla gecikme ve daha fazla başarısız olma ihtimaline sahip olduğu gibi, daha yüksek operasyonel karmaşıklığa sahiptir. Bu nedenle uygulamanın microservice mimarisi ile yapılması için bu mimariye uygunluğunu kanıtlamanız gerekir. Bu yükün altına girebilmeniz için gerekli kriterleri karşılayabiliyor olmalısınız.

Biri microservice mi dedi ? (Resim: Manu Cornet (http://www.bonkersworld.net)

Microservice kullanmak için hangi projelerde kullanılmaması gerektiği de çok önemlidir. Burada amacım sizi microservice mimarisinden soğutmak asla değil, sadece doğru projelerde kullanılması ne kadar büyük ölçüde yarar sağlıyorsa, uygun olmayan projelerde kullanılması bi o kadar zarar sağlayacaktır.

Netflix’in, akış hizmetlerini sağlamak için 700'den fazla microservice kullandığı belirtiliyor.

Microservice mimarisi, özellikle büyük ölçekli, modüler ve büyük kitlelere hitap eden uygulamalar için oldukça uygundur. Microservices mimari modeli, karmaşık ve sürekli gelişen uygulamalar için daha iyi bir seçimdir. Ancak unutulmamalıdır ki, iyi ve mimariyi bilen kişilerin barındığı bir ekibe sahip olmak en önemli etkenlerden biridir. Kötü bir microservice yapısı, sizi kurtulmak istediğiniz tüm problemlerle karşılaşmanızı sağlayabilir.

Çoğu şirket yeni bir projeye monolitik mimariyle başlarlar. Projelerin ilk aşamasında, monolit bir yapı kurmak ve işlerin daha hızlı ilerlemesini sağlamak çok daha kolay bir yoldur. Bir süre sonra, eski kod yapıları, yeni teknolojilere adapte olamamak, kod karmaşıklığının yada büyüklüğünün getirdiği yavaşlık, anlaşılırlığın azalması, yeni özellik eklenmesinin zorluğu gibi problemlerle karşılaşırlar . Sistemin büyümesiyle, kod karmaşık hale gelirken, mimari daha da karmaşık hale gelir ve bunu sürdürmek zorluğun yanında, daha fazla developer ve zaman ihtiyacı doğurur. Bunun yanında, yeni ihtiyaçlara ve özelliklere cevap verilememeye başlanır. Böyle bir projenin modüler olduğunu umut ederek, microservice mimarisine bu problemlerden kurtulmak amacıyla geçilebilir. Ama halihazırdaki monolitik mimari size yetiyorsa, böyle bir değişime gerçekten ihtiyacınız olup olmadığını sorgulayabilirsiniz.

Anlatılan tüm kriterleri değerlendirdikten sonra, aşağıdaki nitelikleri karşılayan bir uygulama microservice mimarisi ile geliştirilebilir.

  • Orta ve büyük ölçekli projeler
  • Microservice mimari bilgisi bulunan ekip üyeleri (mümkünse yazılım mimarı)
  • Birden fazla takıma sahip proje ekipleri (Her biri microservice mimarisini kavramış olmalı)
  • Çok modüllü yapılar
  • Ölçeklenebilir olması gereken servisler
  • Versiyonlama da zero-time hedefleyen projeler
  • Büyük trafik altındaki uygulamalar

Bütün bunların yanı sıra bütçe ve zaman da önemli bir faktör haline gelmektedir. Yukarıdaki kriterlere uygun bir projeye sahipseniz yada geliştirmeyi düşünüyorsanız microservice mimarisi sizin için biçilmiş kaftandır. Proje kadar takımda çok önemli bir faktördür.

Biraz örneklerle besleyerek hangi proje ve şirketlerin bu mimariyi kullandığına göz atalım. Amazon ve Netflix, monolitten microservicelere geçiş sürecini tamamlayarak bu mimarinin öncülerinden oldular.

Amazon güçlü bir monolit mimariye sahip olmasına rağmen, değişiklere zor adapte olması ve pazar ihtiyaçlarına hızlı yanıt verememesi, modüller arasındaki sıkı bağımlılıklar işleri zorlaştırdı.

Değişikliklerden sonra monolit bir yapıyı deploy etmenin zorluğu da tüm sorunlara tuz biber oldu. Bütün bu sorunları çözmek amacıyla, Amazon’da microservice mimarisine evrim başladı. Yapıları servislere ayırmak, darboğazların nerede olduğunu, bu yavaşlamaların neden ve nerelerde olduğunu anlamalarına olanak sağladı. Ve her bir servise odaklı farklı takımlar bu güçlüklerin ve problemlerin üstesinden geldi. Böylece Amazon evrimini tamamladı ve birçok şirkete AWS ile birlikte bu mimarinin kullanılmasını kolaylaştıran çözümler sunarken, bu mimarinin öncü şirketlerinden biri oldu.

Amazon’un microservicelerine göz atmak istemez misiniz ?

Netflix, microservicelere hızlıca adapte olup, bu mimariye öncü olan şirkletlerin başında gelmektedir. Özellikle java teknolojilerine yaptığı katkı yadsınamaz ve şu an hali hazırda birçok open-source kütüphanesi microservicelerin yapısı kolaylaştırmak adına sahada, birçok uygulama tarafından da kullanılmaktadır.( Bu küçük teşekkürün ardından hikayemize devam edelim :) )

Netflix’in microservicelere yönelmesi, bu yaklaşımın hiç bilinmediği 2009 yılında başladı. Microservice mimarisini ilke olarak AWS’de kurdular. Geçiş süreci adım adım ilerledi: İşe ilk olarak müşteriye yönelik olmayan uygulama ve servislerle başladılar. Daha sonra, hesap ve kayıt servisleri, film seçimi, cihaz seçimi ve konfigürasyonu gibi müşteriye dönük öğeleri microservice mimarisine uygun şekilde servislere ayırdılar. Netflix’in monolitlerini mikro hizmetlere ayırması için 2 yıl gerekiyordu ve 2011'de yapılarını yeniden tasarlamayı ve microservice mimarisini kullanarak düzenlemeyi bitirdiğini duyurdu.

Netflix’in microservicelerinden bir görünüm — (Resim: Bruce Wong, Netflix)

Microservice mimarisinin bu başarılı sonuçlarıyla birlikte, yazılım dünyasında büyük bir değişime yol açmıştır. Büyük sistemleri ve büyük sorunları başa çıkması kolay olan küçük parçalara bölmenin yanı sıra, şirketin kültürünü de değiştirmektedir ve bu mimariyi kullanan şirketleri daha açık, değişikliklere hazır ve daha bağımsız hale getirir.

--

--

Software Engineer @Yemeksepeti • #Java • #Spring Boot • #Kotlin • #Spark • #Microservices • https://gokhana.dev

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Gökhan Ayrancıoğlu

Software Engineer @Yemeksepeti • #Java • #Spring Boot • #Kotlin • #Spark • #Microservices • https://gokhana.dev