MongoDB Atlas ir self-hosted: kainos palyginimas

Kas iš tiesų yra MongoDB Atlas ir kodėl apie jį visi kalba

Prieš keletą metų, jei norėjai naudoti MongoDB, turėjai viską daryti pats – nuo serverio nustatymo iki atsarginių kopijų kūrimo. Dabar situacija pasikeitė. MongoDB Atlas atsirado kaip visiškai valdoma debesų paslauga, kuri žada išspręsti visas tavo problemas. Bet ar tikrai verta mokėti už tai, ką gali padaryti pats?

Atlas iš esmės yra MongoDB-as-a-Service. Tai reiškia, kad MongoDB komanda pasirūpina viskuo – nuo infrastruktūros iki saugumo atnaujinimų. Tu tiesiog prisijungi, sukuri duomenų bazę ir pradedi dirbti. Skamba puikiai, tiesa? Bet čia ir prasideda įdomiausia dalis – kainodara.

Kai pradedi naują projektą, dažnai naudoji nemokamą M0 klasterį. Tai puiku eksperimentams ar mažiems projektams, bet kai tik pradedi augti, situacija keičiasi labai greitai. Staiga susiduriame su klausimu: ar tikrai man reikia mokėti 57 USD per mėnesį už M10 klasterį, kai galiu nuomotis serverį už 20 USD?

Tikroji self-hosted MongoDB kaina: daugiau nei tiesiog serverio nuoma

Daugelis žmonių daro klasikinę klaidą – jie žiūri tik į serverio nuomos kainą ir mano, kad tai visa išlaida. Realybė yra daug sudėtingesnė. Kai nusprendžiate patys valdyti MongoDB, jūs prisiimate atsakomybę už daug daugiau nei tiesiog duomenų bazės paleidimą.

Pirma, reikia serverio. Tarkime, nusprendėte naudoti DigitalOcean droplet už 24 USD per mėnesį su 2 GB RAM ir 2 vCPU. Tai atrodo pigiau nei Atlas M10, bet palaukite. Dabar jums reikia:

Atsarginių kopijų sprendimo. Jei norite automatinių kasdienių atsarginių kopijų su saugojimu keliose vietose, tai dar 10-20 USD per mėnesį papildomai. Galite naudoti S3 ar panašius sprendimus, bet tai reikalauja konfigūracijos ir stebėsenos.

Monitoringo įrankių. Kaip žinosite, kad jūsų duomenų bazė veikia gerai? Jums reikės Prometheus, Grafana arba mokamų sprendimų kaip Datadog. Tai dar 15-50 USD per mėnesį, priklausomai nuo to, kiek duomenų renkate.

SSL sertifikatų valdymo. Nors Let’s Encrypt yra nemokamas, jums vis tiek reikia automatizuoti sertifikatų atnaujinimą ir užtikrinti, kad viskas veiktų sklandžiai.

Saugumo atnaujinimų. Kas savaitę ar mėnesį turite patikrinti, ar nėra naujų saugumo spragų ir atnaujinti sistemą. Tai užima laiką, o laikas yra pinigai.

Ir štai dabar prasideda tikrasis skaičiavimas. Jei jūsų DevOps inžinieriaus valandos kaina yra 50 USD, o jis praleidžia 4 valandas per mėnesį prižiūrėdamas MongoDB (o tai labai konservatyvus skaičius), tai dar 200 USD. Staiga tas „pigus” self-hosted variantas kainuoja 254 USD per mėnesį, palyginti su 57 USD už Atlas M10.

Kada Atlas tampa tikrai brangus

Tačiau neskubėkime daryti išvadų, kad Atlas visada geresnis. Yra situacijų, kai Atlas kainodara tampa tiesiog absurdiška. Ypač kai kalbame apie duomenų saugojimą ir pralaidumą.

Vienas mano pažįstamas startup’as turėjo 500 GB duomenų MongoDB Atlas. Jie naudojo M30 klasterį, kuris kainavo apie 580 USD per mėnesį. Tai dar buvo priimtina. Bet kai jų duomenų kiekis išaugo iki 2 TB, jie turėjo pereiti prie M50, kuris kainavo jau 1400 USD per mėnesį. O tai buvo tik pradžia – papildomas saugojimas kainavo dar 250 USD per mėnesį.

