Blog

Naplaćivanje baza podataka prema onome što zaista koriste

Svaka Mythex aplikacija kojoj treba prostor za podatke dobija sopstvenu Postgres bazu, a potrošnja baze objavljene aplikacije skida se sa istog bilansa kredita kao i pravljenje. Do kraja septembra procenjivali smo tu potrošnju prema tome koliko je serverska aplikacija bila pokrenuta. Procena se pokazala pogrešnom na način koji je bio važan, pa smo je zamenili: sada se svaka baza naplaćuje prema računarskim resursima koje je njen provajder zaista izmerio, jedan završen sat u trenutku, i svaki sat može da se naplati samo jednom.

Kako baze rade

Svaka baza radi na serverless Postgres-u koji se skalira na nulu: posle nekoliko minuta bez aktivnosti ona spava, a budi se na sledeći upit. Dok je budna, može da podešava svoje računarske resurse gore i dole prema opterećenju. Zato je „baza po aplikaciji” pristupačna — većina aplikacija je tiha većinu vremena, a uspavana baza košta gotovo ništa.

To takođe znači da trošak baze zavisi od dve stvari koje spolja ne vidimo: koliko dugo je bila budna i koliko je bila velika dok je bila budna.

Šta je procena pogrešno računala

Naš prvobitni merač imao je jednu pretpostavku: za svaki sat u kojem je serverska aplikacija objavljene aplikacije radila, naplaćivala se baza u najmanjoj veličini računarskih resursa.

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

  1. Veličina je bila pogrešna. Baze su zapravo radile u većoj podrazumevanoj veličini nego što je procena pretpostavljala.
  2. Baze se automatski skaliraju. Pod opterećenjem rastu, a procena to nikada nije videla.
  3. Baze ne prate serversku aplikaciju. Baza ostaje budna kad god je bilo šta upituje — aplikacija, zakazani posao, skripta koja je stalno proverava — bez obzira na to da li je serverska aplikacija bila podignuta.

Neto efekat: procena je korisnicima naplaćivala otprilike polovinu onoga što su baze zaista koštale. To nije održivo za nas, a značilo je i da brojevi potrošnje u aplikaciji nisu značili ono što su ljudi mislili.

Merenje umesto nagađanja

Naš provajder baze za svaki projekat prijavljuje sekunde računarskih jedinica po satu — koliko je računarskih resursa zaista potrošeno, uključujući veličinu. Zato merač sada radi ovako:

  1. Za svaku objavljenu aplikaciju sa bazom preuzmi izmerenu potrošnju za svaki završen sat otkad je aplikacija postala javna.
  2. Pretvori tu potrošnju u trošak po ceni provajdera, primeni stopu plana i naplati je sa kredita vlasnika aplikacije.
  3. Svaki put gledaj unazad do jednog dana, tako da sati propušteni dok je naš API bio ponovo pokrenut i dalje budu naplaćeni kasnije.

Skladište se naplaćuje posebno, prema veličini, jer ne zavisi od aktivnosti.

Nikada ne naplatiti isti sat dvaput

Merač za naplatu koji radi na više servera — i može da padne i ponovo pokuša — mora pažljivo da izbegne dvostruko naplaćivanje. Svaki sat svake baze se rezerviše u sopstvenom redu baze pre naplate, uz ograničenje jedinstvenosti na paru (baza, sat). Ako dva servera, ili ponovni pokušaj, pokušaju da naplate isti sat, uspeva samo jedno rezervisanje.

Takođe smo napravili svestan izbor za redak slučaj otkaza: ako proces padne između rezervisanja sata i njegove naplate, taj sat ostaje rezervisan i nenaplaćen. Gubitak sitnog dela prihoda u retkom padu bolji je od toga da se ikome ikad naplati dvaput.

A kada je merena naplata uključena, krenula je od sledećeg punog sata. Sati pre toga već su bili naplaćeni starom procenom; naplaćivanje tih sati ponovo na osnovu izmerenih podataka značilo bi dvostruku naplatu tog perioda.

Šta ovo znači ako gradite na Mythex-u

  • Vaš račun za bazu sada odražava ono što je vaša baza zaista radila. Aplikacija koja se retko koristi košta vrlo malo; aplikacija koja stalno upituje svoju bazu drži je budnom i košta više.
  • Najveći uticaj ima to kako vaša aplikacija koristi bazu. Ako bazu proverava svakih nekoliko sekundi, ona ostaje budna non-stop. Ako AI podatke preuzima na zahtev ili ih kešira, baza može da spava. Naš vodič o tome šta je baza podataka pokriva osnove.
  • Pro planovi plaćaju upola manju cenu od Free plana za hosting, baze i skladište. Detalji su u dokumentaciji o kreditima.

Šta smo iz ovoga izvukli

  • Procene troškova zasnovanih na potrošnji zastarevaju. Kada uzvodni provajder može da kaže šta je potrošeno, naplaćujte prema tome.
  • Neka naplata bude idempotentna na najmanjoj jedinici koju naplaćujete. Za nas je to jedan sat rada baze.
  • Kada morate da pogrešite, pogrešite u korist kupca.

Mythex · Pricing · Pravite bilo šta uz AI · Šabloni za sajtove i aplikacije · Mythex u poređenju · Rečnik pojmova za pravljenje aplikacija uz AI · Besplatni alati za pravljenje aplikacija uz AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski 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 Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)