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

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 Monolitle ilgilendik ve monolitin bir dizi sorunu olduğu sonucuna vardık: boyut, bağlantı, dağıtım, ölçeklenebilirlik, güvenilirlik ve sağlamlık.

Bu sefer bir sistemi bir dizi modül/kütüphane (bileşen odaklı mimari) veya hizmetler (hizmet odaklı mimari) olarak organize etmenin olasılıkları hakkında konuşmayı öneriyorum.

Bileşen odaklı mimari

Bileşen odaklı mimari, bir sistemin hem mevcut hem de gelecekteki projelerde kullanılabilecek bir dizi bileşen olarak yürütülmesini içerir. Bir sistemi bileşenlere ayırırken aşağıdakiler dikkate alınır: bunların yeniden kullanılabilirliği, değiştirilebilirliği, bağlamdan bağımsızlığı, genişletilebilirliği, kapsüllenmesi ve bağımsızlığı.

Bileşenlerin doğru kullanımıyla "büyük kir yumağı" (büyük boyut + yüksek bağlantı) sorunu çözülür ve bileşenlerin kendisi hem montaj birimleri (modüller, kitaplıklar) hem de dağıtım birimleri (hizmetler) olabilir. Dağıtım birimleri her zaman çalışan süreçle eşlenmez: örneğin, bir web uygulaması ve bir veritabanı birlikte dağıtılır.

Çoğu zaman monolitler bir dizi modül olarak geliştirilir. Bu yaklaşım bağımsız gelişime yol açar, ancak bağımsız ölçeklendirme ve dağıtım, hata toleransı ve genel teknoloji yığınından bağımsızlık sorunları devam etmektedir. Modülün kısmen bağımsız bir bileşen olmasının nedeni budur.

Böyle bir monolitin en büyük sorunu, modüllere bölünmenin tamamen mantıklı olması ve geliştiriciler tarafından kolayca ihlal edilebilmesidir. Yavaş yavaş bir çöplüğe dönüşen bir çekirdek modül görünebilir, modüller arasındaki bağımlılık grafiği büyüyebilir vb. Bu tür sorunların yaşanmaması için geliştirmenin ya çok olgun bir ekip tarafından ya da tam zamanlı kod incelemesi yapan ve mantıksal yapıyı ihlal eden geliştiricilerin elinden kurtulan bir “mimarın” rehberliğinde gerçekleştirilmesi gerekiyor.

“İdeal” monolit, her biri kendi veritabanına bakan, mantıksal olarak ayrılmış bir dizi modüldür.

Servis Odaklı Mimari

Sistemin bir dizi hizmet şeklinde düzenlenmesi gerekiyorsa hizmet odaklı bir mimariden bahsediyoruz. İlkeleri, kullanıcı merkezli uygulama birlikte çalışabilirliği, iş hizmetlerinin yeniden kullanımı, teknoloji yığınından bağımsızlık ve özerkliktir (bağımsız gelişim, ölçeklenebilirlik ve dağıtım).

Hizmet odaklı mimari (SOA = hizmet odaklı mimari), bir monolitin tanımlanmış tüm sorunlarını çözer: bir değişiklik meydana geldiğinde yalnızca bir hizmet etkilenir ve iyi tanımlanmış bir API, bileşenlerin iyi bir şekilde kapsüllenmesini destekler.

Ancak her şey o kadar da pürüzsüz değil: SOA yeni sorunlar yaratıyor. Uzaktan aramalar yerel aramalardan daha pahalıdır ve sorumlulukların bileşenler arasında yeniden dağıtılması önemli ölçüde daha pahalı hale gelmiştir.

Bu arada, bağımsız dağıtım olasılığı hizmetin çok önemli bir özelliğidir. Hizmetlerin birlikte veya belirli bir sırayla dağıtılması gerekiyorsa, sistem hizmet odaklı olarak değerlendirilemez. Bu durumda, dağıtılmış bir monolitten bahsediyorlar (yalnızca SOA açısından değil, aynı zamanda mikro hizmet mimarisi açısından da bir anti-örüntü olarak kabul ediliyor).

Hizmet odaklı mimari, mimari topluluk ve satıcılar tarafından iyi bir şekilde desteklenmektedir. Bu, birçok kursun ve sertifikanın, iyi geliştirilmiş modellerin varlığını ima eder. İkincisi, örneğin iyi bilinen kurumsal hizmet veriyolunu (ESB = kurumsal hizmet veriyolu) içerir. Aynı zamanda ESB, satıcıların bir bagajıdır; mutlaka SOA'da kullanılması gerekmez.

Hizmet odaklı mimarinin popülaritesi 2008 civarında zirveye ulaştı, ardından azalmaya başladı ve mikro hizmetlerin ortaya çıkmasından sonra (~2015) önemli ölçüde daha dramatik hale geldi.

Sonuç

Bilgi sistemlerini hizmetler ve modüller biçiminde düzenlemenin olanaklarını tartıştıktan sonra, son olarak mikro hizmet mimarisinin ilkelerine geçmeyi ve bir sonraki bölümde mikro hizmet mimarisi ile hizmet odaklı mimari arasındaki farka özellikle dikkat etmeyi öneriyorum.

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

Kaynak: habr.com

Yorum ekle