Duomenų perdavimo kaštai taip pat gali būti skausmingi. Jei jūsų aplikacija intensyviai naudoja duomenų bazę ir perduoda daug duomenų, Atlas skaičiuoja už kiekvieną GB, kuris išeina už jų tinklo ribų. Tai gali pridėti šimtus dolerių prie jūsų sąskaitos.

Štai kur self-hosted sprendimas tampa patrauklus. Už 200 USD per mėnesį galite gauti dedicated serverį su 4 TB NVMe diskų, 32 GB RAM ir puikiu procesoriumi. Pridėkite dar 50 USD už atsargines kopijas į S3, 30 USD už monitoringą, ir vis tiek išeina pigiau nei Atlas, kai jūsų duomenų kiekis didelis.

Skaičiuojame tikrąsias išlaidas: praktinis pavyzdys

Paimkime realų scenarijų. Turite e-commerce platformą, kuri apdoroja apie 10,000 užsakymų per dieną. Jūsų duomenų bazė auga maždaug 50 GB per mėnesį, ir jums reikia geros našumo bei patikimumo.

Atlas variantas:
M30 klasteris (8 GB RAM, 2 vCPU) – 580 USD/mėn
Papildomas saugojimas (500 GB) – 125 USD/mėn
Atsarginės kopijos (įskaičiuota) – 0 USD
Monitoringas (įskaičiuotas) – 0 USD
DevOps laikas (1 val/mėn) – 50 USD
Iš viso: 755 USD per mėnesį

Self-hosted variantas:
Dedicated serveris (16 GB RAM, 4 vCPU, 1 TB NVMe) – 89 USD/mėn
Atsarginės kopijos į S3 – 35 USD/mėn
Monitoringas (Datadog) – 31 USD/mėn
SSL sertifikatai – 0 USD (Let’s Encrypt)
DevOps laikas (8 val/mėn) – 400 USD
Iš viso: 555 USD per mėnesį

Šiame scenarijuje self-hosted variantas yra pigesnis, bet ne drastiškai. Tačiau atkreipkite dėmesį į DevOps laiką – tai yra kritinis faktorius. Jei jūsų komandoje nėra patyrę žmonės arba jie užimti kitais projektais, tas laikas gali padvigubėti ar patrigubėti.

Paslėptos Atlas privalumai, už kuriuos iš tiesų verta mokėti

Kalbant apie Atlas, yra dalykų, kurių tiesiog negalite lengvai atkurti su self-hosted sprendimu. Ir kai kurie iš jų yra tikrai vertingi.

Automatinis mastelio keitimas yra vienas iš didžiausių Atlas privalumų. Jei staiga gausite trafiko antplūdį (pavyzdžiui, jūsų produktas pateko į Product Hunt pirmą vietą), Atlas gali automatiškai padidinti resursus. Su self-hosted sprendimu jums reikėtų budėti prie kompiuterio arba turėti labai sudėtingą automatizaciją.

Globalus klasterių paskirstymas taip pat yra įspūdingas. Galite turėti duomenis keliose geografinėse vietose su automatine replikacija. Tai reiškia, kad jūsų Europos vartotojai gauna duomenis iš Europos serverių, o Azijos – iš Azijos. Tai smarkiai pagerina našumą.

Point-in-time recovery – galimybė atkurti duomenų bazę į bet kurį momentą per pastarąsias 48 valandas. Tai gelbsti, kai kas nors netyčia ištrina svarbius duomenis 14:37, o jūs tai pastebite tik 16:00. Su self-hosted sprendimu jums reikėtų labai sudėtingos konfigūracijos, kad tai pasiektumėte.

Kada tikrai turėtumėte rinktis self-hosted

Nepaisant visų Atlas privalumų, yra situacijų, kai self-hosted yra ne tik pigesnis, bet ir geresnis pasirinkimas.

Jei turite didelius duomenų kiekius (daugiau nei 1 TB) ir santykinai nuspėjamą apkrovą, self-hosted beveik visada bus ekonomiškesnis. Vienas mano klientas turėjo 5 TB analitinių duomenų MongoDB. Atlas jiems būtų kainavo virš 3000 USD per mėnesį, o jie išsprendė problemą su dedicated serveriu už 250 USD ir papildomais 100 USD už infrastruktūrą.

