şükela:  tümü | bugün
  • ozunde mantiklida olsa oldukca "genc"* olan bir "sistemimsi" sey. ha bulut bilisime giriyor kafayi yormamak lazim.

    tamamen 0 dan baslayan bir sistem icin uygun olmasina olan; fakat mevcut, sistemi oturmus firmalarda pekte kullanisli olmayan hede.

    bunun birsuru nedenleri var; fakat nedenlerinden oturu, once serverless sistemin calisma prensibi nedenine bakarsak:

    1) microservices de teknik olarak limitleyen hic bir durum yokken; bu sistemde, yazilan kod sadece bir sey icin yazilmak zorunda. bu konuda zorlama var.

    2) yazilan kod, application lifecycle'dan bagimsiz yaziliyor. yani, infrastructure dedigimiz, yazilimin altyapisi ile ilgili hic birsey icermiyor.

    3) ucretlendirme, sure ve bellek kullanimi uzerinden yapiliyor. hani universitede comptuational complexity konusu vardi, orda hem computational hemde bellek olarak hesapladigimiz runtime complexity si vardi ya, iste o burda cok ise yariyor.

    ozetle bu 3 ana prensipten dolayi, serverless size, hizli calisan, tek bir gorevi olan (sonucta yazdigimiz kodun ana bir metodu i/o isleyecek) bir sey yazmanizi; ama multi-thread, stateful (sonucta paylasilan bir bellek yok), fault-tolerant, uygulama konfigurasyonu, ozel monitorleme sistemleri, interceptorlar, db pool, circuting gibi konularda ise hicbir sekilde kullanilmasina musait degildir.

    fault-tolerant olayina girersek sundan oturu. yazdiginiz kod basit olmali, eger bir hata olustuysa, bu hatayi duzeltmek yerine (misal exception u handle etmekten oturu) dogrudan bu execution u fail etmek daha mantiklidir. zira fail olan bu serverless execution, bu execution u cagiran neyse, onun tarafindan tekrar denenmelidir.

    tum bunlarin ustune, serverless sistem, sizin elinizden kontrolu daha cok aldigi icin, yarin bir gun dur amazondan google a geceyim dediginizde ortada kalmaniza yol acabilir. bence kismen, aws tarafindan bu kadar desteklenmesinin ana nedeni bu.

    bu arada zaman olayina deginmek istiyorum; misal aws de 100ms ve katlari olarak ucretlendirme yapiliyor; default timeout ise 60 saniye. max olarak ise bu sure 5 dk ye kadar cikabiliyor. yani kesinlikle; back-off vs tarzi bir sey yazmaya musait degil.