Blog

Naplata baza podataka prema stvarnoj potrošnji

Svaka Mythex aplikacija koja treba pohraniti podatke dobiva vlastitu Postgres bazu, a potrošnja objavljene baze dolazi s istog stanja kredita kao i izrada. Do kraja rujna tu potrošnju procjenjivali smo prema tome koliko dugo je serverska aplikacija radila. Procjena se pokazala pogrešnom na način koji je bio važan, pa smo je zamijenili: svaka baza sada se naplaćuje prema računalnim resursima koje je njen pružatelj zaista izmjerio, za jedan završen sat u isto vrijeme, a svaki sat se može naplatiti samo jednom.

Kako baze rade

Svaka baza radi na serverless Postgresu koji se skalira na nulu: nakon nekoliko minuta mirovanja zaspi, a budi se na sljedeći upit. Dok je budna, može prilagoditi svoje računalne resurse s opterećenjem. Upravo to čini “bazu po aplikaciji” pristupačnom, jer većina aplikacija većinu vremena miruje, a spavajuća baza košta gotovo ništa.

To također znači da trošak baze ovisi o dvije stvari koje izvana ne možemo vidjeti: koliko je dugo bila budna i koliko je bila velika dok je bila budna.

Što je procjena krivo mjerila

Naš prvi mjerač pretpostavljao je jednu stvar: za svaki sat u kojem je serverska aplikacija objavljene aplikacije radila, naplati bazu po najmanjoj veličini računalnih resursa.

To je bilo pogrešno na tri načina:

  1. Veličina je bila kriva. Baze su zapravo radile na većoj zadanoj veličini nego što je procjena pretpostavljala.
  2. Baze se automatski skaliraju. Pod opterećenjem rastu, a procjena to nikad nije vidjela.
  3. Baze ne prate serversku aplikaciju. Baza ostaje budna kad god je bilo što upituje, aplikacija, zakazani posao ili skripta koja je stalno provjerava, bez obzira je li serverska aplikacija radila.

Krajnji učinak: procjena je korisnicima naplaćivala otprilike polovicu onoga što su baze zaista koštale. To nije održivo za nas, a značilo je i da brojke potrošnje u aplikaciji nisu značile ono što su ljudi mislili.

Mjerenje umjesto nagađanja

Naš pružatelj baze prijavljuje svaki projekt u sekundama računalnih jedinica po satu, odnosno koliko je računalnih resursa zaista potrošio, uključujući veličinu. Mjerač sada radi ovako:

  1. Za svaku objavljenu aplikaciju s bazom dohvati izmjerenu potrošnju za svaki završen sat od kad je aplikacija postala javna.
  2. Pretvori tu potrošnju u trošak po cijeni pružatelja, primijeni stopu paketa i naplati to s kredita vlasnika aplikacije.
  3. Pri svakom pokretanju gleda unatrag do jedan dan, pa se sati propušteni dok je naš API bio ponovno pokretan i dalje naplate kasnije.

Pohrana se naplaćuje zasebno, prema veličini, jer ne ovisi o aktivnosti.

Nikad ne naplatiti sat dvaput

Mjerač naplate koji radi na više servera i može se srušiti i ponoviti mora pažljivo paziti da ne naplati dvostruko. Svaki sat svake baze zauzima se vlastitim redom u bazi podataka prije nego se naplati, uz jedinstveno ograničenje na par (baza, sat). Ako dva servera ili jedan ponovni pokušaj pokušaju naplatiti isti sat, uspjeva samo jedno zauzimanje.

Također smo donijeli namjernu odluku za rijedak slučaj neuspjeha: ako proces padne između zauzimanja sata i njegove naplate, taj sat ostaje zauzet i nenaplaćen. Izgubiti sitan dio prihoda u rijetkom padu bolje je od toga da se nekome ikad naplati dvaput.

A kad se izmjerena naplata uključila, krenula je od sljedećeg punog sata. Sati prije toga već su bili naplaćeni procjenom, a ponovno naplaćivanje tog razdoblja iz izmjerenih podataka naplatilo bi ga dvaput.

Što ovo znači ako gradite na Mythexu

  • Vaš račun za bazu sada odražava što je vaša baza radila. Rijetko korištena aplikacija košta vrlo malo; aplikacija koja stalno upituje bazu drži je budnom i košta više.
  • Najveća poluga je način na koji vaša aplikacija koristi bazu. Ako bazu provjeravate svakih nekoliko sekundi, ona je budna cijelo vrijeme. Ako AI dohvaća podatke na zahtjev ili ih sprema u predmemoriju, baza može spavati. Naš vodič o tome što je baza podataka pokriva osnove.
  • Pro paketi plaćaju pola Free cijene za hosting, baze podataka i pohranu. Detalji su u dokumentaciji o kreditima.

Što smo iz ovoga naučili

  • Procjene troškova temeljenih na potrošnji zastarijevaju. Kad vam uzvodni pružatelj može reći što je potrošeno, naplaćujte prema tome.
  • Neka naplata bude idempotentna na najmanjoj jedinici koju naplaćujete. Za nas je to jedan sat baze.
  • Kad morate pogriješiti, pogriješite u korist kupca.

Mythex · Pricing · Izradite bilo što uz AI · Predlošci za web stranice i aplikacije · Mythex u usporedbi · Rječnik izrade aplikacija uz AI · Besplatni alati za izradu aplikacija uz AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)