Sadə görünən feature niyə backend-də böyüyür?
Backend-də ən təhlükəli cümlələrdən biri “buna bir endpoint əlavə edək” cümləsidir. Ekranda həqiqətən bir düymə ola bilər. Amma o düyməyə basıldıqdan sonra nə baş verdiyini düşünəndə məsələ dəyişir.
Mən bunu bir neçə dəfə yaşamışam. Əvvəlcə task çox kiçik görünür: məlumatı qəbul et, database-ə yaz və response qaytar. Sonra məlum olur ki, həmin məlumat başqa bir servisdə də istifadə olunur, bəzi hallarda əvvəlki qeyd dəyişdirilməməlidir, transaction yarıda qalsa nə baş verəcəyi bilinmir və eyni request iki dəfə gəlsə sistem iki dəfə əməliyyat apara bilər.
Endpoint yazmaq işin ən asan hissəsidir
Java və Spring Boot-da controller yazmaq çox rahatdır. Əsas çətinlik kodu yazmaq deyil, həmin kodun sistemdə hansı qaydanı qoruduğunu başa düşməkdir.
Ona görə feature gələndə əvvəl endpoint-dən başlamamağa çalışıram. Əvvəl soruşuram: bu əməliyyat hansı state-dən hansı state-ə keçir? Hansı məlumat dəyişə bilər? Hansı məlumat dəyişməməlidir? Eyni request yenidən gəlsə nə olacaq?
Bu sualların cavabı yoxdursa, kod yazmağa başlamaq adətən problemi sadəcə bir neçə saat sonraya saxlayır.
Backend-in işi request qəbul etmək deyil
Mən backend-i controller və service yazmaqdan daha böyük məsələ kimi görürəm. Backend sistemin qaydalarını qoruyan yerdir. Frontend yaxşı görünə bilər, amma qayda backend-də qorunmursa, sistem yaxşı deyil.
Ən çox xoşuma gələn sistemlər də məhz buna görə sakit işləyən sistemlərdir. Operator hansı düyməyə basdığını düşünmür. Sistem isə arxada nəyi qorumaq lazım olduğunu bilir.