Tural Əsgər

Share this post

Kod yazmaq və software yaratmaq fərqli şeylərdir

turalasgaraz.substack.com

Discover more from Tural Əsgər

Həftə sonu emaildə görüşərik. 🤝
Over 6,000 subscribers
Continue reading
Sign in

Kod yazmaq və software yaratmaq fərqli şeylərdir

Kod yazmaq üçün xeyli resurs var, lakin bütöv software yaratmaq haqqında isə yox dərəcəsindədir.

Tural Asgar
Jul 29, 2023
9
Share this post

Kod yazmaq və software yaratmaq fərqli şeylərdir

turalasgaraz.substack.com
7
Share

Dokumentasiyanı oxuyaraq müəyyən proqramlaşdırma dilinin və texnologiyanın necə işlədiyini başda müəyyən qədər öyrənə bilərsən.
Amma onların milyonlarla istifadəçi tərəfindən istifadə edilən proqramda tətbiqi ilə bağlı məhdud sayda informasiyaya rast gəlirsən.

"React"ın necə öyrənilməsi ilə bağlı çoxlu "Reacta necə başlamalı" başlıqlı məqalələr tapa bilərsən, lakin irimiqyaslı bir proqramın strukturunu necə qurmaqla bağlı çox az məlumat tapa biləcəksən.
Express freymvörkü haqqında yüzlərlə resurs var, lakin onların hamısı eyni MVC strukturuna fokuslanıb.
Serverless istifadə edərək hansısa kiçik problemi həll etməklə bağlı çoxlu məqalə tapa bilərsən, lakin bütöv “cloud application” yaratmaqla bağlı demək olar ki, yox kimidir.

Yazdıqlarım xoşuna gəlirsə, həftəlik bülletenimə abunə ola bilərsən

Beləliklə ən yaxşı arxitekturanı axtarıb tapmaq hər şirkətin öz üzərinə düşür.
Hər problem bir-birindən bu və ya digər şəkildə fərqləndiyinə görə bir şirkət üçün işləyən həll, digəri üçün işə yaramaya bilir.
Bütün bunlara baxmayaraq hər bir texniki komandanın üzləşdiyi ortaq problemlər var ki, bunlar arasında scalability, code structure, state management, abstraction və s. var.
Təəssüf ki, hansısa səbəbdən biz bütün bu sadaladıqlarıma bir-bir toxunaraq sonda hamısını bir yerə cəmləyib bütöv bir “software”nin necə ərsəyə gətirildiyini izah edən resursa demək olar ki, rast gəlmirik.

Dövriyyəsi milyardlarla olan kompüter istehsalçısı şirkət 18 ay müddətində yazılan proqramı tullamalı oldu.

Başda sistem bir-biri ilə fərqli və qarışıq formada əlaqə yaradan ayrı-ayrı monolit proqramlardan - sales, CRM, catalog, orders, shipment, returns və s. ibarət idi.
ASP.NET Web Forms ilə yazılan bu sistem 15 il idi ki, prodakşnda idi və il ərzində milyardlarla dollar dövriyyə edirdi.
Hətta “Black friday” vaxtı bir günə milyonlarla sifarişi həyata keçirirdi.
Bütün modullar bir-biri ilə çox qarışıq formada əlaqə yaratdığına görə hansısa kiçik dəyişikliyi belə etmək mümkünsüz idi.

Həmin dövrdə trend olan “service-oriented approach” və “microservices” haqqında bəh-bəhli bloqlardan məlumat əldə edən şirkət qərara gəlir ki, yeni “software” yaratmağın vaxtı gəlib.
Çox çək-çevirdən sonra “Netflix-oriented architecture” şirkətin üzərində dayandığı yanaşma oldu.
Yəni, sorğu bir nöqtədən daxil olur və çoxlu kiçik servislər hərəsi öz işini görür.
Nəzəriyyədə hər şey əla görünürdü.
18 ay qızğın işin sonunda hamı bir araya gəlib servisləri bir yerə yığıb proqramı işə saldılar və sifariş yerləşdirməyə çalışdılar.

Proqram ümumiyyətlə işləmirdi.

Bu necə ola bilərdi?
Bu mikroservis arxitekturasını hazırlamağa 18 ay vaxt sərf olunmuşdu, baxmayaraq ki, 18 ay və mikro sözləri bir-birinə çox yaddır.
200-ə yaxın servis var idi.
Servislər biri o birini çağırırdı, o servis də başqa birini, o isə öz növbəsində başqa birini və bu minvalla davam edirdi.
Ən yaxşı halda bir sorğunun 150 ms çəkdiyini götürsək və 200 * 150ms = 30 saniyə, anormal da olsa 30 saniyəyə proqram cavab verməli idi.
Lakin bu belə baş vermirdi, çünki servislər bir-birindən asılı idi və ehtimal nəzəriyyəsinə görə bütün servislərin eyni anda düzgün işləməsi mümkünsüz kimi idi.
Ona görə də 1 servisdə belə problem olsa, bütün sistem işləmirdi.
Problem onda idi ki, hər bir developerin notbukunda öz yazdığı servislər çox yaxşı işləyirdi.
Çünki onlar üzərində işlədiyi servisin asılı olduğu digər servislərin fake formasını düzəldib ona sorğu göndərib cavabı alıb işlərinə davam edirdilər.
Reallıqda isə bir servisin asılı olduğu digər servis işləməyə və beləliklə ondan asılı olan servis sonsuza qədər gözləyə bilər.
Təbii ki, burada dövrəqırıcı, SLA və s. istifadə olunmalı idi.

Bu hekayə mənə köhnə Azərbaycan filmlərindən bir epizodu xatırlatdı. 🙂

— Başa düşdün?
— Ayrı-ayrılıqda hə, amma bir yerdə yox.

Beləliklə, hər möhtəşəm görünən həll bütün hallarda keçərli olmaya bilər.
Bir hal üçün ideal olan yanaşma, digər hal üçün ümumiyyətlə işləməyə bilər.
Hər yeni yanaşmanı dərinliyini bilmədən dəbdədir deyə kor-koranə tətbiq etmək isə sonda bu cür fəlakətlə nəticələnə bilər.

Sizə maraqlı gəldisə, dostlarınıza da maraqlı gələ bilər.
Bülleteni onlarla paylaşsanız, məni sevindirmiş olarsınız.

Refer a friend

Bu həm də məqalədir və paylaşa bilərsiniz.

Share

Haqqımda öyrənmək və əlaqə saxlamaq üçün 👉 www.turalasgar.com

9
Share this post

Kod yazmaq və software yaratmaq fərqli şeylərdir

turalasgaraz.substack.com
7
Share
Previous
Next
7 Comments
Share this discussion

Kod yazmaq və software yaratmaq fərqli şeylərdir

turalasgaraz.substack.com
Elmaddin Khudaverdiyev
Jul 31Liked by Tural Asgar

Məqalə üçün çox sağolun. Düşünürəm ki, rəy yazıb təşəkkür etmək növbəti məqalələr üçün sizə motivasiya olacaq. Uğurlar.

Expand full comment
Reply
Share
1 reply by Tural Asgar
Elvin Asgar
Writes Günün Əsas Xəbərləri
Jul 30Liked by Tural Asgar

👍

Expand full comment
Reply
Share
5 more comments...
Top
New
Community

No posts

Ready for more?

© 2023 Tural Əsgər
Privacy ∙ Terms ∙ Collection notice
Start WritingGet the app
Substack is the home for great writing