2.1 Müasir məhsullar
Müasir məhsullara artıq proqramlar demirlər. Müasir məhsul özündə onlarla proqram, yüzlərlə internet-servis və bir çox API daxil edə bilər. Onlar bulud məlumat mərkəzi (onlara məlumat emal mərkəzləri də deyirlər) tərəfindən təmin edilir və həmin mərkəzdə yerləşdirilir.
Çox müasir məhsullar (əgər hamısı yoxsa) Klient-Server Paradigması ilə işləyir. Bu o deməkdir ki, sizin cihazınızda (telefon, noutbuk, kompüter) istifadəçi (siz) ilə kommunikasiya üçün cavabdeh olan proqram yerləşir və kritik funksionallıq isə uzaq serverdə olub, bütün vacib proseslər orada baş verir.
Bəzən sizin klientiniz bir neçə müstəqil server ilə əlaqə qura bilər, yaxud bir məhsulun serveri başqa bir məhsulun serverinə müraciət edə bilər. Beləliklə, klientlər və serverlərdən ibarət qlobal şəbəkə yaranır və onların hamısı bir-biri ilə işləyir.
Ona görə də müasir tətbiqlərin modelini bəlkə də Klient-İnternet-Server Paradigması ilə daha yaxşı təsvir etmək olar. Çünki orada artıq çox müxtəlif və mürəkkəb kommunikasiya yaranıb. Hətta belə deyilən “ağıllı rabitə kanalları” da meydana gəlib ki, onlar müstəqil şəkildə sizin sorğunuza kimə və nə vaxt göndəriləcəyinə qərar verir.
2.2 Müştərilər
Müştəri proqramlarını şərti olaraq 4 kateqoriyaya bölmək olar:
- Desktop-müştəri — kompüterdə işləyən proqram.
- Mobile-müştəri — iOS və ya Android üçün tətbiq.
- Web-müştəri — brauzerdə işləyən sayt/web-tətbiq.
- Server-müştəri — başqa serverdə işləyən tətbiq.
Hər birini isə öz növbəsində yenidən hissələrə bölmək olar. Məsələn, web-müştəri — bu sayt və ya web-tətbiqdir, yəni o Brauzer və Saytdan ibarətdir, hansı ki, brauzerə yüklənir. Axı brauzerlər də hamısı eyni deyil və fərqli işləyə bilər.
Amma hətta ən geniş yayılmış brauzeri götürsək belə, o zaman hələ də ona yüklənən sayt qalır. Sayt adətən üç şeydən ibarət olur:
- HTML
- CSS
- JavaScript
"Bundan sadə heç nə yoxdur," deyəcəksiniz. Amma baxın, bu gün artıq heç kim saytları sadəcə HTML və JavaScript ilə yazmır. Saytların hazırlanmasında artıq təkcə kitabxanalardan deyil, React, Angular ya da Vue kimi tam çərçivələrdən istifadə olunur. Artıq bunlar sayt deyil, öz yığma, test və konsepsiyaları ilə tam web-tətbiqlərdir.
Təmiz CSS artıq heç kim istifadə etmir. Artıq CSS yaratmağa kömək edən CSS-preprocessor-ları və tam CSS-framework-ləri mövcuddur. Hətta email məktubları üçün xüsusi CSS-framework-lər var ki, sizin məktubunuz həm brauzerdə, həm də əksər poçt müştərilərində gözəl görünsün.
Saf JavaScript üzərində də artıq çox az adam yazır — bütün böyük web-tətbiqlər TypeScript üzərində yaradılır, hansı ki, sonradan JavaScript-ə kompilyasiya olunur. Nə baş verdiyini başa düşdünüz artıq...
2.3 İnternet və infrastruktur
Müştəri və server arasındakı ünsiyyət — bundan asan nə ola bilər? Amma onların münasibətlərində də hər şey artıq dəyişib.
Məhsulunuz, çox güman ki, müasir data mərkəzlərindən birində yerləşdiriləcək. Dünyanın müxtəlif yerlərində çoxlu şirkətlər məhsullarınız üçün hostinq xidmətləri təklif edir, istər öz serverlərində, istərsə də sizin öz fiziki serverlərinizdə. Pulunuz varsa, hər şeyi əldə edə bilərsiniz.

