Mikro hizmetler? Ya da daha doğrusu monolitler?
Mikro hizmetler asılıdır. Bu yüzden uzun sürmez çünkü eleştirmenler rapor eder ve geri döner. Ama bu yardımcı olur mu?
Mikro hizmetler bir sistemi küçük bağımsız dağıtım modüllerine bölün. Alternatif, dağılım monolitleridir. Böylece tüm modüllerle bir bütün olarak uygulama dağıtılacaktır. Dahili olarak, Java paketleri, adlar veya kitapçılar gibi modüllerden dağıtım monolitleri yapılandırılabilir.
Mikro hizmetler şu anda eleştiriyi çekiyor çünkü mikro hizmet sistemi genellikle iyi bir yapıya sahip değil. Ancak mikro hizmetler yalnızca yapının nasıl uygulandığını tanımlar. Yapı ne kadar iyi, modüllerin mikro hizmetler veya klasik modüller olmasına bağlı değildir. Alan (DDD) ve sınırlı bağlam tarafından yönetilen tasarım, iyi bir yapı elde etmek için yararlı tekniklerdir. Mikro hizmetler sayesinde şu anda bir Rönesans yaşıyorsunuz. Mikro hizmetlerin tartışılması DDD ve daha iyi yapılandırılmış bir yazılım üzerinde oluşturulursa, mikro hizmetler modül olarak kullanılırsa veya kullanılmıyorsa, bu başarılı olmadan önemli bir başarıdır.
Monolitler: Çoğunlukla ciddi şekilde yapılandırılmış
Her şeyden, nadiren yapılandırılmış sistemlerin yayılması için bir çözüm olarak dağılım monolitleri, ama benim için saçma görünüyor. Dağıtım monolitleri hakkında birçok inceleme oluşturdum. İncelenen monolitlerin yapıları neredeyse her zaman arzulanan çok şey bıraktı. Benim açıklamam: Modüller arasındaki kaynak koda gizlice giren belirlenmiş bağımlılıklar. Tek istisna, projede bir mimari yönetim aracı veya modülün sınırlarını zorlamak için diğer önlemler kullanılmasıdır. Ancak incelediğim bazı monolitlerde durum böyleydi.
Mikro hizmetlerin kendi kaynak kodu projelerine sahip olduğundan ve mikro hizmetler arasındaki arayüzler uygulandığından, örneğin, artık arayüzler için mikro hizmetler kendilerini bu kadar kolay ima etmez. Sonuçta, başka bir kaynak kodu projesine bağımlılık oluşturmanız ve bir arayüzü yönetmeniz gerekir. Bu, örneğin, başka bir Java paketinin sınıfını kullanmaktan çok daha karmaşıktır. Bu nedenle mikro hizmetlere bölünme, modülün sınırlarına uyumu destekler.
İyi bir yapı ayarlanmışsa, mikro hizmetlerle uygulanabilir. Dağıtım monolitleri, yapıyı kalıcı olarak korumak için daha fazla önlem gerektirir.
Yapının ötesinde
Görünüşe göre bir monolit, bu iki alternatifin en iyi seçimi, daha düşük karmaşıklık nedeniyle bir dağılım monoliti. Yalnızca bir sistemi yönetmek ve teslim etmek gerekir. Ancak mikro hizmetler, gerçek sorunları çözmek için mimari bir yaklaşım olarak oluşturuldu:
- Her mikro hizmet bağımsız olarak dağıtılabilir. Tek bir küçük mikro hizmetin uygulanması, tam bir dağıtım monolitinin dağılımından daha basit ve daha hızlıdır. Risk de azalır çünkü değişiklikler sadece bir mikro hizmeti ve dolayısıyla bir modülü etkilemektedir. Bu nedenle değişiklikler çok büyük değil. Hatalar için daha az seçenek vardır. Mavi/yeşil dağıtım veya kanarya salımı gibi haddeleme değişiklikleri ve stratejiler de mikro hizmetlerin küçük boyutu nedeniyle bir dağıtım monolitinden daha kolaydır. Dağıtım dağılımı için sürekli bir teslimat uygulanmalısa, her zaman mikro hizmetlere kısmi bir geçiş düşünülmeye değer, çünkü bu sürekli dağıtım boru hattının karmaşıklığını önemli ölçüde azaltabilir.
- Teknolojik özgürlük var. Bir sistem uzun vadede daha fazla geliştirilecekse, bir göç daha yeni teknolojiye bağlıdır. Bir dağıtım monoliti durumunda, tüm sistem bir adımla yeni bir teknolojik tabana yerleştirilmelidir. Mikro hizmetler ise ayrı ayrı taşınabilir.
- Her mikro hizmet bir ekip tarafından geliştirilirse, ekipler mikro hizmetleri ve dolayısıyla yeni özellikleri dağıtabilir. Aynı şekilde, büyük ölçüde teknik kararları bağımsız olarak verebilirler. Bu bağımsızlık, ekiplerin çok özerk bir şekilde çalışmasına izin verir. Bu, bir koordinasyon çabasından tasarruf etmek için karmaşık projeler için özellikle hoş karşılanmaktadır.
Mikro hizmetlerin disipling ve dolayısıyla modüllerin desteğinin ana hedefi.
Az ya da çok çaba?
Tabii ki, mikro hizmetler, örneğin testlerde veya operasyonda daha fazla karmaşıklığa yol açar. Bu daha fazla karmaşıklık, daha iyi bir modülerleşme, daha fazla yanıltıcı ve bağımsız dağılıma karşı değerlendirilmelidir. Sonuçta, sadece senaryo için en kolay çözümü temsil ediyorsa mimari bir yaklaşım seçmek mantıklıdır. Mikro hizmetler başlangıçta icat edildi çünkü sadece basit bir çözüm değil, aynı zamanda büyük ekipler ve hızlı dağılım sadece bu şekilde mümkün oldu.
Başından beri, “çok karmaşık” olarak hariç tutulması gereken mikro hizmetler, prensipte dağılım monolitleri kadar yararlıdır. Ve sadece modülerleştirme teknolojisi sorununu sormak değil, her şeyden önce profesyonel bölünmeyi makul bir şekilde uygulamak da önemlidir.
TL; Dr.
Mikro hizmetler ve dağıtım monolitleri birkaç modülerleştirme yaklaşımıdır. Avantajları ve dezavantajları var ve farklı senaryolara uyum sağlıyorlar. Modülerleşme yaklaşımından daha önemli olan, yazılım yapısının iyi olmasıdır.
()