Özgür Adem Işıklı Özgür Adem Işıklı Software Developer Resume Contact

Software Developer

Not #3 - Microservice Notlarım

Bu bir kendime not yazısıdır. Daha sonradan unutma ihtimalime karşın kendimce notlar alıyorum.

Mikro servisler birbirleriyle çalışan küçük, otonom yapılardır. Peki “Ne kadar küçük?” soruna cevap olarak Jon Eaves diyor ki: “Bir mikroservis iki hafta içerisinde yeniden yazılabilir bir şey olmalıdır. Bir diğer basma kalıp düşünceye göre; Yeterince küçük olması gerektiğinde daha küçük değil.”

  • Teknoloji Çeşitliliği
    • Tüm microservisler farklı teknolojiler kullanılarak geliştirilebilir.
    • İşe uygun olan teknolojiler seçilebilir.
    • Yeni bir teknoloji denemek istediğimiz, sadece düşük riskli bir microservice üzerinde bu teknolojiyi deneyebilir ve sonuçlarını gördükten sonra kullanma ya da kullanmama kararı alabilirsiniz.
    • Monolithic uygulamalarda yeni bir teknoloji denemesi pek mümkün olmaz ve zamanla sistem bakım maliyetleri artmaya başlar.
  • Esneklik
    • Eğer bir microservice patlarsa, diğer bölümler çalışmalarına devam edebilirler.
    • Eğer monolithic bir servis patlarsa, tüm sistem patlar. Biz de bunun olmaması için birden fazla makine ile hatayı tolere etmeye çalışırız.
  • Ölçeklenebilirlik:
    • Monolithic uygulamalarda her şeyi hep birlikte ölçeklemek zorundasınız.
    • Microservice mimarisinde, sadece ihtiyacı olan bölümleri kendi içerisinde ölçekleyebilirsiniz.
  • Yayınlama
    • Monolithic uygulamalarda bir satır değişiklik nedeniyle tüm sistemin yayınlanması (deployment) gerekir. Bu tüm sistemin testlerinin tekrardan çalıştırılması, tüm farklı makinalarda yer alan uygulamaların güncellenmesi vs. gibi oldukça uzun bir sürece maal olabilir.
    • Tüm uygulamanın aynı anda güncellenmesi oldukça büyük bir riski de beraberinde getirir.
    • Microservislerde sadece tek bir mikroservisi geri kalan yapıdan tamamen bağımsız olarak güncelleyebiliriz. Böylece risk azalmış olur. Güncellenen mikroserviste bir hata varsa bile, sadece o mikroservisin (örneğin fotoğraf servisi) işlevleri duracağından (sistemin geri kalanı çalışmaya devam edeceğinden) sorunumuz daha az olacaktır.
  • Organizasyonel İşbirliği
    • Takımlar ve codebase büyüdükçe hatalar çoğalma eğilimindedir.
    • Aynı proje üzerinde çalışan büyük bir takım sürekli bir birini rahatsız etmek zorunda kalır.
    • Bu nedenlerle küçük takımlar daha üretkendir.
    • Microservisler bize daha küçük takım ve codebase avantajı sağlarlar.
  • Değiştirilebilirlik
    • Eğer büyük bir organizasyonun parçasıysanız, yıllar önceden kalma ama hala çalışan bir uygulamayla karşılaşabilirsiniz. Uygulamalanın zamanı çoktan dolmuştur ama kimse ona dokunmak istemez çünkü çok büyük ve risklidir.
    • Microservislerin değiştirilmesi kolay olduğundan (2 haftada yeniden yazma süresi) gerekirse tamamen baştan yazabilirsiniz. Bu nedenle riskleri azdır.
    • Ne sıklıkla bir gün içinde 100 satırdan daha fazla kodu silmenize rağmen içinizde kuşku olmadan gününüze devam edebilirdiniz?
    • Microservislerle çalışırken yeniden yazma ya da değiştirilebilme bariyerleri monolithic uygulamalara göre oldukça azdır.

What About Comments?

I do not use any comment system such as Disqus because of user's privacy. If you want to discuss something about this post, you may open an issue on the repo.

You may check what is the problem with Disqus;