Microservice-ler nedir ? Avantaj ve dezavantajlar

Mikroservisleri tercih etmek uchun 4 esas sebeb var :

  1. Scalability
    Bu ozellik monolit application da da mumkundur.
    Horizontal ve Vertical Scalability:
    - Horizontal, Serverimiz tutaq ki , 4gb ram da ishleyir. Hal hazir ki veziyyete gore uygun olsada musteri sayi artandan sonra serverin ramini artira bilerik. Lakin bunun bir limiti vardir. (diger paratmetrlerde daxilidr, cpu, harddrive). Yeni horizontal - sistemi guclendirmek basha dushulur. Burada limit oldugundan , sonradan yeni sistem alinmalidir, lakin server yalniz bir komputer olmalidir.
    - Vertical, burada yaradilan servisin kopyasini yaratmaq basha dushulur. Esasen mikroservis arxitekturasinda istifade olunur. Meselen Account Service 1000 sorgu emal ede bilirse, bu servisin kopyasi da 1000 sorgu emal edecek. Bu mikroservis oluduguna gore ishletdiyi ram daha az olacaqdir (ve ya diger parametrler)

    Burada servislerin kopyasini avtomatik yaradilmasini temin eden sistemler var ki, bunlara misal olaraq Kubernetes, Rancher ve ya custom olaraq ozumuz yarada bilerik.
  2. Flexibility
    Her hansi bir servisde olan xeta application un ishine mane olmamalidir. Meselen Facebook da 1 neche deqiqeliyine Like duymesi ishlemese bele diger funksiyalar oz ishini yerine yetirecek.
    Ve ya diger numuneye baxsaq, meselen Application da Image le bagli her hansi emeliyyat gedir. Hemin emeliyyat geden servis bir anligina ishini dayandirsa bele Applicatoin ishini davam etdirmelidir. Hetta Image emeliyyatini aparan bashqa bosh servis varsa ishi o davam etdirmelidir.
  3. CI / CDApplication kichik mikroservislerden ibaret olduguna gore deploy prosesi rahat ve suretli olur. Lakin monolit app-da bu chox vaxt apara biler.
    Mikroservislerden biri gec ishe dushe bele app ishleye bilecek.
  4. Technology power
    Servisleri istenilen dilde yazmaq mumkunluyu basha dushulur. Elave olaraq, servisi yazan adamin sechmesi insan gucu ustunluyunu verir. Komanda genishlenir. Meselen, riyazi bir meseleni Java da yazmaq evezine bu servisi Python da rahatliqla yazmaq mumkundur. 

Mikroservis yaradanda diqqet gosterilecek esas ozellikler
  1. Her bir servis yazilanda digerinden maksimum elaqesiz bir shekilde yazilmalidir. Birinde olan problem digerine eks olunmamalidir.
  2. Her bir servisin instance lari eyni kod uzerinde ishlemelidir. Yeni bir instance v1 ile digeri v2 ile ishlememelidir. 
  3. Her bir servis yalniz ozunun uygun oldugu ishi duzgun gormelidir. Meselen User Service yalniz register ishine baxir. Eger buna Image emeliyyatlarini da elave edersek bu zaman Mikroservis qaydalari pozulur. 
  4. Her bir servis duzgun ve uygun texnologiya ile qurulmalidir.
  5. Her bir servis CI / CD olmalidir. Yeni servislerin deployment emeliyyatlari ayri olmaldir.
  6. Her bir servisde container ve Database ler ayril olmalidir.
  7. Servisler arasinda elaqeler qaydalar toplusu sheklinde evvelceden melum olmalidir ve bu qaydalardan qiraga hech bir elaqe vasiteleri olmamalidir. 
  8. Her bir servisde Log, Security ve diger movzular duzgun idare olunmalidir.

Popular posts from this blog

Validation for AZ phone numbers with RegEx in Java

Java necə işləyir, kod nədir ?

@Transactional annotation haqqinda. Cascade istifade olunmasi