Nigeriyanın Port Harcourt Universitetində təhsil alan gənc proqramçı Tobore, bu yaxınlarda bitirdiyi final layihəsi haqqında maraqlı bir hekayə danışdı. O, Delta ştatının kənd bölgələrindəki klinikalar üçün “Delta Health Information and Appointment Booking System” adlı onlayn randevu sistemini qurub. Lakin bu adi bir tələbə layihəsi deyildi – sistem real xəstələrə xidmət göstərirdi. Tobore'nin sözlərinə görə, xəstələr saatlarla yol qət edib klinikaya gəlir, ancaq həkimin olmadığını və ya randevunun ləğv edildiyini öyrənirdilər. Sistemin uğursuzluğu isə birbaşa insan həyatına təsir edə bilərdi.
Layihə React.js, Node.js, PHP (Laravel), MySQL, AWS və Docker texnologiyaları üzərində qurulub. Ən maraqlısı isə, sistemin yalnız smartfon deyil, həm də adi düyməli telefonlar üçün SMS, WhatsApp və USSD kanallarını dəstəkləməsi idi. Çünki kənd yerlərində hər kəsin smartfonu yoxdur. Üstəlik, internet 2G sürətində, elektrik enerjisi isə qeyri-sabitdir.
Üç səhv, üç dərs
1. Xəritədə yanlış yer – klinika Qana sahillərində
Sistemin ən gözəl xüsusiyyətlərindən biri, xəstənin GPS koordinatları əsasında yaxınlıqdakı klinikaları göstərməsi idi. Lakin real məlumatlar daxil edilərkən məlum oldu ki, bir klinika xəritədə Qana sahillərində, okeanın ortasında görünür. Səbəb sadə idi: klinikaların məlumatları əllə daxil edilərkən koordinatlar səhv yazılmışdı. Məsələn, enlik və uzunluq tamamilə dəyişdirilmişdi. MySQL bu rəqəmləri qəbul etdi, çünki onlar texniki cəhətdən düzgün idi. Həll yolu: API-ə Nigeriyanın coğrafi sərhədlərini yoxlayan bir funksiya əlavə edildi. Beləliklə, koordinat səhvdirsə, sistem məlumatı qeyd etmir.
2. SMS göndərildi, amma çatmadı
Xəstələrə randevu xatırlatmaları göndərən sistemdə bir problem üzə çıxdı: klinika işçiləri dedi ki, xəstələrin heç biri xəbərdarlıq almayıb. Halbuki verilənlər bazasında hər mesajın statusu “göndərilib” olaraq göstərilirdi. Üç günlük araşdırmadan sonra məlum oldu ki, SMS gateaway 200 statusu qaytararaq yalnız mesajı qəbul etdiyini bildirir, amma çatdırılmasına zəmanət vermir. Əslində mesajın çatıb-çatmadığını yoxlamaq üçün gateaway'in webhook mexanizmindən istifadə etmək lazımmış. Tobore bunu düzəldəndən sonra çatdırılma nisbəti 94%-ə çatdı.
3. İnternet kəsildi, təkrar göndərildi, iki dəfə yazıldı
Ən çətin səhv isə qeyri-sabit internet şəraitində ortaya çıxdı. Xəstə randevu almağa başlayır, əlaqə qopur, yenidən bağlanır, xəstə düyməni təkrar basır – nəticədə eyni randevu üçün iki qeyd yaranırdı. Bu səhvi ofis mühitində yoxlamaq mümkün deyildi, çünki orada internet stabil idi. Həll yolu: hər randevu cəhdinə unikal “idempotency key” əlavə edildi. Əgər eyni açar ilə təkrar sorğu gəlsə, server onu qəbul etmir və artıq mövcud olan qeydi qaytarır.
Bu layihə Tobore üçün əsl təcrübə məktəbi oldu. O, vurğulayır ki, uğursuzluqlar ekzotik deyildi, sadəcə real dünyanın şərtlərinə uyğunlaşmağı tələb edirdi. Sistem hazırda işləyir və Delta ştatındakı klinikalar artıq rəqəmsal infrastruktura sahibdir. “Mən bunun nə qədər az qala işləməyəcəyini bilirəm, amma işlədi – budur ən böyük qürurum” – deyir Tobore.


