11.1 Müasir Məhsullar

Müasir məhsullara artıq heç kim proqram adlandırmır. Müasir məhsul onlarla proqramdan, yüzlərlə internet-servisindən və bir çox API-lərdən ibarət ola bilər, bunlar isə məhsulun yerləşdirildiyi data-mərkəz buludu tərəfindən təmin edilir.
Bir çox müasir məhsullar (əgər hamısı olmasa) Müştəri-Server Paradigması ilə işləyir. Məsələn, sizin cihazınızda (telefon, noutbuk, kompüter) istifadəçi ilə (sizlə) ünsiyyətə cavabdeh bir proqram olur, amma bütün kritik funksionallıq uzaq serverdə yer alır və bütün vacib proseslər məhz orada baş verir.
Bəzən sizin müştəri proqramınız bir neçə müstəqil serverlə ünsiyyət qura bilər və ya bir məhsulun serveri digər bir məhsulun serveri ilə əlaqə qura bilər. Beləliklə, müştəri və serverlərdən ibarət qlobal bir şəbəkə yaranır və hər şey bir-biri ilə qarşılıqlı işləyir.
Buna görə müasir tətbiqlərin modelini daha çox Müştəri-İnternet-Server Paradigması kimi təsvir etmək olar. Çox fərqli və mürəkkəb kommunikasiya mövcuddur. Hətta elə bil "ağıllı əlaqə kanalları" meydana gəlib ki, bunlar sizin sorğunuza kimə və nə vaxt göndəriləcəyini özləri qərar verir.
11.2 Müştərilər
Müştəri proqramlar şərti olaraq 4 kateqoriyaya bölünür:
- Desktop-müştəri — kompüterdə işləyən proqram
- Mobile-müştəri — iOS və ya Android üçün tətbiq
- Veb-müştəri — brauzer vasitəsilə işləyən sayt/veb-tətbiq
- Server-müştəri — başqa bir serverdə işləyən tətbiq
Hər birini də yenidən hissələrə bölmək olar. Məsələn, web-müştəri – sayt və ya veb-tətbiqdir, bu da deməkdir ki, o Brauzer və Saytdan ibarətdir, hansı ki, brauzerə yüklənir. Brauzerlər də hamısı eyni deyil və fərqli işləyə bilər.
Amma hətta ən çox istifadə olunan brauzeri götürsək, yenə də brauzerə yüklənən sayt qalır. Sayt adətən üç şeydən ibarətdir:
- HTML
- CSS
- JavaScript
"Daha sadə heç nə ola bilməz", deyərsiz, amma artıq heç kim sadəcə HTML və JavaScript ilə sayt yazmır. İndi sayt hazırlamaq üçün hətta kitabxanalardan yox, tam funksional framework-lərdən istifadə olunur, məsələn, React, Angular və ya Vue. Həm də artıq bu saytlar deyil, tam dəyərli veb-tətbiqlərdir. Öz yığım, test və paradigma sistemləri ilə.
Sadə CSS də artıq heç kim istifadə etmir: artıq CSS generasiya etməyə kömək edən preprocessors mövcuddur, hətta tam CSS framework-ləri də var. Daha da maraqlısı, email-xidmətləri üçün belə CSS framework-ləri var ki, məktubunuzu insan brauzerdə və ya əksər poçt müştərilərində baxarkən gözəl görünsün.
JavaScript-də də artıq heç kim birbaşa yazmır: bütün böyük veb-tətbiqlər TypeScript-də yazılır, sonra o JavaScript-ə kompilyasiya olunur. Yəni, başa düşdünüz...
11.3 İnternet və infrastruktur
Klient və server arasındakı rabitə — bundan daha asan nə ola bilərdi? Amma burda da artıq hər şey dəyişib.
Birincisi, məhsulunuz çox güman ki, müasir data-mərkəzlərdən birində host olunacaq. Dünyada çoxlu şirkət məhsullarınızı həm öz serverlərində, həm də sizin fiziki serverlərinizdə host etmək üçün müxtəlif xidmətlər təklif edir. Pulunu ödəyin, arzu edin, həyata keçsin.

