yazılım dünyasının "biz bu işi çözdük galiba" deyip, üç ay sonra "abi biz ne yaptık?" diye kafayı duvara vurduğu modern zaman efsanesi. özeti şudur: kocaman, hantal, "ne olur ne olmaz şunu da ekleyelim" diye şişirilmiş (bkz: monolitik mimari) uygulamaları alıp, bunları kibrit kutusu büyüklüğünde, "herkes kendi işine baksın kardeşim" diyen küçük servislere bölme sanatı.

olayı bir lokanta metaforuyla anlatalım, daha gırgır olsun.

eski düzen (monolit): kocaman bir ismet usta'nın yeri. ismet usta aynı anda hem ızgarayı yakar, hem çorbayı kaynatır, hem kasaya bakar, hem de içeriden "usta bi adana!" diye bağıran garsona fırça atar.

sorun 1: ismet usta grip olursa (bug/crash), dükkan (uygulama) komple kapanır. geçmiş olsun.

sorun 2: öğle vakti (peak time) sadece çorbaya talep arttığında, ismet usta'yı klonlayamazsınız. tüm dükkanı (tüm uygulamayı) olduğu gibi kopyalamanız gerekir (bkz: horizontal scaling), bu da masraflıdır.

sorun 3: ismet usta sadece odun fırını kullanmayı biliyorsa (mesela tüm kod java ise), "abi bi sushi yapalım" (yeni özellik) derseniz, onu da odun fırınında yapmaya çalışır. sonuç: (bkz: facia).

yeni düzen (mikroservis): ismet usta'nın yerini yıktık, yerine bir food court açtık.

pideci (kullanıcı servisi)

dönerci (sipariş servisi)

tatlıcı (ödeme servisi)

içecekçi (bildirim servisi)

herkes kendi işinin patronu, kendi tezgahından sorumlu.

avantajları (işte bu be! dedirten kısımlar):

dayanıklılık (resilience): tatlıcı (ödeme) kriz geçirip "künefeyi yaktım!" diye bağırırsa (servis çökerse), pideci (kullanıcı) "banane abi" der, pide satmaya devam eder. en fazla müşteri tatlı yiyemez ama sisteme girmeye devam eder.

ölçeklenebilirlik (scalability): ramazan geldi, tatlıcıya (ödeme) talep patladı mı? sadece tatlıcının olduğu yere 3 tezgah (instance) daha atarsın. pideci tek başına takılmaya devam eder. ismet usta'nın tüm dükkanını kopyalamaktan daha ucuz ve mantıklıdır.

teknoloji özgürlüğü: pideci odun fırını (java) sever, dönerci gazlı (python) sever, tatlıcı mikrodalga (go) kullanır. kimse kimseye karışmaz. (bkz: polyglot programming)

hızlı deployment: dönerci menüye "iskender" eklerken (yeni özellik), pidecinin ruhu bile duymaz. ekipler bağımsız çalışır, cuma akşamı "deploy edersem her yer patlar mı" korkusu azalır. (azalır diyorum, bitmez).

dezavantajları (gırgırın bittiği yer):

network cehennemi: eskiden ismet usta'ya "bi karışık kebap" demek yeterdi. şimdi müşteri (request) önce pideciden fiş alır, sonra o fişle dönerciye gider, dönerci tatlıcıya "para geldi mi?" diye sorar... bu dükkanlar arası "alo orda mısın?" (network call) trafiği, ismet usta'nın hantallığını aratabilir. (bkz: latency)

devops mu olduk şimdi?: ismet usta'nın bir dükkanı vardı. şimdi 20 ayrı dükkan (servis) var. bu 20 dükkanın kirasını, elektriğini, suyunu (sunucu yönetimi, logging, monitoring) kim takip edecek? (bkz: kubernetes) "abi ben sadece kod yazacaktım" diyerek girdiğin işte kendini boru döşerken bulursun.

dağıtık veri tutarlılığı (işin en ciddili yeri): (bkz: eventual consistency). müşteri dönercide siparişi iptal etti ama tatlıcı parayı çoktan çektiyse ne olacak? ismet usta'nın tek bir kasası (veritabanı) vardı, şimdi herkesin kendi kasası var. bu kasaları senkronize etmeye çalışırken (bkz: saga pattern) saç dökmek garantidir.

hatayı nerede arayacağız?: müşteri "yemek soğuk geldi" dediğinde, sorun pidecide mi, dönercide mi, yoksa bunları taşıyan kuryede mi (api gateway)? eskiden ismet usta'ya kızardık, şimdi (bkz: distributed tracing) ile dedektifçilik oynamak gerekir.

sonuç olarak: mikroservis mimarisi, cv'ye yazınca çok havalı duran, (bkz: netflix) (bkz: spotify) gibi devlerin kullandığı, ancak "abi bizim e-ticaret sitesine de yapalım" diye yola çıkıp 3 ay sonra 50 servisi yönetemeyerek (bkz: distributed monolith) cehennemini yaşayan ekiplerin de dramıdır.

her derde deva gümüş kurşun değildir. "kodu küçük parçalara bölelim" derken, iletişimi ve yönetimi büyük bir probleme dönüştürme ihtimaliniz yüksektir.

doğru kullanıldığında orkestra, yanlış kullanıldığında "her kafadan bir ses çıkan" düğün salonudur. net.
devamını gör...

bu başlığa tanım girmek için olabilirsiniz.

zaten üye iseniz giriş yapabilirsiniz.

"mikroservis mimarisi" ile benzer başlıklar

normal sözlük'ü kullanarak 3. parti dahil tarayıcı çerezlerinin kullanımına izin vermektesiniz. Daha detaylı bilgi için çerez ve gizlilik politikamıza bakabilirsiniz.

online yazar listesini görmek için lütfen giriş yapın.
zaman tüneli köftehor rehberi portakal normal radyo kütüphane kulüpler renk modu online yazarlar puan tablosu yönetim kadrosu istatistikler iletişim