@dodiş#31764 Laravel Storage kullanacağınız için onun S3 desteği var. Amazon S3 yanında S3 uyumlu bir uzak dosya sistemi de kullanabiliyorsunuz (DigitalOcean Spaces mesela. Aylık $5, 250GB alan 1 TB transfer. Amazon ise GB başına $0,0245 istiyor). config/filesystems.php içinde ayarları yaptıktan sonra zaten normal yükleme yapıyorsunuz, S3'e gönderme/alma işini Laravel hallediyor. Bu şekilde başka yerde tutmuş oluyorsunuz:
https://laravel.com/docs/9.x/filesystem
Bu da kendi S3 sunucunuzu kurmak için ama elinizde atıl bir sunucu yoksa S3 ya da Spaces daha uyguna gelir diye tahmin ediyorum:
https://github.com/minio/minio
Bunun haricinde CDN kullanabilirsiniz. Bir CDN üyeliği aldıktan sonra ASSET_URL değeri için CDN adresini yazmanız yeterli. Bunu yaptığınızda, {{ asset('products/1145/cover.jpg') }} yazdığınızda domain.com/storage/products/1145/cover.jpg yerine eu-2.account.cdnservice.com/storage/products/1145/cover.jpg gibi bir adresle değiştiriyor, tarayıcı istekte bulunduğunda servis sizin siteden bu dosyayı bulup kendi içine aktarıyor ve bundan sonra kendisi servis ediyor, her ne kadar resimler sizde hala yer kaplasa da sizin bandwidth etkilenmemiş oluyor. Bazı CDN servislerinin S3 ekleme özellikleri de var sanırım, dosyaları oradan kendi çekiyor vs.
20 bin ürün olsa, her birinin 700 kb toplam resmi olsa (duruma göre bu 7-8 resim de edebilir 1-2 de) 13 GB yer kaplar ki bu çok büyük bir rakam değil ama yedekleme işi önemli. S3 vs olursa o konularda rahat olursunuz.