Memarlıq üslubunun seçilməsi (2-cü hissə)

Salam, Habr. Bu gün mən kursun yeni axınının başlaması üçün xüsusi olaraq yazdığım bir sıra nəşrləri davam etdirirəm. "Proqram təminatı memarı".

Giriş

Memarlıq üslubunun seçimi informasiya sisteminin qurulması zamanı əsas texniki qərarlardan biridir. Bu məqalələr silsiləsində mən tikinti tətbiqləri üçün ən populyar memarlıq üslublarını təhlil etməyi və hansı memarlıq üslubunun nə vaxt daha çox üstünlük verdiyi sualına cavab verməyi təklif edirəm. Təqdimat prosesində monolitlərdən mikroservislərə qədər memarlıq üslublarının inkişafını izah edən məntiqi zəncir çəkməyə çalışacağam.

В sonuncu dəfə monolitlə məşğul olduq və belə nəticəyə gəldik ki, monolitin bir sıra problemləri var: ölçü, əlaqə, yerləşdirmə, genişlənmə, etibarlılıq və sərtlik.

Bu dəfə bir sistemin modullar/kitabxanalar dəsti (komponent yönümlü arxitektura) və ya xidmətlər (xidmət yönümlü arxitektura) kimi təşkili imkanlarından danışmağı təklif edirəm.

Komponent yönümlü memarlıq

Komponent yönümlü arxitektura sistemin həm cari, həm də gələcək layihələrdə istifadə oluna bilən komponentlər dəsti kimi icrasını nəzərdə tutur. Sistemi komponentlərə bölərkən aşağıdakılar nəzərə alınır: onların təkrar istifadə oluna bilməsi, dəyişdirilə bilənliyi, kontekstdən müstəqilliyi, genişlənmə qabiliyyəti, kapsulyasiyası və müstəqilliyi.

Komponentlərin düzgün istifadəsi ilə "böyük kir topu" (böyük ölçülü + yüksək birləşmə) problemi həll edilir və komponentlərin özləri həm montaj bölmələri (modullar, kitabxanalar), həm də yerləşdirmə bölmələri (xidmətlər) ola bilər. Yerləşdirmə vahidləri həmişə işləyən prosesə uyğunlaşdırılmır: məsələn, veb tətbiqi və verilənlər bazası birlikdə yerləşdirilir.

Çox vaxt monolitlər modullar dəsti kimi hazırlanır. Bu yanaşma müstəqil inkişafa gətirib çıxarır, lakin müstəqil miqyas və yerləşdirmə, nasazlığa dözümlülük və ümumi texnologiya yığınından müstəqillik problemləri qalmaqdadır. Buna görə də modul qismən müstəqil komponentdir.

Belə bir monolitlə bağlı ən böyük problem modullara bölünmənin sırf məntiqi olması və tərtibatçılar tərəfindən asanlıqla pozula bilməsidir. Tədricən zibilliyə çevrilən əsas modul görünə bilər, modullar arasında asılılıq qrafiki böyüyə bilər və s. Bu cür problemlərin qarşısını almaq üçün inkişaf ya çox yetkin bir komanda tərəfindən, ya da tam zamanlı kod araşdırması ilə məşğul olan və məntiqi quruluşu pozan tərtibatçıların əllərini döyən bir "memarın" rəhbərliyi altında aparılmalıdır.

"İdeal" monolit, hər biri öz verilənlər bazasına baxan məntiqi olaraq ayrılmış modullar toplusudur.

Xidmət yönümlü arxitektura

Sistemin xidmətlər toplusu şəklində təşkil edilməsi nəzərdə tutulursa, o zaman söhbət xidmət yönümlü arxitekturadan gedir. Onun prinsipləri istifadəçi mərkəzli tətbiqlərin qarşılıqlı fəaliyyəti, biznes xidmətlərindən təkrar istifadə, texnologiya yığınının müstəqilliyi və muxtariyyətdir (müstəqil təkamül, genişlənmə və yerləşdirmə).

Xidmət yönümlü arxitektura (SOA = xidmət yönümlü arxitektura) monolitin bütün müəyyən edilmiş problemlərini həll edir: dəyişiklik baş verdikdə yalnız bir xidmət təsirlənir və yaxşı müəyyən edilmiş API komponentlərin yaxşı inkapsulyasiyasını dəstəkləyir.

Ancaq hər şey o qədər də hamar deyil: SOA yeni problemlər yaradır. Uzaqdan zənglər yerli zənglərdən daha bahalıdır və komponentlər arasında vəzifələrin yenidən bölüşdürülməsi əhəmiyyətli dərəcədə bahalaşıb.

Yeri gəlmişkən, müstəqil yerləşdirmə imkanı xidmətin çox vacib xüsusiyyətidir. Əgər xidmətlər birlikdə və ya üstəlik müəyyən ardıcıllıqla yerləşdirilməlidirsə, o zaman sistem xidmət yönümlü hesab edilə bilməz. Bu halda, onlar paylanmış monolit haqqında danışırlar (yalnız SOA baxımından deyil, həm də mikroservis arxitekturası nöqteyi-nəzərindən anti-naxış hesab olunur).

Xidmət yönümlü memarlıq memarlıq ictimaiyyəti və satıcılar tərəfindən yaxşı dəstəklənir. Bu, çoxlu kursların və sertifikatların, yaxşı işlənmiş nümunələrin mövcudluğunu nəzərdə tutur. Sonuncuya, məsələn, tanınmış müəssisə xidməti avtobusu (ESB = müəssisə xidməti avtobusu) daxildir. Eyni zamanda, ESB satıcıların baqajıdır; onun SOA-da istifadə edilməsi mütləq deyil.

Xidmət yönümlü arxitekturanın populyarlığı təxminən 2008-ci ildə zirvəyə çatdı, bundan sonra azalmağa başladı və bu, mikroservislərin meydana çıxmasından sonra (~ 2015) əhəmiyyətli dərəcədə dramatik oldu.

Nəticə

İnformasiya sistemlərinin xidmətlər və modullar şəklində təşkili imkanlarını müzakirə etdikdən sonra mən nəhayət mikroservis arxitekturasının prinsiplərinə keçməyi və növbəti hissədə mikroservis arxitekturası ilə xidmət yönümlü arxitektura arasındakı fərqə xüsusi diqqət yetirməyi təklif edirəm.

Memarlıq üslubunun seçilməsi (2-cü hissə)

Mənbə: www.habr.com

Добавить комментарий