Sistem dizayn etmisinizsə, ümumiyyətlə proqram təminatının bir ucundan nə vaxtsa tutmusunuzsa, CAP teoreminə aşinasınız deməkdir. Deyilsinizsə belə, mütləq bir gün qapınızı döyəcəkdir. Zənnimcə, nəinki sistem dizayn edənlər, eyni zamanda son istifadəçilər də bu teoremi yaxşı başa düşməlidir. Bu məqalənin sonunda qeyri-sabit internet bağlantısı zamanı bank tətbiqinizin niyə donduğunu, amma Instagramda niyə rahatlıqla aşağı-yuxarı gəzə bildiyinizi anlamış olacaqsınız.
İlk öncə bir sualdan başlayaq: eyni anda hər şeyə sahib olmaq mümkündürmü?
Təsəvvür edin ki, sizin Bakı və Nyu-York serverlərində fəaliyyət göstərən bir e-ticarət platformanız var. Stokda cəmi 1 ədəd "iPhone 17" qalıb. Bakıdakı istifadəçi məhsulu səbətə atır və "Al" düyməsini sıxır. Həmin anda Bakı və Nyu-York arasındakı şəbəkə kəsilir. İndi sisteminiz bir qərar verməlidir.
Birinci ehtimal: Nyu-York serveri Bakıdakı bazanın yenilənib-yenilənmədiyini bilmədiyi üçün yeni sifarişləri qəbul etmir və "Xidmət müvəqqəti dayandırılıb" xətası verir.
Nəticə olaraq: Müştəri itirirsiniz, amma heç vaxt qurtarmış məhsulu satmırsınız.
İkinci ehtimal: Sistem hər nə olursa olsun cavab verir. Nyu-York serveri Bakıdan xəbərsiz olsa da, müştəriyə "Sifarişiniz alındı" deyir. Şəbəkə bərpa olunduqda məlum olur ki, eyni telefon eyni anda iki nəfərə satılıb.
Nəticə olaraq: Sistem həmişə aktivdir, lakin müəyyən müddət (şəbəkə gələnə qədər) məlumatlar ziddiyyətli olur.
Məlumat dünyasında bu dilemma CAP Teoremi adlanır.
CP(Dəqiqlik və Bölünmə):
Məlumatın dəqiqliyi hər şeydən önəmlidir. Əgər serverlər bir-birilə əlaqə qura bilmirsə, sistem səhv məlumat verməmək üçün xidməti dayandırır. Məsələn, bank sistemlərində sizin balansınız bir yerdə 100 AZN, digərində 50 AZN görünməməlidir.
AP(Əlçatanlıq və Bölünmə):
Sistem nə olursa olsun cavab verməli -əlçatan -olmalıdır. Instagramda gəzərkən məlumatların bir neçə saniyə əvvəlki məlumat olması böyük problem yaratmır. Əsas odur ki, istifadəçi səhifəni yeniləyərkən ekran xəta verməsin.
Sual yarana bilər ki, niyə həm stabil, həm də dəqiq sistem qura bilmirik? Paylanmış sistem dedikdə söhbət müxtəlif şəbəkə düyünlərindən gedir. Hər an internet kəsilə bilər, server sönə bilər. Düyünlər arasındakı əlaqə səngiyə bilər. Əgər problem yaranıbsa, siz artıq digər iki seçim arasında qalmış olursunuz. Müasir dünyada Bölünməyə Davamlılıq artıq bir seçim deyil, məcburiyyətdir.
CAP teoremi hər teorem kimi hər bir halı nəzərə almır. O, yalnız şəbəkə xətası zamanı nə baş verəcəyini izah edir. Amma sistem normal işləyərkən də bir seçim qarşısındayıq: Gecikmə, yoxsa Dəqiqlik?
Bunun üçün də mühəndislər CAP teoremini təkmilləşdirib PACELC (Partition Availability Consistency Else Latency Consistency) qaydasını dizayn ediblər. Əgər bölünmə varsa, Əlçatanlıq və ya Dəqiqlik arasında seçim edir. Əks halda, sistem Sürət və Dəqiqlik arasında seçim etməlidir.
Sistem qurarkən “ən yaxşı” anlayışı olmadığından sistem ehtiyaclarınızı nəzərdən keçirib ona uyğun qərar verməlisiniz.