Mikroservis Mimarilerde Takım ve Teknoloji Seçimine Nasıl Karar Verilir

Suat Çilingir
Inside Architecht
Published in
4 min readDec 2, 2020

Bir teknoloji firması veya departmanı olduğunuzu düşünelim. Mikroservis dönüşümü yapmak istiyorsunuz veya elinize bir proje / ürün geldi ve bu ürün için mikroservis mimarisinin uygun olacağına karar verdiniz. Peki hangi teknolojileri kullanmanız gerekiyor, nasıl seçeceksiniz, takımlar nasıl oluşacak, takımları teknoloji seçiminde serbest mi bırakacaksınız? Tüm bu sorulara bu makalede cevap aramaya çalışacağız.

Öncelikle firmanızda bir Teknoloji Radar’ı konumlandırmak ile işe başlamalısınız. Bunun için bağlantıdaki yazımı okuyabilirsiniz. Radar canlı bir şey, yani yeni teknolojiler geldikçe radarda da konumlanması gerekmektedir. Özellikle mikroservis bir mimaride çok fazla teknolojiyi konumlandırmak zorunda kalacaksınız ve bu teknolojileri iyi yönetmezseniz, zaman içinde onlarca teknoloji ile işlerin çığırından çıktığını görmeniz mümkün.

Takımları Nasıl Kuralım

Mikroservis mimarisi uyguluyorsanız takımların da agile Mikro Takımlar (Micro Team) olarak kurgulanması gerekmektedir. Mikroservis mimaride, sistemi servislere böldüğünüz için servislerin sorumluluğunu da takımlara vermelisiniz. Bir servisin sorumlusu 2 takım olamaz. Takım, sorumlusu olduğu servisin geliştirilmesi, yaygınlaştırılması ve bakımının yapılması gibi sorumluluklara sahiptir. Ayrıca takımlar, ilgili servisin teknolojisini belirleme ve bu teknolojinin güncellenmesi veya değiştirilmesi gibi sorumluluklara da sahiptir. Bu değişiklik veya güncelleme Teknoloji Radar’dan faydalanılarak yapılır.

Her takım sadece kendi mikroservislerinin sorumluğunu almalı, diğer mikroservislere karışmadan geliştirmelerini yapmalıdır. Ancak kendi geliştirmeleri diğer takımların servislerini etkiliyorsa, bu durumda versiyon yönetimini ve yaygınlaştırma (release) notlarını çok iyi yönetmelidir.

Mikroservis konusunda yapılan önemli bir hata, takımların birbirinden habersiz bir şekilde mikroservis mimarisinin aşılması gereken konularını tekrar tekrar çözmesidir. Burada söylemek istediğim “merkezi şeyler olsun herkes onu kullansın değil”, bu zaten mikroservisin doğasına aykırı. Ancak takımlar hangi konuları nasıl çözdüklerini birbirleri ile bir şekilde paylaşmalıdırlar.

Poliglot (Polyglot) Mikroservis Nedir

Takımlar oluştuktan ve mikroservislerin kağıt üzerindeki tasarımları kabaca bittikten sonra (burada DDD gibi pattern’lar gerekiyor, farklı bir makalede buna değinelim inşallah) teknoloji seçimi yapılması gerekiyor. Mikroservis mimarilerde servislerin farklı teknolojileri kullanmaları mümkün, hatta önerilmekte. Servislerde farklı teknolojilerin kullanılmasını Poliglot Mikroservis Tasarımı diye adlandırabiliriz.

Her bir mikroservis, ilgili olduğu işin gerekliliklerine ve geliştirici takımın yeteneklerine göre farklı bir teknoloji kullanabilir. Farklı teknolojilerin kullanılmasının bir avantajı da şudur ki, firma dışarıdan yapacağı istihdam için illa java’cı veya .net’çi vs. bulmaya kalktığı zaman, yetenek havuzu daraltılmış oluyor. Ancak servislerdeki teknoloji çeşitliliği yetenek havuzunun daha geniş olmasını ve istihdamın daha kolay yapılmasını sağlayacaktır.

