Mikroservis Cumhuriyeti: Her Servis Kendi Tahtında, Sistem Kimin Umurunda?

Mikroservis mimarisi, yazılım dünyasının özgürlük vaadi gibidir: Her parça bağımsız geliştirilsin, ayrı deploy edilsin, kendi verisine sahip olsun, ekipler hızlansın, kimse kimsenin ayağına basmasın. Kâğıt üzerinde şahane. Fakat her özgürlük projesi gibi burada da küçük bir dipnot vardır: Bağımsızlık, sorumluluğun buharlaşması için icat edilmiş lüks bir perdeye dönüşebilir. Bir sabah sistem çöker, kullanıcı ödeme yapamaz, loglar sisli bir ormana benzer ve herkes aynı kutsal cümleyi söyler: Bizim servis ayakta.

İşte mikroservis mimarisinin bireycilikle akrabalığı burada başlar. Modern birey de kendi servisini ayakta tutmaya çalışır: Kariyerim çalışıyor, hesabım dönüyor, takvimim dolu, profilim güncel. Ama mahalle yanıyorsa, kurum çürüyorsa, ürün kullanıcıyı perişan ediyorsa, sadece kendi endpointinin 200 dönmesi pek de kahramanca değildir. Mikroservisler teknik bir desen olmaktan çıkıp örgütsel bir psikoloji aynasına dönüşür: Herkes kendi sınırlarını korur, kendi SLA belgesini parlatır, fakat sistemin ruhu ortada kalır.

Dağıtık sistemlerde suç da dağıtılır

Monolitik yapılarda sorunlar büyük, görünür ve genellikle tek bir kalenin içindedir. Mikroservislerde ise sorunlar gezgin hayaletlere benzer. Bir istek API gatewayden girer, kimlik servisinde selam verir, sipariş servisine uğrar, stok servisinde tökezler, ödeme servisinde kuyrukta bekler, bildirim servisinde anlamını kaybeder. Hata nerede? Cevap çoğu zaman şudur: Arada. Bu arada kelimesi, hem teknik hem ahlaki bir kara deliktir. Çünkü arada olan şeyin sahibi yoktur.

İyi tasarlanmış mikroservis mimarisi, güçlü sınırlar kadar güçlü anlaşmalar ister. Sözleşmeler, gözlemlenebilirlik, izleme, merkezi olmayan ama ortak akla bağlı karar mekanizmaları olmadan mikroservis, sadece küçük monolitlerin kabile savaşına dönüşür. Her ekip kendi teknolojisini seçer, kendi veritabanını kurar, kendi deployment ritüelini icat eder. Başta renkli bir festival gibi görünen bu çeşitlilik, kısa sürede operasyonel bir pazara döner: Her tezgâhta başka kural, başka para birimi, başka felaket.

Bireycilik de benzer bir teknik borç üretir. Kişi kendini optimize ederken ortak altyapıyı ihmal eder. Evin içindeki herkes kendi odasını temizler ama mutfak çöp kokar. Şirkette herkes kendi hedefini tutturur ama ürün berbatlaşır. Toplumda herkes kendi çıkarını maksimize eder ama güven duygusu çöker. Mikroservislerin bize öğrettiği sert gerçek şudur: Yerel başarı, küresel başarının garantisi değildir. Hatta bazen yerel başarılar toplamı, küresel başarısızlığın en şık ambalajıdır.

Bu yüzden mikroservis mimarisinde asıl mesele servisleri bölmek değil, sorumluluğu yeniden birleştirmektir. Bir sistem, sadece bileşenlerden oluşmaz; bileşenler arasındaki ilişki biçimlerinden oluşur. Kim kiminle konuşuyor, hata olduğunda kim geri çekiliyor, veri tutarsızlığında kim hakem oluyor, kullanıcı deneyimi bozulduğunda kim ayağa kalkıyor? Bunlar teknik sorular gibi görünür, ama aslında yönetim, etik ve kültür sorularıdır.

Çözüm monolite dönüp duvarları kalınlaştırmak değildir. Çözüm, mikroservisleri küçük krallıklar olarak değil, disiplinli bir federasyon olarak düşünmektir. Her servisin sahibi olmalı, ama sistemin de sahipleri olmalı. Her ekip kendi alanında özgür olmalı, ama ortak sözleşmelere, ortak metriklere ve ortak kullanıcı gerçeğine bağlı kalmalı. Dağıtık izleme, uçtan uca testler, olay güdümlü mimaride net şemalar, hata bütçeleri ve mimari karar kayıtları bu yüzden sadece araç değil, kolektif hafıza organlarıdır.

En tehlikeli yazılım cümlesi, çalışıyor demektir. Çünkü neyin, kimin için, hangi koşulda çalıştığı sorulmadan söylenir. Bir mikroservis kendi başına çalışıyor olabilir; ama sistem kullanıcıya acı çektiriyorsa, o çalışma sadece teknik bir narsisizmdir. Aynı şekilde birey kendi hayatını kusursuz biçimde yönetiyor olabilir; ama bağlandığı ağları zehirliyorsa, bu başarı değil, izole bir performanstır.

Mikroservis mimarisi bize şunu fısıldar: Gerçek olgunluk, sınır çizebilmek kadar sınırların ötesini duyabilmektir. Kendi servisine bak, evet. Ama çağrının nereden geldiğini, cevabın kime gittiğini, gecikmenin kimde ağrıya dönüştüğünü de bil. Çünkü sistem dediğimiz şey, kimsenin tek başına sahiplenmediği ama herkesin içinde yaşadığı o büyük organizmadır. Ve organizma hastalandığında, hiçbir servis gerçekten sağlıklı değildir.