MİCROSERVİCE
Nihat 「 FARZ 」Bu məqalədə sizlər microservices-lər haqqında danişacam. Ümüd edirəmki faydalı olar.
Microservice-dən danışmamışdan qabaq istərdim sizlərə Monolithic Architecture-dan danışım.
Monolithic Architecture
Adını ilk dəfə eşitsənizdə böyük ehtimal sizdə istifadə edirsiniz. Monolithic arxitekturda bütün sistem bir layihənin içərsində olur, yəni sizin bütün layout-larınız modülləriniz tək bir layihədə olur. Bir e-ticarət layihəsi fikirləşin bu layihənin içərsində məshullara aid modüllər, istifadəçi qeydiyyat sistemi modülləri və s. Buradan bu nəticəyə gəlmək olar ki, bütün layihədə istifadə olunan modülləri bir arada saxlayan arxitekturaya Monolithic arxitektura deyilir. Bu arxitekturadan böyük layihələrdə istifadə etdikdə işlər qarışır. Monolithic arxitekturası bütün sistemi paracalamadan bir layihədə tutduğu üçün bir programlaşdırma dilində yazılır. Yəni ki siz Monolithic arxitekturasından istifadə edib bir PHP layihəsi yazdınız və bir müddət sonra işlər böyüdü və siz komandaya yeni əməkdaşlar cəlb etmək məçburiyyətində qaldınız bu halda sizin yalnız PHP bilən birisini işə qəbul etməlisiniz. Digər bir örnək, layihə böyüdükdə siz data analizi etmək istədiz bu halldada məcbur qalıb PHP dilində etməli olacaqsız. Buda o deməkdir ki, PHP dilini əsas məqsədindən kənara çıxırsız. PHP data analizini Python kimi edə bilməz. Hər dilin yaranma səbəbləri və üstün olduğu sahələr var.
Monolithic Arxitekturasının Çatışmazlıqları
Yuxarda da qeyd etdiyim kimi layihəyə yeni əməkdaş cəlb etdikdə mütləq layhə hansı dildə yazılıbsa o dili bilmək məçburiyyətindədir. Yeni gələn əməkdaşa layihəni günlərcə izah etmək və bütün modüllərin nə işə yaradığını öyrətməlisiz.
Bütün sistemin bir layhədə olduğundan kiçik bir bug çıxdıqda bütün sistemə təsir edəcək. Misal olaraq məhsulların listələnməsindəki çıxan bir bug məhsulun səbətə atılmasınada təsir edəcək. Bug-ı aradan qaldırdıqdan sonra məcbur qalacaqsız ki, bütün sistemi yenidən serverə yükləyəsiz. Bu kiçik layihələrdə böyük problem olmasada böyük layihələrdə həm zaman itkisinə həmdə böyük problemlərə yol acacaq.
Git ilə işlədikdə versiyalamada da problemlərə yaşayacaqsınız.
Bütün bu səbəbəbləri və buna bənzər səbəbləridə nəzərə aldıqda
Microservice-lərin niyə günü-gündən məhşurlaşdığı bizə aydın olur.
Microservice Architecture
Microservice arxitekturası tək bir işi görməyə görə məhsuliyyət daşıyır. Yuxarda verdiyimiz örnəkdən davam edək. Məhsullar modülü Monolithic arxitekturada layihənin içində bir modül olaraq istifadə olunurdu ama Microservice-də layihənin özü məhsullar modülündən ibarət olacaq. Yəni məhsullar modülündən istifadə etmək istədikdə biz sadəcə olaraq məhsullar service çağırırıq. Burdanda başa düşüldüyü kimi biz sistemi paracalayırıq və paracaladığımız modülləri istədiyimiz və bizə uyğun programlaşdırma dillərində yaza bilərik. Bu yazdıqlarımızdan belə bir nəticə çıxartmaq olara ki, Microservice-lər kiçik modüllərdən ibarət böyük bir sistemdir.
Microservice Arxitekturasının Faydaları və Çatışmazlıqları
Microservice-lərin faydaları olduğu kimi çatışmazlıqlarıda mövçutdur. İlk öncə faydalarından danışaq.
Hər bir service fərqli dillərdən istifadə edərək yazıla bilər. Buda bizə komandaya müxtəlif dilləri bilən əməkdaşlar cəlb etməyimizə imkan verir.
Hər Microservice-in verilənlər bazası fərqli ola bilər. Bir Microservice MySQL istifadə etdikdə digəri MongoDB istifadə edə bilər.
Hər Microservice bir birindən aslı olmadan inkişaf etdirilə bilər. Yəni siz məhsullar modülünü yazdıqda kateqoriyalar modülünun bitməsini gözləmək məcburiyyətində deyilsiz.
Microservice-lər kiçik modüllər halında olduğu üçün bir modüldə çıxacaq bug-lar digər modüllərin işləməsində heç bir problem çıxarmayacaq
Faydaları olduğu kimi çatışmazlıqlarıda təbii ki var. Ən azından indiyə kimi qarşılaşdığım çatışmazlıqlardan danışacam.
Microservice-lər arasındakı əlaqənin qurulması hər zaman sadə olmaya bilir. Bəzən bir service-dən digərinə göndərilən istəkdən aslı olaraq bir service-dən geç cavab gəlir buda timeout-a səbəb olur.
Çıxan bug-ın hansı microservice-də olduğunu tapmaq asan olmur. Bəzən bütüb service-lərə baxmalı oluruq.
Hosting ödənişləri Monolithic arxitekturasına görə çox bahalı ola bilər. Yəni PHP-də yazılmış bir service ilə Node JS-də yazılmış service eyni hostingdə işləməyəçək. Bunun üçündə hər hansı bir startup-ı microservice-də yazmaq məsləhət deyil.
Microservice-lərə hansı halda üstünlük verməliyəm
Microservice-lərə keçmədən öncə layihənin həcmini və əlimizdəki resursları nəzərə almalıyıq. Yoxsa gələcəkdəki çatışmazlıqlar böyüyəcək.
Aşağdakılar sizə uyğundursa microservice-lərdən istifadə etmək sizə məsləhətdir.
Çox sayda modülüm var və bir layihədə bunları idarə etmək çətinləşir.
Layihəmdən istifadə edəçək istifadəçi sayının böyük olacaqını düşünürəm.
Bir çox dillərdə kod yazan komandam var.
Layihənin inkişafının bir dillə bağlı olmasını istəmirəm
Bu yazımda sizlərə Microservice-lərin nə işə yaradığını azda olsa izah etməyə çalışdım. Oxuduğunuz üçün təşəkkür edirəm