4 पॉइंट द्वारा GN⁺ 2024-09-15 | 1 टिप्पणियां | WhatsApp पर शेयर करें

क्या जटिल 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 के लिए आवश्यक चीज़ें:

  1. एक शक्तिशाली machine (EC2, GCP VM, Hetzner आदि)
  2. सुरक्षित access (HTTPS, IP-restricted SSH या SSM)
  3. zero-downtime deployment के लिए CI/CD
  4. DNS configuration
  5. नियमित database backups
  6. 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 टिप्पणियां

 
GN⁺ 2024-09-15
Hacker News टिप्पणियाँ
  • कई प्रोजेक्ट्स में नवीनतम तकनीकें इस्तेमाल करने की कोशिश करने वाली टीमें अक्सर कम गुणवत्ता वाले नतीजे बनाती हैं

    • कुछ अपरिपक्व टीमें Kubernetes को समझे बिना ही उसे इस्तेमाल करना चाहती हैं
    • Puppet का उपयोग करके अलग-अलग VM पर Docker services चलाने या Python backend चलाने के लिए automated process बनाया जाता है
    • startup क्लाउड पर बहुत पैसा खर्च कर रहे हैं, फिर भी 2017 के DevOps pioneers से भी खराब नतीजे बना रहे हैं
    • संबंधित ब्लॉग पोस्ट: The Emperor's New clouds
  • छोटे startup में एक ही VM पर nginx, webapp, postgres, redis आदि चलाए जाते हैं

    • developers एक ही configuration के साथ local environment में काम कर सकते हैं, इसलिए debugging आसान होती है
    • vertical scaling संभव है, इसलिए शुरुआती चरण में यह उपयुक्त है
  • SaaS को एक single server पर शुरू करके कई servers तक scale किया जाता है

    • Kubernetes का उपयोग किए बिना भी distributed database चलाया जाता है
    • cloud provider की virtual machines की तुलना में अधिक शक्तिशाली bare metal servers का उपयोग किया जाता है
    • automation tools के रूप में ansible और terraform का उपयोग करके servers को manage किया जाता है
  • Kubernetes की मुख्य सुविधाएँ जैसे deployment, pod services, blue-green deployment उपयोगी हैं

    • cloud-native environment में कई open source systems का उपयोग करने पर चीजें जटिल हो सकती हैं
  • बहुत से लोग Kubernetes सीखने के लिए complex infrastructure बनाते हैं

    • बड़े clients तक scale करने पर यह उपयोगी हो सकता है
    • founders या CTO के लिए यह कम उपयोगी हो सकता है
  • microservices की किताबों में भी "पहले monolith बनाओ" की सलाह दी जाती है

    • शुरुआत में monolith का उपयोग करने से debugging आसान होती है
    • Docker का उपयोग करके शुरुआती चरण को सरल बनाया जाता है
    • business की ज़रूरत के अनुसार Kubernetes में switch किया जाता है
  • शुरुआत से ही complex framework चुनने की सिफारिश नहीं की जाती

    • अपने खुद के tools का उपयोग करना हमेशा अधिक efficient नहीं हो सकता
    • standard tools का उपयोग करना long term में अधिक efficient हो सकता है
  • क्लाउड में केवल VM, block और blob storage, DNS, IdP, और domain registrar का उपयोग किया जाता है

    • FaaS जैसी services जटिल होती हैं और debugging मुश्किल होती है
    • एक single VM और monolithic codebase आदर्श है
  • 6 साल तक एक single $10/माह VPS पर प्रोजेक्ट चलाया गया

    • VPS तकनीक बहुत आगे बढ़ चुकी है और reliability बहुत अधिक है
    • cloud infrastructure का उपयोग collaboration और operations management सुविधाओं के लिए किया जाता है
  • cloud-based solutions को प्राथमिकता दी जाती है, लेकिन चुनिंदा रूप से उपयोग किया जाता है

    • Google Cloud Platform(GCP) का उपयोग करके cost कम की जाती है
    • Kubernetes का उपयोग नहीं किया जाता
    • Docker का उपयोग करके deployment को सरल बनाया जाता है
    • GCP की managed services समय बचाती हैं