Blog

Facturar les bases de dades pel que realment fan servir

Cada app de Mythex que necessita emmagatzemar dades té la seva pròpia base de dades Postgres, i l'ús de base de dades d'una app publicada surt del mateix saldo de crèdits que la construcció. Fins a finals de setembre estimàvem aquest ús a partir de quant temps estava en marxa el servidor de l'app. L'estimació resultava ser errònia d'una manera que importava, així que la vam substituir: ara cada base de dades es factura segons el càlcul que el seu proveïdor ha mesurat realment, una hora completada cada vegada, i cada hora només es pot cobrar una vegada.

Com funcionen les bases de dades

Cada base de dades corre sobre Postgres sense servidor que escala a zero: després d'uns pocs minuts d'inactivitat s'adorm, i es desperta amb la següent consulta. Mentre està despert pot pujar i baixar la seva capacitat de còmput segons la càrrega. Això és el que fa assequible «una base de dades per app»: la majoria d'apps estan tranquil·les la major part del temps, i una base de dades adormida gairebé no costa res.

També vol dir que el cost d'una base de dades depèn de dues coses que no podem veure des de fora: quant de temps ha estat despert i quina mida tenia mentre estava despert.

Què encertava malament l'estimació

El nostre mesurador original feia una suposició: per a cada hora que el servidor d'una app publicada estava en marxa, cobrava una base de dades a la mida de càlcul més petita.

Això estava equivocat de tres maneres:

  1. La mida era errònia. Les bases de dades funcionaven en realitat amb una mida per defecte més gran que la que suposava l'estimació.
  2. Les bases de dades s'auto-escalen. Sota càrrega creixen, i l'estimació mai no ho veia.
  3. Les bases de dades no segueixen el servidor de l'app. Una base de dades es manté despert sempre que qualsevol cosa hi consulti —l'app, una tasca programada, un script que la consulta cada cert temps—, tant si el servidor de l'app estava en marxa com si no.

El resultat net: l'estimació cobrava als usuaris aproximadament la meitat del que costaven realment les bases de dades. Això no és sostenible per a nosaltres, i a més feia que les xifres d'ús a l'app no volguessin dir el que la gent creia que volien dir.

Mesurar en lloc de suposar

El proveïdor de la nostra base de dades informa de unitats de còmput-segon per hora de cada projecte: quant de còmput ha usat realment, mida inclosa. Així que el mesurador ara funciona així:

  1. Per a cada app publicada amb una base de dades, obté l'ús mesurat de cada hora completada des que l'app va entrar en línia.
  2. Converteix aquest ús en cost al preu del proveïdor, aplica la tarifa del pla i el cobra als crèdits del propietari de l'app.
  3. Mira enrere fins a un dia cada vegada, de manera que les hores perdudes mentre la nostra API es reiniciava també es cobren més tard.

L'emmagatzematge es factura per separat, per mida, perquè no depèn de l'activitat.

Mai cobrar una hora dues vegades

Un mesurador de facturació que s'executa en més d'un servidor —i que pot caure i tornar a intentar— ha de tenir cura de no cobrar dues vegades. Cada hora de cada base de dades es reclama en la seva pròpia fila de la base de dades abans de cobrar-la, amb una restricció d'unicitat sobre la parella (base de dades, hora). Si dos servidors, o un reintent, intenten facturar la mateixa hora, només una reclamació té èxit.

També vam prendre una decisió deliberada sobre el cas de fallada poc freqüent: si el procés cau entre reclamar una hora i cobrar-la, aquella hora queda reclamada i sense facturar. Perdre una petita part d'ingressos en una caiguda rara és millor que cobrar algú dues vegades.

I quan la facturació mesurada es va activar, va començar a partir de la següent hora completa. Les hores anteriors ja les havia cobrat l'estimació antiga; tornar-les a facturar a partir de dades mesurades hauria cobrat aquell tram dues vegades.

Què significa això si construeixes sobre Mythex

  • La teva factura de base de dades ara reflecteix què ha fet la teva base de dades. Una app que s'usa poc costa molt poc; una app que consulta la seva base de dades constantment la mantindrà despert i costarà més.
  • El factor més important és com la teva app fa servir la base de dades. Consultar la base de dades cada pocs segons la manté despert tot el dia. Demanar a la IA que obtingui les dades sota demanda, o guardar-les en memòria cau, permet que la base de dades dormi. La nostra guia sobre què és una base de dades cobreix les bases.
  • Els plans Pro paguen la meitat de la tarifa gratuïta per a allotjament, bases de dades i emmagatzematge. Els detalls són a les documentació de crèdits.

Què n'hem après

  • Les estimacions de costos basats en l'ús es desvien. Quan el proveïdor en amont et pot dir què s'ha usat, factura a partir d'aquestes dades.
  • Fes que la facturació sigui idempotent en la unitat més petita que cobres. En el nostre cas, una hora de base de dades.
  • Quan has de fallar, fes-ho a favor del client.

Mythex · Pricing · Crea qualsevol cosa amb IA · Plantilles de llocs web i aplicacions · Mythex comparat · Glossari de creació d’aplicacions amb IA · Eines gratuïtes per crear aplicacions amb IA · English

English አማርኛ العربية Български বাংলা Bosanski Č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 Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)