Ayrıca teknolojik çeşitlilik, yeni ve inovatif teknolojilerin de kullanılabilmesine olanak sağlayacaktır. Bu durumda kullanılan teknolojiler modern olacağı gibi, istihdamlarda modern teknolojileri kullanan firmaların daha çok tercih edilmesi nedeniyle, firma için istihdam kolaylığı da oluşacaktır.

Peki Teknoloji Seçiminde Takımları Serbest Bırakacak Mıyım?

Az önce ifade ettiğimiz gibi MicroTeam’ler Poliglot Mikroservis Tasarımı sayesinde kendi backend ve veri tabanı teknolojisine karar verebilirler. Bunun yanında kendi repo yönetimlerini yapıp, farklı süreçler ile code review tekniklerini de uygulayabilirler. Takımları teknoloji seçiminde serbest bırakmak geliştiricilerin teknik manada yaratıcılığını destekleyecektir. Takım daha rahat olduğu programlama dilini seçecektir. Takımda otonomi artacak ve takım sorumlu olduğu servisleri için bağımsız bir şekilde geliştirme, yaygınlaştırma ve ölçekleme yapabilecektir. Mikroservis dünyasında “tüm konuları ben halledeceğim” durumu olmadığı için farklı open source teknolojileri seçip sisteme entegre edebilmek, takımın teknik manada daha rahat olmasını da sağlayacaktır.

Takımları serbest bırakmanın bir avantajı da Time To Market, yani ürünü production’a hızlı çıkartmak olacaktır. Monolitik bir uygulamayı canlı ortama çıkma konusunu deneyimleyen herkes bunun ne kadar büyük bir koordinasyon işi olduğunu bilir. Mikroservis mimarisinde de dikkat edeceğiniz hususlar olmasına rağmen, bir servisi production ortama çıkmak çok daha bağımsız, hızlı ve kolaydır.

Poliglot mikroservislerin önemli bir dezavantajı karmaşıklığın artmasıdır. İpleri tamamen takımların eline bırakmak bir zaman sonra birbiri ile hiç anlaşamayan servislerin ve takımların ortaya çıkmasına neden olabilir. Buradaki şerbeti çok iyi ayarlamak lazım, ne çok sıcak ne de çok soğuk olmalıdır. Takımlar mümkün olduğunca agile, bağımsız ve hızlı geliştirme yapmalı, ama her zaman bir çemberin de içerisinde olmalıdır, doğru tabirle hunharca teknoloji kullanmamalıdırlar. Bu gibi konuları Teknoloji Radar yönetimi ile kolayca idare edebilirsiniz (Neymiş bu radar diyenleri duyabiliyorum 😊).

Eğer firmada karar verici pozisyonda iseniz, teknoloji seçimini yapan takımlardan tercihi neye göre yaptıklarını isteyebilirsiniz. Bunu sözlü veya bir doküman aracılığıyla, en yaygın teknolojilerin artılarını ve eksilerini ortaya koydurarak kayıt altına almalarını istemelisiniz. “Ya biz agile’ız, ne dokümanı” diyor olabilirsiniz, ama buradaki mesele aşırı kurumsallaşarak dokümana boğulmak değil. Farklı bir takım da bir teknolojiyi konumlandırmak isteyeceği zaman bu dokümanlardan faydalanarak hız kazanacaktır.

Sonuç

Mikroservis yapıyoruz diye ne teknolojilerin her türlüsünü sınırsızca kullanmak, ne de bir anti-pattern olan ortak kod kütüphanesini tüm servislere yerleştirmek doğrudur. Buradaki dengeyi iyi ayarlamak gerekir. Takımlar bağımsız olmalılar ama diğer takımların da neyi, nasıl yaptığının farkında olmalılar.

Referanslar

https://medium.com/microservices-in-practice/microservices-layered-architecture-88a7fc38d3f1

https://medium.com/capital-one-tech/analyzing-polyglot-microservices-f6f159a1a3e7

--

--