Bir problemim var. Microservices kullanalım! Şimdi 13 dağıtılmış sorunum var.
Sisteminizi kapsüllenmiş, yapışkan ve ayrıştırılmış bileşenlere ayırmak iyi bir fikirdir. Farklı problemleri ayrı ayrı ele almanıza izin verir. Ancak bunu yekpare bir dağıtımda mükemmel şekilde yapabilirsiniz (bkz. Fowler: Microservice Premium ). Ne de olsa, OOP'un yıllardır öğrettiği şey bu! Bileşenlerinizi mikro hizmetlere dönüştürmeye karar verirseniz, mimari bir avantaj elde edemezsiniz. Teknoloji seçimi konusunda bir miktar esneklik kazanıyorsunuz ve muhtemelen (ancak zorunlu değil!) Bir miktar ölçeklenebilirlik elde ediyorsunuz. Ancak, (a) sistemin dağınık doğasından ve (b) bileşenler arasındaki iletişimden kaynaklanan bazı baş ağrıları garanti edilir. Mikro hizmetlerin seçilmesi, bu sorunlara rağmen mikro hizmetleri kullanmaya istekli olmanız için baskı yapan başka sorunlarınız olduğu anlamına gelir.
Temiz bir şekilde bileşenlere bölünmüş bir monolit tasarlayamıyorsanız, bir mikro hizmet sistemi tasarlayamazsınız. Yekpare bir kod tabanında, ağrı oldukça belirgin olacaktır. İdeal olarak, kod çok bozuksa derlenmeyecektir. Ancak mikro hizmetlerde, her hizmet ayrı ayrı, muhtemelen farklı dillerde bile geliştirilebilir. Bileşenlerin etkileşimindeki herhangi bir sorun, siz bileşenlerinizi bütünleştirene kadar belli olmaz ve bu noktada genel mimariyi düzeltmek için çok geç.
No 1 hata kaynağı, arabirim uyuşmazlığıdır. Eksik bir parametre gibi göze batan hatalar veya bir hata kodunu kontrol etmeyi unutmak veya bir yöntemi çağırmadan önce bir ön koşulu kontrol etmeyi unutmak gibi daha ince örnekler olabilir. Statik yazma, bu tür sorunları olabildiğince erken tespit eder: IDE'nizde ve derleyicide, kod çalıştırılmadan önce . Dinamik sistemlerde bu lüks yoktur. Bu hatalı kod yürütülene kadar patlamaz.
Mikro hizmetler için uygulamalar korkunçtur. Mikro servisler doğal olarak dinamiktir. Resmi bir hizmet açıklama diline geçmezseniz, arayüz kullanımınızın herhangi bir doğruluğunu doğrulayamazsınız. test et, test et, test et! Ancak testler pahalıdır ve genellikle ayrıntılı değildir; bu, üretimde problemlerin hala mevcut olabileceği ihtimalini bırakır. Bu problem ne zaman ortaya çıkacak? Yalnızca bu hatalı yol alındığında, çalışma zamanında, üretimde. Ürün meselelerinin daha hızlı geri bildirime yol açacağı fikrihilariously tehlikeli bir şekilde yanlış, eğer veri kaybı olasılığınızla eğlenmiyorsanız.