54 पॉइंट द्वारा xguru 2022-09-26 | 8 टिप्पणियां | WhatsApp पर शेयर करें
  • OVH cloud के एक बड़े server पर कई SaaS apps चला रहा हूँ
    • रोज़ लगभग 60 लाख non-cached requests handle होते हैं
    • backend है Django/Python + MySQL + Redis + WebSocket(Pub/sub)
    • मेरा secret weapon है OpenResty (Dynamic web platform based on NGINX and LuaJIT)
      • Lua scripts का इस्तेमाल करके complex page caching handle करता हूँ, DDoS रोकता हूँ, WebSocket handle करता हूँ, और long-running requests को offload करता हूँ
      • 1500 lines के Lua code से बना "गरीबों का Cloudflare"
    • ये apps Docker से पहले बनाए गए थे, इसलिए बस processes के रूप में चलते हैं(systemd)
    • शुरुआत में uwsgi इस्तेमाल किया था, लेकिन gunicorn कहीं ज़्यादा efficient निकला, इसलिए अब पूरी तरह उसी पर switch कर लिया
    • मेरा SPOF DNS है. DNSMadeEasy के साथ मेरे अच्छे रिश्ते थे इसलिए auto ban की चिंता नहीं थी, लेकिन अब DigiCert ने उन्हें acquire कर लिया है, तो दिक्कत है
    • payments Stripe और Paypal से process होते हैं. Paypal पसंद नहीं है, फिर भी जोड़ा क्योंकि पता नहीं Stripe कब बिना warning block कर दे
    • user uploads के लिए aiohttp Python server files को Wasabi और Backblaze पर भेजता है और nginx में cache करता है. इसलिए cloud bandwidth bill 0 है
    • WebSocket layer थोड़ा unstable है. शुरू में Python WebSocket asyncio library से सब कुछ handle किया, कुछ हद तक चला भी, लेकिन बाद में multi-process करने की कोशिश की तो resources बहुत ज़्यादा खाने लगा
    • इसलिए OpenResty के WebSocket का इस्तेमाल करने का फैसला किया, लेकिन complex logic Lua में लिखना नहीं चाहता था
      • Redis Pub/Sub का उपयोग करके messages को Python process तक पहुँचाने के लिए बदला
    • लेकिन मैं अपनी service का नाम नहीं बताऊँगा(मुझे और competitors नहीं चाहिए!)
  • मैं अक्सर less-popular options चुनता हूँ, और मुझे लगता है कि solo developers के लिए ये ज़्यादा productive है
    • PostgreSQL + SQLite
    • main language Rust
    • frontend htmx + tailwindcss
    • CloudFlare + Vultr hosting
    • nginx + nixos + circle ci
  • कुछ लोगों को यह पसंद नहीं आएगा, लेकिन मेरे लिए Wordpress चुनना सबसे अच्छा फैसला था
    • forum के लिए bbPress
    • members द्वारा posting वाली community के लिए buddyPress
    • newsletter के लिए बहुत महंगे SaaS की जगह सस्ता mailster.co plugin(Critsend.com का उपयोग)
    • जो features चाहिए होते हैं, उनमें से ज़्यादातर plugins में मिल जाते हैं: searchable FAQ, Captcha, ads, Discord पर post करना, user reporting system आदि
    • https://rpgplayground.com/ चला रहा हूँ
  • OpenAI से compete करने वाली service https://text-generator.io चला रहा हूँ
    • पहले GCP पर Kubernetes इस्तेमाल करता था, अब Cloudflare tunnel के ज़रिए घर से अपने GPUs पर चला रहा हूँ. इससे GPU cost 10 गुना sस्ती पड़ती है.
    • दिए गए links या images का Tesseract / Unified IO / OFA / Beautiful Soup आदि से analysis करके images/receipts पर answers देता है
    • site खुद AppEngine पर Python + Stripe + Firebase UI से बनी है, इसलिए हर हफ्ते कम cost में चल रही है
  • Render पर host कर रहा हूँ
    • PostgreSQL + Rails + Hotwire
    • Stimulus और Turbo Frames मुझे बहुत पसंद हैं
    • UI के लिए Tailwind और Tailwind UI का इस्तेमाल
    • APM है https://skylight.io और https://sentry.io
  • https://allaboutberlin.com चला रहा हूँ
    • DigitalOcean के Docker पर Craft CMS से चल रहा है
    • Craft में custom fields वाले custom post types आसानी से बनाए जा सकते हैं, जो Wordpress में बनाना मुश्किल होता है
    • लेकिन क्योंकि यह Wordpress नहीं है, इसलिए ज़रूरी plugins बहुत ज़्यादा नहीं हैं
    • nginx से caching और कई दूसरी चीज़ें handle करता हूँ
  • productive बनना है तो PETAL आज़माओ
    • Phoenix + Elixir + Tailwind + Alpine.js + LiveView
  • Rails + Postgres + Redis + SideKiq
    • Herokus पर hosting, error tracking के लिए Sentry, performance monitoring के लिए New Relic, mail के लिए Send Grid
    • हाल में Google Analytics को Plausible से replace किया, और Ahoy(Rails Middleware) का उपयोग करके अंदरूनी deep analytics कर रहा हूँ
    • customer support/chat के लिए Intercom इस्तेमाल कर रहा हूँ, लेकिन Chatwoot पर switch करने वाला हूँ
    • Heroku छोड़ने की योजना है, लेकिन मुख्य alternative Render में अभी auto-failover वाला HA Postgres option नहीं है
    • GitHub master branch में push करते ही production में auto deploy हो जाता है.
      • master branch में merge सिर्फ PR से हो सकता है, और Linter(Rubocop) + Tests(Rspec on CircleCI) + 100% coverage(codecov.io) सब Green होने चाहिए
    • UI Bootstrap है, और JavaScript से server-side rendering कर रहा हूँ
      • जिन UIs में ज़्यादा interaction चाहिए, उनके लिए Hotwire/Turbo vs. Alpine vs. Stimulus vs. React पर विचार कर रहा हूँ
  • Agtech platform बना रहा हूँ
    • backend: Rust, Rocket, sqlx, Postgres, थोड़ा Ansible
    • frontend: Rescript + React. Rust/WASM भी काफ़ी इस्तेमाल कर रहा हूँ, लेकिन यह गलती थी. अब वापस जाने की कोशिश कर रहा हूँ

8 टिप्पणियां

 
qkreoaksn 2022-09-29

वाह, आप यह सब अकेले कैसे मैनेज करते हैं, haha

 
galadbran 2022-09-27

लंबे समय लेने वाले web requests को offload करने का मतलब आखिर कैसे किया जाता है, यही सच में जानने की जिज्ञासा है, लेकिन इस पर ज़्यादा बात नहीं है ^^;

 
bohblue23 2022-09-26

Dammm

 
yshrust 2022-09-26

वाह, लोग सच में बहुत अलग-अलग चीज़ें इस्तेमाल करते हैं,, PETAL जैसी combination पहली बार देख रहा हूँ, बढ़िया

 
kandk 2022-09-26

👍

 
jujumilk3 2022-09-26

वाकई बहुत उपयोगी आर्टिकल है, धन्यवाद धन्यवाद!

 
xguru 2022-10-02

HN पर पहले आए हुए पुराने पोस्ट भी देखें
2021 https://news.ycombinator.com/item?id=28299053
2020 https://news.ycombinator.com/item?id=25465582
2019 https://news.ycombinator.com/item?id=21024041