Milyonlarca istek gelen bir API yardımınız gerekli / R10+
2
●360
- Kabul Edilen Cevap
- 2 Beğeni
-
- 02-04-2024, 08:24:05Bu cevap, konu sahibi tarafından kabul edilebilir bir cevap olarak işaretlendi.iyileştirmeler yapılabilir.
1. Güçlü bir sunucu kullanmanızı tavsiye ederim trafiği kaldıracak şekilde.
2. Nginx + PHP FPM ile apache'ye göre çok daha iyi performans alınabilir.
3. Api laravel ile yazılabilir
4. Api isteklerin de spam request olabileceğini düşünüyorsanız ihtiyac fazlası kullanım için ve yük binmemesi için rate limit belirlenebilir. dakikada maks şu kadar istek atılabilir aynı kullanıcıdan gibi.
5. Yoğun mysql ve veritabanı işlemleri yapılıyorsa ve big data mevcut ise postresql yada mariadb biraz daha mysql'e göre big data sorguların da daha stabil ve optimize çalışabilir. Ayrıca db sorguları ve php kodların da ciddi optimizasyon yapılarak performans artışı sağlanabilir index cache ve tekrar eden sorguları optimize ederek.
6. Kod ile yapılabilecek işlemler de yine aynı şekilde ekstra güvenlikler ve spam engellemeler yapılabilir bu tamamen kodun ve projenin kalitesiyle alakalıdır hiçbir yerde gereksiz sorgular amaca uygun olmayan performansı ve cpu'ya yük bindirecek işlemlerden kaçınılmalı en önemlisi process süreleri olabildiğince hızlı çalışmalı şöyle düşün bir işlemin tamamlanması makina da 15-20 saniye sürüyor ise buna aynı anda 100-200k kişi istek attığında hepsi aynı anda makinada 15-20 saniyelik process'ler çevirirse makina şişer işlemlerin hızlı tamamlanıp yanıt vermeye tekrar müsait olması lazım yapılan işlemlerin process süresi azaltma kodu iyileştirme ve server'in donanım upgrade yaparak olur yukardaki aşamalarla birlikte tüm bunları sağlarsanız ayrıca saldırılara karşıda kesinlikle cloudflare kullanılmalı ve olası gelecek şüpheli işlemlerde block ve WAF rules gibi ekstra güvenlik önlemleride alınmalı.
7. şuan aklıma gelenler bunlar benden bu kadar : ) - 02-04-2024, 09:26:28Clientlere API key dagitabilirsiniz duruma gore eger senaryonuza uyuyorsa. Neler geri donuyorsunuz bilmiyorum ama bazi veriler icin Redis vb. kullanilabilir duruma gore.
Bunlarin yani sira gelen istekdeki verileri islemeniz uzun suruyorsa RabbitMQ da dusunulebilir.
Gelen veri, giden veri vesaire daha detayli bir bilgi verirseniz daha isabetli oneriler de yapilabilir.
Laravel Lumen bu is icin guzel bir alternatif olabilir ornegin.