Jei jūsų organizacija turi griežtus duomenų rezidavimo reikalavimus, kartais tiesiog negalite naudoti debesų paslaugų. Kai kurios pramonės šakos ar šalys reikalauja, kad duomenys būtų saugomi konkrečiose vietose su konkrečiomis saugumo priemonėmis. Tokiais atvejais self-hosted yra vienintelė opcija.

Kai turite patyrusi DevOps komandą, kuri jau valdo kitus serverius ir infrastruktūrą, pridėti MongoDB prie jų atsakomybių sąrašo nėra didelis iššūkis. Jei jau mokate už šiuos žmones ir jie turi laisvo laiko, kodėl nemokėti Atlas?

Hibridiniai sprendimai: geriausia iš abiejų pasaulių

Štai ko daugelis žmonių neapsvarsto – jums nereikia rinktis tik vieno varianto. Galite turėti hibridinį sprendimą, kuris derina abu pasaulius.

Vienas populiarus modelis yra naudoti Atlas produkcijai, self-hosted developmentui ir testams. Tai leidžia jums turėti visus Atlas privalumus ten, kur jie svarbiausi (produkcijoje), tuo pačiu taupant pinigus development aplinkose. Jūsų developeriai gali paleisti MongoDB lokalioje mašinoje arba bendrame development serveryje.

Kitas variantas – naudoti self-hosted pagrindinei duomenų bazei ir Atlas kaip backup. Galite nustatyti replikaciją iš savo serverio į Atlas, kad turėtumėte atsarginę kopiją debesyje. Tai suteikia papildomą saugumo lygį be pilnos Atlas kainos.

Arba galite daryti atvirkščiai – Atlas kaip pagrindinė DB, self-hosted analitikai. Jūsų pagrindinė aplikacija naudoja Atlas dėl patikimumo ir našumo, bet jūs periodiškai sinchronizuojate duomenis į self-hosted MongoDB klasterį, kurį naudojate analitinėms užklausoms. Tai apsaugo jūsų pagrindinę DB nuo sunkių analitinių užklausų.

Ką daryti dabar: sprendimo priėmimo framework

Gerai, perskaitėte visą straipsnį, bet vis dar nežinote, ką rinktis? Štai praktinis būdas priimti sprendimą.

Pradėkite nuo savo komandos įvertinimo. Atsakykite atvirai: ar turite žmogų, kuris gali per 30 minučių išspręsti MongoDB problemą 3 valandą nakties? Jei ne, Atlas tikriausiai yra geresnis pasirinkimas, bent jau pradžiai.

Tada apskaičiuokite savo tikrąsias išlaidas. Neapsiribokite tik serverio kaina. Įtraukite visas papildomas paslaugas, įrankius ir, svarbiausia, žmonių laiką. Būkite realistai – jei manote, kad MongoDB priežiūra užims tik 2 valandas per mėnesį, tikriausiai klystate.

Pagalvokite apie ateitį. Kur planuojate būti po metų? Jei tikitės sparčiai augti, Atlas mastelio keitimo galimybės gali būti labai vertingos. Jei jūsų augimas bus lėtas ir nuspėjamas, self-hosted gali būti ekonomiškesnis ilgalaikėje perspektyvoje.

Ir štai paskutinis patarimas, kurį daugelis ignoruoja: pradėkite su Atlas. Taip, net jei planuojate galiausiai pereiti prie self-hosted. Kodėl? Nes tai leidžia jums sutelkti dėmesį į savo produkto kūrimą, o ne į infrastruktūros valdymą. Kai jūsų produktas pradės uždirbti pinigus ir turėsite aiškesnį vaizdą apie savo poreikius, galėsite priimti informuotą sprendimą apie migraciją.

Realybė tokia, kad nėra vieno teisingo atsakymo. MongoDB Atlas vs self-hosted nėra juoda ar balta situacija. Tai priklauso nuo jūsų specifinių poreikių, komandos, biudžeto ir prioritetų. Svarbu ne tai, kurį variantą pasirinksite dabar, o tai, kad suprastumėte savo pasirinkimo implikacijas ir būtumėte pasirengę keisti kryptį, jei to reikia.

Daugiau

Bun, Node ir Deno: vykdymo laiko karas