- 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 कर रहा हूँ
- 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 टिप्पणियां
वाह, आप यह सब अकेले कैसे मैनेज करते हैं, haha
लंबे समय लेने वाले web requests को offload करने का मतलब आखिर कैसे किया जाता है, यही सच में जानने की जिज्ञासा है, लेकिन इस पर ज़्यादा बात नहीं है ^^;
Dammm
वाह, लोग सच में बहुत अलग-अलग चीज़ें इस्तेमाल करते हैं,, PETAL जैसी combination पहली बार देख रहा हूँ, बढ़िया
👍
वाकई बहुत उपयोगी आर्टिकल है, धन्यवाद धन्यवाद!
एकल-व्यक्ति tech startup की architecture stack
एकल-व्यक्ति SaaS, Healthchecks.io का tech stack
एकल-व्यक्ति SaaS डेवलपर के लिए tools की सिफारिश
सालाना $6 में startup चलाना
न्यूनतम मेहनत से software startup चलाना
Stimulus + Turbo Frames - Hotwire : HTML Over The Wire
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