Bu savolga o’zimda ham 100% ishlaydigan aniq yechim yo’q.
Agar “sizga mana 1 yil, va istalgancha moliyaviy resurs sarflab, shu proyektni qiling”, deganda, ishni avvalo kuchli komanda yig’ishdan boshlagan bo’lardim.
Komandaga eng kamida 1 ta Database engineer, 1 ta DevOps engineer, backend dasturchi va ishni ko’zini biladigan frontend dasturchi olinar edi.
Asosiy texnologiya sifatida FastAPI ni sinab ko’rgan bo’lardim. Boshlanishiga microservice emas, monolit arxitekturani tanlardim. Database uchun relation database masalan Postgresql va connection poolni yaxshilash uchun Pgbouncer. Data partitioning, sharding va scaling kabi database tasklarni barchasini Database engineerga yuklardim.
Caching - backend uchun Redis, front uchun (CDN) Cloudflare maqul variant. Load balancing uchun Nginx va HAProxyni kombinatsiyasi ishlatsa bo’ladi. Load balancerni monolit arxitektura bo’lsada ishlatsa bo’ladi, server ichidagi instance larga traffikni baribir taqsimlash kerak.
Message queue uchun Redis emas, aynan RabbitMQ ni ishlatgan bo’lardim, chunki RabbitMQ aynan queue uchun native tool hisoblanadi. Monitor qilish uchun Prometheus va Grafana kombinatsiyasi va albatta error logs uchun Sentry.
Serverni konteynerlash uchun Docker va Kubernetes kombinatsiyasi va Cloud server esa AWS eng maquli. AWS da ham barchasi uchun alohida servis olinadi(Postgres, Redis Cluster vahokazo) va auto scale funksiyasi yoqiladi.
CI/CD pipeline github yoki gitlab emas, Jenkins orqali amalga oshiriladi. Secure bo’lishi uchun Rate limiting application levelda yoqiladi. Xavfsizlik uchun qo’shimcha ravishda CloudFlare va AWS sozlamalari ham to’g’irlanadi.
Agar “sizga mana 1 yil, va istalgancha moliyaviy resurs sarflab, shu proyektni qiling”, deganda, ishni avvalo kuchli komanda yig’ishdan boshlagan bo’lardim.
Komandaga eng kamida 1 ta Database engineer, 1 ta DevOps engineer, backend dasturchi va ishni ko’zini biladigan frontend dasturchi olinar edi.
Asosiy texnologiya sifatida FastAPI ni sinab ko’rgan bo’lardim. Boshlanishiga microservice emas, monolit arxitekturani tanlardim. Database uchun relation database masalan Postgresql va connection poolni yaxshilash uchun Pgbouncer. Data partitioning, sharding va scaling kabi database tasklarni barchasini Database engineerga yuklardim.
Caching - backend uchun Redis, front uchun (CDN) Cloudflare maqul variant. Load balancing uchun Nginx va HAProxyni kombinatsiyasi ishlatsa bo’ladi. Load balancerni monolit arxitektura bo’lsada ishlatsa bo’ladi, server ichidagi instance larga traffikni baribir taqsimlash kerak.
Message queue uchun Redis emas, aynan RabbitMQ ni ishlatgan bo’lardim, chunki RabbitMQ aynan queue uchun native tool hisoblanadi. Monitor qilish uchun Prometheus va Grafana kombinatsiyasi va albatta error logs uchun Sentry.
Serverni konteynerlash uchun Docker va Kubernetes kombinatsiyasi va Cloud server esa AWS eng maquli. AWS da ham barchasi uchun alohida servis olinadi(Postgres, Redis Cluster vahokazo) va auto scale funksiyasi yoqiladi.
CI/CD pipeline github yoki gitlab emas, Jenkins orqali amalga oshiriladi. Secure bo’lishi uchun Rate limiting application levelda yoqiladi. Xavfsizlik uchun qo’shimcha ravishda CloudFlare va AWS sozlamalari ham to’g’irlanadi.