isset Öncelikle Jetstream'i listeden çıkaralım. Onunla 2 tane proje yaptım, bana hiçbir şey katmadı hiçbir işimi de kolaylaştırmadı ve beni sınırlandırdı. Çok zorlasam 1 günde yapabileceğim bir şey. Bence gereği yok, sadece kafa karıştırıyor.
tl;dr
Küçük ve orta ölçekli, tek yada 2 kişilik bir ekiple geliştirilebilecek, çok komplike UI işleri gerektirmeyen, büyük çoğunluğu CRUD üzerine dayalı bir uygulama için Inertia uygun ama API olarak 1. (mobil/masaüstü) ve 3. parti istemcilere açılacak, ekip gerektiren büyük işler için ileride sizi pişman eder. Her ne kadar Inertia'yı çok beğensem de tecrübelerim beni API yazmaya itiyor.
API yazmanın avantajları:
- Backend bağımsız olacağı için geliştirme ve deployment frontendden bağımsız ilerleyebilir. Ayrı takımlar halinde projeyi geliştirebilirsiniz.
- Frontend ekibinin backend bilgisine ve geliştirme ortamına ihtiyacı olmaz, backendden bağımsız ilerleyebilir.
- Frontend istenilen teknolojide yazılabilir, sonradan değiştirilebilir. Bu API tarafı için de geçerli; frontend değişmeden API değişebilir.
- Masaüstü ve mobil uygulamalar API değişmeden yazılabilir.
- Aynı API diğer istemcilere verilebilir, ayrı bir işlem yapmanıza gerek kalmaz.
- Doğru kodlandığında frontend üzerinden yük azalır ve frontend sadece view olarak hizmet eder (Bu aslında Blade ve Inertia için de geçerli).
API yazmanın dezavantajları:
- Session kullanamayacaksınız. Bazı işlemler session ile çok basit iken session olmayan ortamlarda zor olabilir.
- Vue/React gibi bir framework kullanacağınız için javascript bilgisine daha fazla ihtiyacınız olacak ya da ekstra insan gücü gerektirecek.
- API versiyonlama, API dokümantasyon, API gateway gibi kavramlar devreye girecek.
Inertia yazmanın avantajları:
- Hem session kullanabileceksiniz hem de javascript frameworklerin nimetlerinden faydalanabileceksiniz.
- Uygulamanız SPA olarak çalışacağı için daha iyi bir deneyim sunacak.
- Klasik MVC rahatlığını yaşayabileceksiniz.
- Emin olmamakla birlikte daha hızlı ilerleyeceğinizi söyleyebilirim.
Inertia yazmanın dezavantajları:
- Ekip üyelerinin fullstack olması gerekecek. Her iki tarafta da bilgi sahibi olmaları beklenecek.
- Sadece backend deploy mümkün olmayacak, herhangi bir yerdeki bir değişiklik için tüm uygulama deploy edilecek.
- Tek bir frontend teknoloji seçebileceksiniz, sonradan bunu değiştirmek zor olacak ve değişikliği paralelde yapamayacaksınız. Uygulamanın ayrı bir klonu ile yapmak zorunda kalacaksınız. API olsaydı çalışan uygulamaya bir yandan ayrı bir frontend yazılabilirdi.
- Masaüstü ve mobil uygulama yazamayacaksınız, bunun için ayrı API yazmanız gerekecek. Bu da mimaride değişiklik ya da kod çoğaltma gibi durumlara sebep olacak.
- JS frameworkün tüm özelliklerinden faydalanamayacaksınız, örneğin vue-router'ın keep-alive özelliği.