Mimari stil seçimi (bölüm 3)

Merhaba Habr. Bugün kursun yeni akışının başlangıcı için özel olarak yazdığım bir yayın serisine devam ediyorum. "Yazılım mimarı".

Giriş

Mimari tarzın seçimi, bir bilgi sistemi oluştururken temel teknik kararlardan biridir. Bu yazı dizisinde, bina uygulamaları için en popüler mimari tarzları analiz etmeyi ve hangi mimari tarzın en çok tercih edildiği sorusuna cevap vermeyi öneriyorum. Sunum sürecinde mimari tarzların monolitlerden mikro hizmetlere kadar gelişimini açıklayan mantıksal bir zincir çizmeye çalışacağım.

Geçen sefer farklı monolit türlerinden ve bunları inşa etmek için bileşenlerin (hem yapı bileşenleri hem de dağıtım bileşenleri) kullanımından bahsetmiştik. Hizmet odaklı mimariyi anlıyoruz.

Şimdi nihayet bir mikro hizmet mimarisinin temel özelliklerini tanımlayacağız.

Mimarlık ilişkisi

Önceki yazılarda verilen tanımlara göre her hizmetin bir bileşen olduğunu ancak her hizmetin bir mikro hizmet olmadığını anlamak gerekir.

Mikro Hizmet Mimarisinin Özellikleri

Mikro hizmet mimarisinin temel özellikleri şunlardır:

  • İş Yetenekleri etrafında düzenlenmiştir
  • Proje Değil Ürünler
  • Akıllı uç noktalar ve aptal kanallar
  • Merkezi Olmayan Yönetişim
  • Merkezi Olmayan Veri Yönetimi
  • Altyapı Otomasyonu
  • Başarısızlık için tasarım
  • Evrimsel gelişim gösteren mimari (Evrimsel Tasarım)

1. nokta hizmet odaklı mimariden geliyor çünkü mikro hizmetler hizmetlerin özel bir durumudur. Diğer noktalar ayrı bir değerlendirmeyi hak ediyor.

İş Yetenekleri etrafında düzenlenmiştir

Şimdi Conway yasasını hatırlamak gerekiyor: Sistemler yaratan organizasyonlar, bu organizasyonlar içindeki etkileşim yapısını kopyalayarak kendi mimarisini düzenlerler. Örnek olarak, bir derleyici oluşturma durumunu hatırlayabiliriz: Yedi kişilik bir ekip, yedi geçişli bir derleyici geliştirdi ve beş kişilik bir ekip, beş geçişli bir derleyici geliştirdi.

Monolitlerden ve mikro hizmetlerden bahsediyorsak, geliştirme işlevsel departmanlar (arka uç, ön uç, veritabanı yöneticileri) tarafından organize ediliyorsa, klasik bir monolit elde ederiz.

Mikro hizmetleri elde etmek için ekiplerin iş kapasitesine (siparişler, sevkiyatlar, katalog ekibi) göre organize edilmesi gerekir. Bu organizasyon ekiplerin uygulamanın belirli bölümlerini oluşturmaya odaklanmasına olanak tanıyacak.

Proje Değil Ürünler

Bir ekibin geliştirilen işlevselliği diğer ekiplere aktardığı bir proje yaklaşımı, mikro hizmet mimarisi söz konusu olduğunda kesinlikle uygun değildir. Ekip, yaşam döngüsü boyunca sistemi desteklemelidir. Mikro hizmetlerin uygulanmasında liderlerden biri olan Amazon şunları söyledi: "Siz inşa edin, siz çalıştırın." Ürün yaklaşımı ekibin işin ihtiyaçlarını hissetmesine olanak tanır.

Akıllı uç noktalar ve aptal kanallar

SOA mimarisi, başta Enterprise Service Bus olmak üzere iletişim kanallarına büyük önem verdi. Bu genellikle Hatalı Spagetti Kutusuna yol açar, yani monolitin karmaşıklığı, hizmetler arasındaki bağlantıların karmaşıklığına dönüşür. Mikro hizmet mimarisi yalnızca basit iletişim yöntemlerini kullanır.

Merkezi Olmayan Yönetişim

Mikro hizmetlerle ilgili temel kararlar, mikro hizmetleri geliştiren kişiler tarafından alınmalıdır. Burada önemli kararlar seçimler anlamına gelir
programlama dilleri, dağıtım metodolojisi, genel arayüz sözleşmeleri vb.

Merkezi Olmayan Veri Yönetimi

Uygulamanın tek bir veritabanına dayandığı standart yaklaşım, her bir hizmetin özelliklerini dikkate alamaz. MSA, çeşitli teknolojilerin kullanımı da dahil olmak üzere merkezi olmayan veri yönetimini içerir.

Altyapı Otomasyonu

MSA sürekli dağıtım ve dağıtım süreçlerini destekler. Bu ancak süreçlerin otomatikleştirilmesiyle başarılabilir. Aynı zamanda çok sayıda hizmetin dağıtılması artık korkutucu görünmüyor. Dağıtım süreci sıkıcı hale gelmelidir. İkinci husus, ürün ortamındaki hizmet yönetimiyle ilgilidir. Otomasyon olmadan farklı işletim ortamlarında çalışan süreçleri yönetmek imkansız hale gelir.

Başarısızlık için tasarım

Çok sayıda MSA hizmeti başarısızlığa eğilimlidir. Aynı zamanda dağıtılmış bir sistemde hata yönetimi önemsiz bir iş değildir. Uygulama mimarisinin bu tür hatalara karşı dayanıklı olması gerekir. Rebecca Parsons artık hizmetler arasında süreç içi iletişimi kullanmamamızın çok önemli olduğunu düşünüyor; bunun yerine iletişim için neredeyse hiç güvenilir olmayan HTTP'ye başvuruyoruz.

Evrimsel gelişim gösteren mimari (Evrimsel Tasarım)

MSA sisteminin mimarisi evrimsel olarak gelişmelidir. Gerekli değişikliklerin tek bir hizmetin sınırlarıyla sınırlandırılması tavsiye edilir. Diğer hizmetler üzerindeki etki de dikkate alınmalıdır. Geleneksel yaklaşım bu sorunu sürüm oluşturmayla çözmeye çalışmaktır ancak MSA, sürüm oluşturmanın
Son çare olarak.

Sonuç

Yukarıdakilerin hepsinden sonra mikro hizmetlerin ne olduğunu formüle edebiliriz. Mikro hizmet mimarisi, her biri kendi sürecinde çalışan ve genellikle bir HTTP kaynak API'si olan hafif mekanizmalar aracılığıyla etkileşime giren küçük hizmetlerden oluşan bir koleksiyon olarak tek bir uygulamayı geliştirmeye yönelik bir yaklaşımdır. Bu hizmetler iş yetenekleri üzerine kurulmuştur ve tam olarak kullanılarak bağımsız olarak dağıtılabilir.
otomatik dağıtım mekanizması. Farklı programlama dillerinde yazılabilen ve farklı veri depolama teknolojilerini kullanan bu hizmetlerin minimum düzeyde merkezi yönetimi vardır.

Mimari stil seçimi (bölüm 3)

2. bölümü okuyun

Kaynak: habr.com

Yorum ekle