क्या जटिल cloud infrastructure वाकई ज़रूरी है?
- Lex Friedman Podcast पर Pieter Levels की बात सुनकर कई महत्वपूर्ण बातें समझ में आईं
- Pieter एक single server पर application चलाकर एक सफल micro SaaS business बना रहे हैं
- cloud infrastructure की जटिलता से बचकर product-market fit पर ध्यान देना महत्वपूर्ण है
- यह हर startup के लिए सही न भी हो, लेकिन सिर्फ जटिलता के लिए जटिलता से बचना चाहिए
हाल की टिप्पणियाँ
प्रोजेक्ट 1: Lambda overload
- 20-30 Lambda functions के साथ अलग-अलग services चलाई जा रही थीं
- SQS और Lambda का उपयोग करके background jobs चलाई जा रही थीं
- logs CloudWatch में बिखरे हुए थे
नतीजा: debugging कठिन थी, बदलाव करना मुश्किल था, और deployment जटिल था। इसे एक single NodeJS container या Python Flask/FastAPI app और Redis के साथ सरल बनाया जा सकता था
प्रोजेक्ट 2: microservice अव्यवस्था
- Kubernetes (EKS) पर 7 छोटे microservices चल रहे थे
- CRUD और business logic के लिए अलग-अलग services थीं
नतीजा: infrastructure management पर अधिक समय खर्च हो रहा था। सवाल यह है कि क्या इस स्तर की अलगाव व्यवस्था सच में ज़रूरी थी
single server setup की ताकत
- आधुनिक servers काफ़ी शक्तिशाली हैं। Hetzner, latitude.sh कम कीमत पर शक्तिशाली VM देते हैं
- GCP VM और EC2 instances भी उचित कीमत पर उपलब्ध हैं
- 40GB RAM और multi-core के साथ मजबूत computing power मिलती है
- सब कुछ centralized होने से management आसान हो जाता है
- millions QPS तक scale करने की समस्या बाद में भी हल की जा सकती है
single VM setup के लिए आवश्यक चीज़ें:
- एक शक्तिशाली machine (EC2, GCP VM, Hetzner आदि)
- सुरक्षित access (HTTPS, IP-restricted SSH या SSM)
- zero-downtime deployment के लिए CI/CD
- DNS configuration
- नियमित database backups
- standby VM के माध्यम से redundancy
Docker Compose
- Docker Compose local development के लिए शानदार है
- कई services को एक single command से manage किया जा सकता है
- production environment में इसका उपयोग कम होता है
- updates के दौरान downtime हो सकता है
Docker Compose Anywhere: एक weekend project
- Docker Compose Anywhere को weekend के दौरान बनाया गया
- यह निम्नलिखित सुविधाएँ देता है:
- GitHub Actions के जरिए one-click Linux server setup
- GitHub Container Registry और Docker Rollout के साथ zero-downtime deployment
- environment variables और secrets management (
ageयाsopsके उपयोग पर विचार) - GitHub Actions के जरिए automated Postgres backups
- single VM पर multiple apps का support
- Traefik और Let's Encrypt के जरिए automatic SSL
कुछ विचारणीय बातें
सुरक्षा के लिए:
- सख्त firewall rules सेट करें (सिर्फ ज़रूरी ports खोलें)
- SSH keys को सुरक्षित रखें (AWS में SSM, GCP में CLI को प्राथमिकता दें)
- security hardening के लिए bastion host का उपयोग करें
- secrets protection और WAF या Cloudflare के उपयोग पर विचार करें
डेटा सुरक्षा:
- encrypted database backups को सुरक्षित cloud storage में भेजें (जैसे S3)
- अतिरिक्त redundancy के लिए disk snapshots नियमित रूप से बनाएं
- backups और snapshots के लिए retention policy लागू करें
GN⁺ का सार
- यह लेख इस बात पर ज़ोर देता है कि startups को जटिल cloud infrastructure से बचकर सरल setup के साथ product-market fit पर ध्यान देना चाहिए
- इसमें single server setup के फ़ायदे और Docker Compose के साथ आसान deployment का तरीका बताया गया है
- जटिल infrastructure management पर समय बर्बाद करने के बजाय core product development पर ध्यान देना महत्वपूर्ण है
- समान प्रकार की सुविधाएँ देने वाले projects में Heroku, DigitalOcean आदि शामिल हैं
1 टिप्पणियां
Hacker News टिप्पणियाँ
कई प्रोजेक्ट्स में नवीनतम तकनीकें इस्तेमाल करने की कोशिश करने वाली टीमें अक्सर कम गुणवत्ता वाले नतीजे बनाती हैं
छोटे startup में एक ही VM पर nginx, webapp, postgres, redis आदि चलाए जाते हैं
SaaS को एक single server पर शुरू करके कई servers तक scale किया जाता है
Kubernetes की मुख्य सुविधाएँ जैसे deployment, pod services, blue-green deployment उपयोगी हैं
बहुत से लोग Kubernetes सीखने के लिए complex infrastructure बनाते हैं
microservices की किताबों में भी "पहले monolith बनाओ" की सलाह दी जाती है
शुरुआत से ही complex framework चुनने की सिफारिश नहीं की जाती
क्लाउड में केवल VM, block और blob storage, DNS, IdP, और domain registrar का उपयोग किया जाता है
6 साल तक एक single $10/माह VPS पर प्रोजेक्ट चलाया गया
cloud-based solutions को प्राथमिकता दी जाती है, लेकिन चुनिंदा रूप से उपयोग किया जाता है