Blog

Zaračunavanje baz po dejanski porabi

Vsaka aplikacija Mythex, ki potrebuje shranjevanje podatkov, dobi svojo bazo Postgres, poraba baze objavljene aplikacije pa se odšteva z istega stanja kreditov kot gradnja. Do konca septembra smo to porabo ocenjevali glede na to, kako dolgo je strežnik aplikacije deloval. Ocena se je izkazala za napačno na način, ki je bil pomemben, zato smo jo zamenjali: vsaka baza se zdaj zaračunava po računskih zmogljivostih, ki jih je njen ponudnik dejansko izmeril, po eno končano uro naenkrat, in vsaka ura se lahko zaračuna samo enkrat.

Kako delujejo baze

Vsaka baza teče na brezstrežniškem Postgresu, ki se skalira na nič: po nekaj minutah nedejavnosti zaspi in se prebudi ob naslednji poizvedbi. Ko je budna, lahko svoje računske zmogljivosti povečuje in zmanjšuje glede na obremenitev. Zaradi tega je „baza za vsako aplikacijo“ cenovno dosegljiva – večina aplikacij je večino časa tihih, speča baza pa skoraj ničesar ne stane.

To pomeni, da je strošek baze odvisen od dveh stvari, ki ju od zunaj ne vidimo: kako dolgo je bila budna in kako velika je bila, ko je bila budna.

Kaj je bilo napačno v oceni

Naš prvotni merilnik je predpostavljal: za vsako uro, ko je strežnik objavljene aplikacije tekel, zaračunaj bazo po najmanjši velikosti računskih zmogljivosti.

To je bilo narobe na tri načine:

  1. Velikost je bila napačna. Baze so dejansko tekle na večji privzeti velikosti, kot jo je predpostavljala ocena.
  2. Baze se samodejno skalirajo. Pod obremenitvijo rastejo, ocena tega nikoli ni videla.
  3. Baze ne sledijo strežniku aplikacije. Baza ostane budna, kadarkoli jo kaj poizveduje – aplikacija, načrtovano opravilo, skript, ki jo ponavlja –, ne glede na to, ali je strežnik aplikacije deloval.

Končni učinek: ocena je uporabnike zaračunavala približno polovico tistega, kar so baze dejansko stale. To ni vzdržno za nas, hkrati pa so bila števila porabe v aplikaciji zavajajoča glede na to, kar so ljudje mislili, da pomenijo.

Merjenje namesto ugibanja

Naš ponudnik baz za vsak projekt poroča računske enote-sekunde na uro – koliko računske moči je dejansko porabil, vključno z velikostjo. Merilnik zdaj deluje tako:

  1. Za vsako objavljeno aplikacijo z bazo pridobi izmerjeno porabo za vsako končano uro od trenutka, ko je aplikacija šla v živo.
  2. Porabo pretvori v strošek po ceni ponudnika, uporabi stopnjo naročnine in zaračuna kreditom lastnika aplikacije.
  3. Vsakič pogleda nazaj do en dan, tako da se ure, zamujene med ponovnim zagonom našega API-ja, zaračunajo kasneje.

Shramba se zaračunava ločeno, glede na velikost, saj ni odvisna od dejavnosti.

Nikoli ne zaračunaj ure dvakrat

Merilnik za obračunavanje, ki teče na več kot enem strežniku – in se lahko sesuje in ponovi –, mora paziti, da ne zaračuna dvakrat. Vsaka ura vsake baze je pred zaračunavanjem zahtevana v lastni vrstici baze podatkov, z omejitvijo edinstvenosti za par (baza, ura). Če dva strežnika ali ponovitev poskušata zaračunati isto uro, uspe samo ena zahteva.

Pri redkem primeru napake smo se namenoma odločili: če proces med zahtevanjem ure in njenim zaračunavanjem sesuje, ta ura ostane zahtevana in nezaračunana. Izgubiti majhen delček prihodkov ob redki zrušitvi je boljše kot komu zaračunati dvakrat.

Ko se je merjeno obračunavanje vklopilo, je začelo od naslednje cele ure. Ure pred tem je stara ocena že zaračunala; če bi jih znova zaračunali po izmerjenih podatkih, bi bil ta odsek zaračunan dvakrat.

Kaj to pomeni, če gradite na Mythexu

  • Vaš račun za bazo zdaj odraža, kaj je vaša baza počela. Redko uporabljana aplikacija stane zelo malo; aplikacija, ki nenehno poizveduje po bazi, jo bo držala budno in bo dražja.
  • Največji vzvod je, kako vaša aplikacija uporablja bazo. Če bazo poizvedujete vsakih nekaj sekund, ostane budna ves čas. Če AI podatke pridobi na zahtevo ali jih predpomni, lahko baza spi. Naš vodnik o tem, kaj je baza pokrije osnove.
  • Naročniki Pro plačajo za gostovanje, baze in shrambo polovico cene Free. Podrobnosti so v dokumentaciji o kreditih.

Kaj smo iz tega vzeli

  • Ocene stroškov, odvisnih od porabe, zastarajo. Ko vam ponudnik lahko pove, kaj je bilo porabljeno, zaračunajte po tem.
  • Naj bo obračunavanje idempotentno na najmanjši enoti, ki jo zaračunate. Za nas je to ena ura baze.
  • Ko morate odpovedati, odpovejte v korist stranke.

Mythex · Pricing · Zgradite karkoli z AI · Predloge za spletna mesta in aplikacije · Mythex v primerjavi · Slovar pojmov gradnje aplikacij z AI · Brezplačna orodja za gradnjo aplikacij z 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 Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)