Fiziki server artıq fiziki deyil. Bütün müasir data-mərkəzlər sizə virtual serverlər icarəyə götürməyi təklif edir. Bu, müəyyən bir virtual kompüterdir və bir fiziki serverdə onlarla belə server ola bilər. Bunun isə serverin apqreyd baxımından üstünlükləri var. Əgər sizə daha çox yaddaş lazımdırsa, onu virtual serverinizə bir neçə dəqiqə ərzində əlavə edə bilərsiniz.
Amma belə yanaşma da artıq köhnəlib. İndi "cloud"-lara (buludlara) keçid dəbdədir — bu, məhsulunuzun sadəcə data-mərkəzdəki virtual serverdə yerləşdirilməməsini, həm də həmin data-mərkəzlərin geniş infrastruktur və xidmətlər dəstini aktiv istifadə etməsini nəzərdə tutur.
Sizə backup saxlamaq üçün server lazımdır: buludda bunun üçün tam rahat infrastruktur var. Sizə 99.9999999% etibarlı bir baza lazımdır? Bu da var. Kafka, RabbitMQ, NoSQL? Hamısı mövcuddur və asanlıqla qurula bilər. Yetər ki, pulunu ödəyin.
Bu data-mərkəzlər və buludlar sizin məhsulunuzun bir hissəsinə çevrilməyə başlayır. Məsələn, Amazon-un dünyada bir çox data-mərkəzləri var, ona görə də onlar CDN xidməti təklif edir: sizin ümumi kontentiniz bütün Amazon data-mərkəzlərində keşlənəcək və istifadəçiləriniz dünyanın istənilən nöqtəsindən həmin kontenti daha sürətli şəkildə alacaqlar.
Və ya tətbiqinizin API-yə müraciətini Amazon Gateway API xidməti vasitəsilə yönləndirmək olar ki, bu da sizin xidmətlərinizlə işləməyi çox çevik şəkildə konfiqurasiya etməyə imkan verir. Yükləməni müxtəlif xidmətlər üzrə bölüşdürmək, DDoS hücumlarını dəf etmək, fayl yükləmələrini avtomatlaşdırmaq, ağıllı keşləşdirməni tənzimləmək və daha bir çox şey etmək mümkündür.
Beləliklə, tətbiq-klient və xidmətləriniz arasında çoxlu «ağıllı kommunikasiyalar» yaranır ki, bunlar qurula bilər və qurulmalıdır. Hətta bunu heç vaxt şəxsən etməyəcəksinizsə belə, onların mövcud olduğunu bilməli və proqramınızın işinə ciddi təsir edə biləcəyini anlamalısınız.
Hələ bu mövzuda router-lər, 5G qüllələri, peyklər və okeanın dibindən keçən internet kabelləri kimi sahələrə toxunmamışıq. Siz serverinizdən videoyayım göndərirsiniz, amma müştərinin zəif əlaqəsi və daimi kəsilmələr səbəbindən problem yaranır. Bəs bu problemi kim həll edəcək, təxmin edin?
11.4 Server
Server tərəfi sözü ilə çox müxtəlif anlayışlar nəzərdə tutulur, ona görə də ən məşhur olanlarını bilmək sizə faydalı olacaq.
Fiziki server
Fiziki server — bu, resurslarla (prosessor, yaddaş, saxlama) təmin olunmuş ayrı bir kompüter olan avadanlıqdır, hansı ki, məlumatların işlənməsi və müxtəlif proqram tətbiqlərinin işinin təmin olunması üçün istifadə edilir. Bu serverlər data mərkəzlərdə quraşdırılır və onlar veb-saytlar, tətbiqlər, məlumat bazaları və digər xidmətlərin host edilməsi üçün güc təmin edir.
Virtual server
Virtual server — bu, fiziki server mühitində işləyən proqram emulyasiya edilmiş serverdir. Virtualizasiya texnologiyaları vasitəsilə bir fiziki server bir neçə izolyasiya edilmiş virtual serverlərə bölünə bilər, hansılar ki, öz əməliyyat sisteminə malikdir və müstəqil şəkildə yenidən başlatma və ya sazlama oluna bilər.
Proqram-server (məsələn, Nginx)
Nginx kimi proqram-server, veb-resurslara gələn sorğuları emal etmək üçün istifadə olunan server proqram təminatıdır. Nginx geniş yayılmış veb-server kimi tanınır, hansı ki, həmçinin poçt proxy-server və arxa tərəf proxy-server funksiyalarını da mikroservis arxitekturasında və yük balanslaşdırıcı kimi yerinə yetirə bilər.
Məlumat bazası serveri
Məlumat bazası serveri — məlumat bazalarını idarə etmək və həmin bazalara sorğuları işlədirəcək ixtisaslaşmış serverdir. O, məlumatların mərkəzləşdirilmiş saxlanılmasını və emalını təmin edir, məlumatlara şəbəkə vasitəsilə giriş təqdim edir. Məlumat bazası serverləri tranzaksiyaların işlənməsini, məlumatların axtarışını və dəyişdirilməsini dəstəkləyir, bu zaman məlumatların saxlanılmasının etibarlılığını və təhlükəsizliyini təmin edir. Məlumat bazası serverlərinə nümunələr arasında MySQL, PostgreSQL, Oracle Database və Microsoft SQL Server kimi serverlər daxildir.
Və budur, data mərkəzlərdən birində virtual serverlərdən birində sizin React və Node.js əsaslı layihəniz işləyəcək, hansı ki, məlumat bazası ilə işləyəcək, Nginx-dən gələn sorğuları qəbul edəcək və Splank-a öz fəaliyyətinin loglarını göndərəcək.
Amma məhz sizin yazdığınız koda görə milyonlarla istifadəçi məhsulunuzdan razı qalacaq. Onlar məhsuldan istifadə edəcəklər, ona görə pul ödəyəcəklər və beləliklə məhsul sahibinin də ürəyi açılacaq. Şirkətin aksiyaları artacaq, siz aksiyalarla bonuslar alacaqsınız və siz də xoşbəxt olacaqsınız. Elə təbiətdə xoşbəxtliyin dövriyyəsi kimi bir şeydir :)
GO TO FULL VERSION