Yaklaşık bir hafta önce, “Mükemmel (Mikro) Hizmet Mimarisi için 12 Kural” hakkında birçok geri bildirim aldığım bir blog yazısı yazdım. İçinde, son yıllarda mikro hizmetlerin anlayışı, tasarımı ve geliştirilmesi için olduğu kanıtlanmış on iki kural sundum. Ben de çok net dedim ki: “Kilometreniz değişebilir”, İyi Almanca: Bu kurallar için bu kurallar biz Size, ekibinize ve ihtiyaçlarınıza aktarıldığınız gerçeğinden çok uzaktır.
Ayrıca, mikro hizmetlerin tek gerçek mimari yaklaşım olduğunu söylemedim. Ancak Microservice Mimarisi hakkındaki bir blog yazısında, doğal olarak metnin esas olarak mikro hizmetlerin gebe kalması, tasarımı ve geliştirilmesi ile ilgili olan veya en azından gelecekle ilgilenen kişiler tarafından okunduğunu varsayıyorum.
Golo Roden, yerel web GmbH'nin kurucusu ve CTO'sudur. Olaylara ve hizmetlere dayalı olarak dağıtılmış mimarilere özellikle dikkat ederek web ve bulut uygulamalarının ve arıların anlayışı ve geliştirilmesi ile ilgilidir. Yol gösterici ilkesi, yazılımın gelişiminin kendi başına bir son olmaması, ancak her zaman aşağıda bir profesyonellik izlemesi gerektiğidir.
Dikkatli olun, dikkatli olun! Lütfen, mikro hizmetlerden uzak durun!
Bu nedenle, yorumların yaklaşık yarısının burada Haberler geliştiricisi, YouTube'da, e-posta ile veya kişisel bir konuşmada olması nedeniyle şaşırdım: Mikro hizmetlerin kendisinin kullanımı sorgulanmalıdır: evet, tüm türü yapabilirsiniz, ancak öncelikle mikro hizmetlerin iyi bir fikir olup olmadığını sorgulamanız gerekir. Şaşırdım çünkü bir yandan, uygunluk için önceden bir mimari ilkeyi kontrol ettiğinizi ve blog yazısının konusunun aynı soru olmadığını söylüyorum.
Önerilen editoryal içerik
Rızanızla, burada harici bir YouTube videosu (Google Ireland Limited) burada davet edilir.
YouTube videosu her zaman yüklenir
YouTube videosu artık yüklüyor
Çünkü mikro hizmetler projenizi mahvedebilir
Görünüşe göre mikro hizmetlerin kullanımını uyarmak gerekiyor, çünkü bu “zaten kötü deneyimler yaşadı”. Aynı şey genellikle tablonun altında monolitler, istemci sunucuları veya eşler arası gibi diğer mimari yaklaşımlar için de geçerlidir. Mikro hizmetlerden bahsetmek için bu reaksiyonu sık sık denediğimi ilginç buluyorum. Dahası, bir veya diğerinin aslında mikro hizmetlerle ilgili kötü deneyimleri olduğunu inkar etmekten hoşlanmıyorum: Sadece sadece mikro hizmetlere sahip araçlarla böyle olduğuna şaşırdım.
Bu yüzden mikro hizmetlerin ne zaman iyi olduğu ve ne zaman kötü bir fikir oldukları hakkında sorunun sorulmasının yararlı olabileceğini düşündüm. Başka bir deyişle, bir projenin aslında bir şişeye girmemesi için mikro hizmetlere güvenmeden önce hangi yönlere düşünmeye değer?
Ve bu arada, birisi Amazon'un şimdi Microservice olmadan yapacağını iddia etmeden önce: Bu sesi bir süre önce yorumladım. Bu konuyu eklemek istiyorsanız, “Mikro hizmetler aptalca – Amazon diyor?!” İLE.
Konu no. 1: mimarinin karmaşıklığı
Şimdi mikro hizmetlere karşı sık sık bahsedilen ilk konuya, yani mimarinin önemli ölçüde daha yüksek karmaşıklığına geliyoruz. Tanım gereği, mikro hizmetler dağıtılmış bir mimaridir, bu nedenle hizmet tabanlı bir uygulama dağıtılmış bir sistemdir. Amerikan Bilgisayar Bilimcisi Andrew S. Tantnbaum bir sistemi aşağıdaki gibi tanımladı:
“Dağıtılmış bir sistem, kendilerini kullanıcı için tek bir sistem olarak sunan bağımsız bir bilgisayar ilişkisidir.”
Aslında, bu tanımın mizahi bir modifikasyonu da var, yani:
“Dağıtılmış bir sistem, yapması gereken şeyi yapmayan bir sistemdir, çünkü bilmediğiniz bir bilgisayar var ya da hiç de önemlidir.”
Ancak eğlence dışında: dağıtılmış sistemlerin teknik açıdan dağıtılmamış sistemlerden daha karmaşık olduğu açıktır. Bu esas olarak, ilgili taraflar arasındaki iletişim ile ilgili sorunlarla, yani tutarlılık, senkronizasyon, kullanılabilirlik ve benzeri konularla ilgilidir.
Bu bağlamda, (basitçe söyleyen) söyleyen So -Capt Teorem: Dağıtılmış bir sistemde ağın bir iflası meydana gelirse (bu “P”) (bu “P” e karşılık gelir), o zaman tutarlılığı (yani “C”) veya kullanılabilirliği (yani kullanılabilirliği “korumak isteyip istemediğinizi seçebilirsiniz). Her ikisi de mümkün değil.
Bu, dağıtılmış sistemlerle tutarlılık ve kullanılabilirlik ile nasıl başa çıkılacağı hakkında daha fazla düşünmeniz gerektiği anlamına gelir, bu da çok fazla bilgi ve deneyim gerektirir. Her şeyden önce, dağıtılmış bir sistem için buna ihtiyacınız var, yani bir sistemi dağıtılmış bir sistem olarak tasarlamak istediğiniz iyi bir neden. Bunu yapmamalısınız çünkü “ilginç görünüyor” veya “güzel görünüyor”.
Muhtemelen bir sistemi dağıtılmış bir sistem olarak tasarlamak istemenin ana nedeni (ve ayrıca bireysel parçalar arasında, teknik, örgütsel ve her şeyden önce teknikte yüksek düzeyde bağımsızlıkla çabalayan (ve Andrew S. Tantnbaum'un tanımında). Buna ek olarak, bir teknolojinin, mikro hizmetlerle daha hedefli dağıtılmış bir sistemi yeniden boyutlandırmanın daha fazla esneklik ve daha iyi uyarlanabilirlik elde edeceğiniz gerçeğiyle sistematik olarak alakalı olmak istemediği de söylenir, ancak bağımsızlık dağıtılmış sistemlerin arkasındaki itici güçtür. Ve eğer bu gerekli değilse, daha merkezi bir yaklaşım muhtemelen daha uygundur.
Bu nedenle, kendinize şu soruyu sormalısınız: Teknik, örgütsel ve her şeyden önce profesyonel bağımsızlığa ihtiyacınız var mı?
Konu no. 2: Dağıtım ve Altyapı
Mikro hizmetlere, yani dağıtım ve altyapıya karşı sıklıkla bahsedilen ikinci argümana geliyoruz. Mikro hizmetlerin daha karmaşık dağılımlar olduğu açıktır, çünkü en azından dağıtılması daha fazla olduğu için. Tabii ki, tek bir gövdeli tek bir sunucuda çalışan basit bir monolitin XCOY dağılımı önemli ölçüde daha basittir.
Bununla birlikte, mikro hizmetlerin dağılımı, uygulamadan tamamen bağımsız olarak her zaman çok benzer bir şekilde çalışır. Bu, “çubuktan hazır” bilgiyi kolayca satın alabileceğiniz anlamına gelir. Ne de çok deneyimlemeniz ya da çok şey keşfetmeniz gerekmiyor: sadece zaten bunu yapan ve ilgili teknolojilere aşina olan birine ihtiyacı var. Yani, her şeyden önce: kaplar, belgeler ve kubernes.
Şahsen, bu konu beni gerçekten ikna etmiyor, çünkü evet, karmaşıklık daha yüksek, ancak dikkat çekici değil – ve aksine, bireysel hizmetlerin profesyonelliğinde çok daha düşük bir karmaşıklık elde ediyorum. Bu, her hizmetin geliştirilmesinin daha kolay olduğu anlamına gelir çünkü çok daha küçük ve daha yönetilebilir. Ve bu, raftan satın alamadığım nokta olduğu için, tasarruf, ek maliyetlerin dağılımında potansiyel olarak sahip olduğumdan daha değerli. Çünkü evet, bir yandan, basit, standartlaştırılmış ve her zaman aynı görev biraz daha karmaşık hale gelir, ancak zor, talep eden, zaman ve bireysel tüketen şeylerde çok daha düşük bir karmaşıklık elde edersiniz. Ve kişisel olarak benim için kişisel olarak mükemmel bir ticaret gibi geliyor.
Tabii ki, bu karşı argüman konteynerizasyon, Docker, Kubernetes & Co.'nun makul derecede tanıdık olduğu varsayımına dayanmaktadır. Bugün Shell'in senaryoları ile hala elinde olan herkes, mikro hizmetlerin verimli verimliliği konusunda zorluk çekecektir. Bununla birlikte, deneyim bunun diğer tüm dağıtım türleri için de geçerli olduğunu göstermektedir. Concerization & Co. aslında siz ve ekibiniz için yeni bir bölge olmalı, o zaman bu, en azından web ve bulut alanında çalışıyorsanız, değiştirmeniz gereken bir şeydir. Bir giriş olarak, bazı devam filmleri ve Kubernetes için ayrı bir derin daldırma olan Derin Free Docker daldırmamızı önerebilirim.
Ayrıca, mikro hizmetlerin tek gerçek mimari yaklaşım olduğunu söylemedim. Ancak Microservice Mimarisi hakkındaki bir blog yazısında, doğal olarak metnin esas olarak mikro hizmetlerin gebe kalması, tasarımı ve geliştirilmesi ile ilgili olan veya en azından gelecekle ilgilenen kişiler tarafından okunduğunu varsayıyorum.

Golo Roden, yerel web GmbH'nin kurucusu ve CTO'sudur. Olaylara ve hizmetlere dayalı olarak dağıtılmış mimarilere özellikle dikkat ederek web ve bulut uygulamalarının ve arıların anlayışı ve geliştirilmesi ile ilgilidir. Yol gösterici ilkesi, yazılımın gelişiminin kendi başına bir son olmaması, ancak her zaman aşağıda bir profesyonellik izlemesi gerektiğidir.
Dikkatli olun, dikkatli olun! Lütfen, mikro hizmetlerden uzak durun!
Bu nedenle, yorumların yaklaşık yarısının burada Haberler geliştiricisi, YouTube'da, e-posta ile veya kişisel bir konuşmada olması nedeniyle şaşırdım: Mikro hizmetlerin kendisinin kullanımı sorgulanmalıdır: evet, tüm türü yapabilirsiniz, ancak öncelikle mikro hizmetlerin iyi bir fikir olup olmadığını sorgulamanız gerekir. Şaşırdım çünkü bir yandan, uygunluk için önceden bir mimari ilkeyi kontrol ettiğinizi ve blog yazısının konusunun aynı soru olmadığını söylüyorum.
Önerilen editoryal içerik
Rızanızla, burada harici bir YouTube videosu (Google Ireland Limited) burada davet edilir.
YouTube videosu her zaman yüklenir
YouTube videosu artık yüklüyor
Çünkü mikro hizmetler projenizi mahvedebilir
Görünüşe göre mikro hizmetlerin kullanımını uyarmak gerekiyor, çünkü bu “zaten kötü deneyimler yaşadı”. Aynı şey genellikle tablonun altında monolitler, istemci sunucuları veya eşler arası gibi diğer mimari yaklaşımlar için de geçerlidir. Mikro hizmetlerden bahsetmek için bu reaksiyonu sık sık denediğimi ilginç buluyorum. Dahası, bir veya diğerinin aslında mikro hizmetlerle ilgili kötü deneyimleri olduğunu inkar etmekten hoşlanmıyorum: Sadece sadece mikro hizmetlere sahip araçlarla böyle olduğuna şaşırdım.
Bu yüzden mikro hizmetlerin ne zaman iyi olduğu ve ne zaman kötü bir fikir oldukları hakkında sorunun sorulmasının yararlı olabileceğini düşündüm. Başka bir deyişle, bir projenin aslında bir şişeye girmemesi için mikro hizmetlere güvenmeden önce hangi yönlere düşünmeye değer?
Ve bu arada, birisi Amazon'un şimdi Microservice olmadan yapacağını iddia etmeden önce: Bu sesi bir süre önce yorumladım. Bu konuyu eklemek istiyorsanız, “Mikro hizmetler aptalca – Amazon diyor?!” İLE.
Konu no. 1: mimarinin karmaşıklığı
Şimdi mikro hizmetlere karşı sık sık bahsedilen ilk konuya, yani mimarinin önemli ölçüde daha yüksek karmaşıklığına geliyoruz. Tanım gereği, mikro hizmetler dağıtılmış bir mimaridir, bu nedenle hizmet tabanlı bir uygulama dağıtılmış bir sistemdir. Amerikan Bilgisayar Bilimcisi Andrew S. Tantnbaum bir sistemi aşağıdaki gibi tanımladı:
“Dağıtılmış bir sistem, kendilerini kullanıcı için tek bir sistem olarak sunan bağımsız bir bilgisayar ilişkisidir.”
Aslında, bu tanımın mizahi bir modifikasyonu da var, yani:
“Dağıtılmış bir sistem, yapması gereken şeyi yapmayan bir sistemdir, çünkü bilmediğiniz bir bilgisayar var ya da hiç de önemlidir.”
Ancak eğlence dışında: dağıtılmış sistemlerin teknik açıdan dağıtılmamış sistemlerden daha karmaşık olduğu açıktır. Bu esas olarak, ilgili taraflar arasındaki iletişim ile ilgili sorunlarla, yani tutarlılık, senkronizasyon, kullanılabilirlik ve benzeri konularla ilgilidir.
Bu bağlamda, (basitçe söyleyen) söyleyen So -Capt Teorem: Dağıtılmış bir sistemde ağın bir iflası meydana gelirse (bu “P”) (bu “P” e karşılık gelir), o zaman tutarlılığı (yani “C”) veya kullanılabilirliği (yani kullanılabilirliği “korumak isteyip istemediğinizi seçebilirsiniz). Her ikisi de mümkün değil.
Bu, dağıtılmış sistemlerle tutarlılık ve kullanılabilirlik ile nasıl başa çıkılacağı hakkında daha fazla düşünmeniz gerektiği anlamına gelir, bu da çok fazla bilgi ve deneyim gerektirir. Her şeyden önce, dağıtılmış bir sistem için buna ihtiyacınız var, yani bir sistemi dağıtılmış bir sistem olarak tasarlamak istediğiniz iyi bir neden. Bunu yapmamalısınız çünkü “ilginç görünüyor” veya “güzel görünüyor”.
Muhtemelen bir sistemi dağıtılmış bir sistem olarak tasarlamak istemenin ana nedeni (ve ayrıca bireysel parçalar arasında, teknik, örgütsel ve her şeyden önce teknikte yüksek düzeyde bağımsızlıkla çabalayan (ve Andrew S. Tantnbaum'un tanımında). Buna ek olarak, bir teknolojinin, mikro hizmetlerle daha hedefli dağıtılmış bir sistemi yeniden boyutlandırmanın daha fazla esneklik ve daha iyi uyarlanabilirlik elde edeceğiniz gerçeğiyle sistematik olarak alakalı olmak istemediği de söylenir, ancak bağımsızlık dağıtılmış sistemlerin arkasındaki itici güçtür. Ve eğer bu gerekli değilse, daha merkezi bir yaklaşım muhtemelen daha uygundur.
Bu nedenle, kendinize şu soruyu sormalısınız: Teknik, örgütsel ve her şeyden önce profesyonel bağımsızlığa ihtiyacınız var mı?
Konu no. 2: Dağıtım ve Altyapı
Mikro hizmetlere, yani dağıtım ve altyapıya karşı sıklıkla bahsedilen ikinci argümana geliyoruz. Mikro hizmetlerin daha karmaşık dağılımlar olduğu açıktır, çünkü en azından dağıtılması daha fazla olduğu için. Tabii ki, tek bir gövdeli tek bir sunucuda çalışan basit bir monolitin XCOY dağılımı önemli ölçüde daha basittir.
Bununla birlikte, mikro hizmetlerin dağılımı, uygulamadan tamamen bağımsız olarak her zaman çok benzer bir şekilde çalışır. Bu, “çubuktan hazır” bilgiyi kolayca satın alabileceğiniz anlamına gelir. Ne de çok deneyimlemeniz ya da çok şey keşfetmeniz gerekmiyor: sadece zaten bunu yapan ve ilgili teknolojilere aşina olan birine ihtiyacı var. Yani, her şeyden önce: kaplar, belgeler ve kubernes.
Şahsen, bu konu beni gerçekten ikna etmiyor, çünkü evet, karmaşıklık daha yüksek, ancak dikkat çekici değil – ve aksine, bireysel hizmetlerin profesyonelliğinde çok daha düşük bir karmaşıklık elde ediyorum. Bu, her hizmetin geliştirilmesinin daha kolay olduğu anlamına gelir çünkü çok daha küçük ve daha yönetilebilir. Ve bu, raftan satın alamadığım nokta olduğu için, tasarruf, ek maliyetlerin dağılımında potansiyel olarak sahip olduğumdan daha değerli. Çünkü evet, bir yandan, basit, standartlaştırılmış ve her zaman aynı görev biraz daha karmaşık hale gelir, ancak zor, talep eden, zaman ve bireysel tüketen şeylerde çok daha düşük bir karmaşıklık elde edersiniz. Ve kişisel olarak benim için kişisel olarak mükemmel bir ticaret gibi geliyor.
Tabii ki, bu karşı argüman konteynerizasyon, Docker, Kubernetes & Co.'nun makul derecede tanıdık olduğu varsayımına dayanmaktadır. Bugün Shell'in senaryoları ile hala elinde olan herkes, mikro hizmetlerin verimli verimliliği konusunda zorluk çekecektir. Bununla birlikte, deneyim bunun diğer tüm dağıtım türleri için de geçerli olduğunu göstermektedir. Concerization & Co. aslında siz ve ekibiniz için yeni bir bölge olmalı, o zaman bu, en azından web ve bulut alanında çalışıyorsanız, değiştirmeniz gereken bir şeydir. Bir giriş olarak, bazı devam filmleri ve Kubernetes için ayrı bir derin daldırma olan Derin Free Docker daldırmamızı önerebilirim.