Databázy účtované podľa toho, čo skutočne využívajú
Každá aplikácia Mythex, ktorá potrebuje ukladať dáta, dostane vlastnú Postgres databázu a využitie databázy publikovanej aplikácie sa odpočítava z rovnakého kreditového zostatku ako stavanie. Až do konca septembra sme toto využitie odhadovali podľa toho, ako dlho bežal server aplikácie. Odhad sa ukázal ako nesprávny spôsobom, na ktorom záležalo, a tak sme ho nahradili: každá databáza sa teraz účtuje podľa výpočtového výkonu, ktorý jej poskytovateľ skutočne zmeral, po jednej ukončenej hodine, a každú hodinu možno spoplatniť len raz.
Ako databázy fungujú
Každá databáza beží na bezserverovom Postgrese, ktorý sa zmenší na nulu: po niekoľkých minútach nečinnosti zaspí a prebudí sa pri ďalšom dotaze. Keď je hore, môže výpočtový výkon podľa záťaže zvyšovať a znižovať. Vďaka tomu je „databáza pre každú aplikáciu“ dostupná — väčšina aplikácií je väčšinu času tichá a spiaca databáza stojí takmer nič.
Znamená to aj, že cena databázy závisí od dvoch vecí, ktoré zvonku nevidíme: ako dlho bola hore a aká veľká bola, keď bola hore.
Čo odhad zle odhadol
Náš pôvodný merač robil jeden predpoklad: za každú hodinu, počas ktorej bežal server publikovanej aplikácie, účtoval databázu v najmenšej veľkosti výpočtu.
To bolo nesprávne tromi spôsobmi:
- Veľkosť bola zlá. Databázy v skutočnosti bežali vo väčšej predvolenej veľkosti, než predpokladal odhad.
- Databázy sa škálujú automaticky. Pri záťaži rastú a odhad to nikdy nevidel.
- Databázy nenasledujú server aplikácie. Databáza zostáva hore vždy, keď ju čokoľvek dotazuje — aplikácia, naplánovaná úloha, skript, ktorý ju dopytuje — bez ohľadu na to, či bol server aplikácie spustený.
Čistý výsledok: odhad účtoval používateľom zhruba polovicu toho, čo databázy skutočne stáli. To nie je udržateľné a znamenalo to aj to, že čísla využitia v aplikácii neznamenali to, čo ľudia z nich vyčítali.
Meranie namiesto hádania
Náš poskytovateľ databáz hlási pre každý projekt výpočtové jednotky v sekundách za hodinu — koľko výpočtového výkonu skutočne použil vrátane veľkosti. Merač teraz funguje takto:
- Pre každú publikovanú aplikáciu s databázou získaj nameranie využitia za každú ukončenú hodinu od jej spustenia.
- Prepočítaj toto využitie na cenu podľa cenníka poskytovateľa, aplikuj sadzbu plánu a účtuj ju na kredity vlastníka aplikácie.
- Pri každom behu sa pozri spätne až o deň, aby sa hodiny zmeškané počas reštartu nášho API spoplatnili neskôr.
Úložisko sa účtuje samostatne podľa veľkosti, pretože nezávisí od aktivity.
Nikdy neúčtovať hodinu dvakrát
Merač fakturácie, ktorý beží na viacerých serveroch a môže spadnúť a operáciu zopakovať, musí byť opatrný, aby nič neúčtoval dvakrát. Každá hodina každej databázy sa najprv zarezervuje vo vlastnom riadku databázy, ešte pred účtovaním, s jedinečnostným obmedzením na dvojicu (databáza, hodina). Ak sa dva servery alebo opakovanie pokúsia účtovať tú istú hodinu, uspeje len jedna rezervácia.
Zvolili sme aj vedomé rozhodnutie pre zriedkavý prípad zlyhania: ak proces spadne medzi rezerváciou hodiny a jej účtovaním, táto hodina zostane rezervovaná a neúčtovaná. Strata malej časti príjmu pri zriedkavom páde je lepšia než účtovať niekomu dvakrát.
A keď sa zapol merač podľa skutočného využitia, začal od ďalšej celej hodiny. Hodiny pred ňou už boli účtované starým odhadom; účtovať ich znova podľa nameraných dát by znamenalo účtovať ten úsek dvakrát.
Čo to znamená, ak na Mythex budujete
- Vaša faktúra za databázu teraz odráža to, čo databáza skutočne robila. Málo používaná aplikácia stojí veľmi málo; aplikácia, ktorá databázu neustále dopytuje, ju bude držať hore a bude stáť viac.
- Najväčšia páka je spôsob, akým vaša aplikácia používa databázu. Dopytovanie databázy každých pár sekúnd ju drží hore nonstop. Ak AI dáta načíta na požiadanie alebo ich uloží do vyrovnávacej pamäte, databáza môže spať. Náš sprievodca, čo je databáza pokrýva základy.
- Plány Pro platia za hosting, databázy a úložisko polovicu sadzby plánu Free. Podrobnosti sú v dokumentácii ku kreditom.
Čo sme si z toho odniesli
- Odhady nákladov závislých od využitia zastarávajú. Keď vám poskytovateľ vie povedať, čo sa spotrebovalo, účtujte podľa toho.
- Urobte fakturáciu idempotentnou na najmenšej jednotke, ktorú účtujete. Pre nás je to jedna hodina databázy.
- Keď musíte zlyhať, zlyhajte v prospech zákazníka.