Fiziki server artıq fiziki deyil. Bütün müasir data mərkəzləri virtual serverlərin icarəsini təklif edir. Virtual server – bu, nəsə virtual bir kompüterdir və bir fiziki serverdə onlarla virtual server ola bilər. Amma bu, serverin təkmilləşdirilməsi baxımından çox əlverişlidir. Əgər sizə daha çox yaddaş lazımdırsa, bunu virtual serverinizə bir neçə dəqiqə ərzində əlavə edə bilərsiniz.
Amma bu yanaşma da artıq köhnəlir, indi trenddə buludlara keçiddir — yəni məhsulunuz sadəcə data mərkəzindəki virtual serverdə yerləşdirilməkdən əlavə, həmin data mərkəzlərinin böyük infrastruktur və xidmət paketindən aktiv şəkildə istifadə edir.
Sizə ehtiyat nüsxələri saxlamaq üçün server lazımdır — bunun üçün buludda rahat hazır infrastruktur mövcuddur. Sizə etibarlılığı 99.9999999% olan bir məlumat bazası lazımdır? Belə bir baza da mövcuddur. Kafka, RabbitMQ, NoSQL? Hamısı artıq var və asanlıqla tənzimlənir. Sadəcə pul ödəyin.
Və bu data mərkəzləri və buludlar məhsulunuzun bir hissəsinə çevrilməyə başlayır. Məsələn, Amazon dünyanın müxtəlif yerlərində bir çox data mərkəzinə malikdir, buna görə də onlar CDN xidmətini təklif edirlər: ictimai məzmununuz Amazon-un bütün data mərkəzlərində keşlənəcək və istifadəçiləriniz dünyanın hər yerindən bunu daha sürətlə əldə edəcək.
Və ya tətbiqinizin API-yə müraciəti Amazon Gateway API xidmətindən keçə bilər, bu da sizin xidmətlərlə işləməyi çox çevik şəkildə tənzimləməyə imkan verir. Yükü müxtəlif xidmətlər arasında bölüşdürmək, DDoS hücumlarını əks etdirmək, fayl yükləmələrini avtomatlaşdırmaq, ağıllı keşləmə qurmaq — daha nələr yoxdur.
Beləliklə, tətbiq-klient ilə xidmətləriniz arasında bir çox "ağıllı ünsiyyətlər" yaranır ki, bunları tənzimləmək mümkündür və lazım olan haldadır. Hətta bunu özünüz heç vaxt etməsəniz də, onların mövcud olduğunu bilməli və proqramınızın işinə ciddi təsir göstərə biləcəyini anlamalısınız.
Hələ routerlər, 5G qüllələri, peyklər və okeanın dibi ilə çəkilmiş internet kabelləri kimi mövzulara toxunmamışıq. Serverinizdən müştəriyə video axını göndərirsiniz, amma müştərinin əlaqəsi zəif olduğu üçün əlaqə daim qırılır. Məsələni həll etməli olanın kim olduğunu təxmin edin?
2.4 Server
"Server" sözü ilə tamamilə fərqli anlayışlar nəzərdə tutula bilər. Ən çox yayılanlarını bilmək sizin üçün faydalı olacaq.
Fiziki serverFiziki server — resurslara malik (prosessor, yaddaş, saxlama) fərdi kompüterdən ibarət bir avadanlıqdır, hansı ki, məlumatların emalı və müxtəlif proqram təminatı tətbiqlərinin işləməsini təmin etmək üçün istifadə olunur. Bu serverlər məlumat emalı mərkəzlərində quraşdırılır və veb-saytların, tətbiqlərin, məlumat bazalarının və digər xidmətlərin işləməsi üçün güc təmin edir.
Virtual serverVirtual server — fiziki server mühitində işləyən proqram vasitəsilə emulyasiya olunan serverdir. Virtualizasiya texnologiyaları vasitəsilə bir fiziki server bir neçə ayrılmış virtual serverə bölünə bilər. Hər biri öz əməliyyat sisteminə malikdir və müstəqil şəkildə yenidən başladılıb tənzimlənə bilər.
Proqram-server (məsələn, Nginx)Nginx kimi proqram-server, veb-resurslara sorğuları emal etmək üçün istifadə olunan server proqram təminatıdır. Nginx geniş şəkildə veb-server kimi tanınır və həmçinin poçt proxy-serveri və mikroservis arxitekturalarında geri proxy-server kimi, eləcə də yük balanslayıcı funksiyaları yerinə yetirə bilər.
Məlumat bazası serveriMəlumat bazası serveri — məlumat bazalarının idarə olunması və onlara edilən sorğuların emalı üçün istifadə olunan ixtisaslaşmış serverdir. O, məlumatların mərkəzləşdirilmiş saxlanması və emalını təmin edir, şəbəkə vasitəsilə məlumatlara giriş imkanı yaradır. Məlumat bazası serverləri tranzaksiya emalı, məlumat axtarışı və dəyişdirmə funksiyalarını dəstəkləyir, eyni zamanda məlumatların təhlükəsizliyini və davamlılığını təmin edir. Məlumat bazası serverlərinə misal olaraq MySQL, PostgreSQL, Oracle Database və Microsoft SQL Server-i gətirmək olar.
Haradasa bir data-mərkəzdə, virtual serverlərdən birində sizin Python və Django ilə yazılmış layihəniz işləyəcək. O, məlumat bazası ilə işləyəcək, Nginx-dən gələn sorğuları qəbul edəcək və öz fəaliyyətindən logları Splank-yə göndərəcək.
Amma məhz sizin kodunuz sayəsində məhsulunuzun milyonlarla istifadəçisi xoşbəxt olacaq. Onlar məhsuldan istifadə edəcək, onu almaq üçün pul ödəyəcəklər, və bu halda məhsul sahibi də xoşbəxt olacaq. Şirkətin aksiyaları artacaq, siz isə bonus olaraq aksiyalar alacaqsınız və siz də xoşbəxt olacaqsınız. Elə bil təbiətdə xoşbəxtliyin dövranı bir şeydir :)
GO TO FULL VERSION