Hər şeyi microservice etmək lazım deyil
Bir müddət backend öyrənəndə microservice mənə avtomatik olaraq daha yaxşı arxitektura kimi görünürdü. Servisləri ayırmaq, ayrıca database-lər, FeignClient-lər, Docker container-lər — diaqramda hər şey daha ciddi görünür.
Sonra real sistemlərlə işlədikcə bunun başqa tərəfini görməyə başladım. Ayrı servis demək həm də ayrı deployment, network communication, failure scenario, logging və monitoring deməkdir.
Servis sərhədi texniki deyil
Məncə ən çətin sual “neçə servis yaradaq?” deyil. Əsas sual “bu iki hissə niyə bir-birindən ayrı yaşamalıdır?” sualıdır.
Əgər iki modul eyni business qaydasını bölüşürsə, daim bir-birindən məlumat istəyirsə və birlikdə dəyişirsə, onları sadəcə microservice etmək üçün ayırmaq çox şey həll etmir.
Əksinə, düzgün sərhəd tapanda ayrılma mənalı olur. Hər servis öz məsuliyyətini daşıyır və digər servisin daxili detallarını bilməyə ehtiyac qalmır.
Mən indi necə yanaşıram
Əvvəlcə sistemi başa düşürəm. Sonra modulları ayırıram. Yalnız bundan sonra hansı hissənin ayrıca servis olmasının mənası olduğunu düşünürəm.
Çünki yaxşı arxitektura ən çox texnologiyadan istifadə edən arxitektura deyil. Dəyişiklik gələndə ən az ağrı verən arxitekturadır.