Tietokantojen laskutus sen mukaan, mitä ne oikeasti käyttävät
Jokainen Mythex-sovellus, joka tarvitsee tallennettua dataa, saa oman Postgres-tietokannan, ja julkaistun sovelluksen tietokannan käyttö tulee samasta krediittisaldosta kuin rakentaminenkin. Syyskuun loppuun asti arvioimme tämän käytön sen perusteella, kuinka kauan sovelluksen palvelin oli käynnissä. Arvio osoittautui vääräksi tavalla, jolla oli väliä, joten korvasimme sen: jokainen tietokanta laskutetaan nyt palveluntarjoajan mittaaman laskennan mukaan, valmiin tunnin kerrallaan, ja jokainen tunti voidaan veloittaa vain kerran.
Miten tietokannat toimivat
Jokainen tietokanta toimii palvelinottomassa Postgresissa, joka skaalautuu nollaan: muutaman tyhjäkäyntiminuutin jälkeen se nukahtaa ja herää seuraavaan kyselyyn. Herätessään se voi säätää laskentatehoaan kuormituksen mukaan. Juuri tästä tulee se, että ”tietokanta jokaiselle sovellukselle” on edullinen: useimmat sovellukset ovat hiljaisia suurimman osan ajasta, ja nukkuva tietokanta maksaa lähes ei mitään.
Se tarkoittaa myös, että tietokannan hinta riippuu kahdesta asiasta, joita emme näe ulkopuolelta: kuinka kauan se oli hereillä ja kuinka suuri se oli herätessään.
Mitä arvio väärin
Alkuperäinen mittarimme teki yhden oletuksen: jokaiselta tunnilta, jolloin julkaistun sovelluksen palvelin oli käynnissä, veloitettiin tietokanta pienimmällä laskentakoolla.
Se oli väärin kolmella tavalla:
- Koko oli väärä. Tietokannat toimivat oikeasti suuremmalla oletuskoolla kuin arvio oletti.
- Tietokannat skaalautuvat automaattisesti. Kuormituksen alla ne kasvavat, eikä arvio nähnyt sitä koskaan.
- Tietokanta ei seuraa sovelluspalvelinta. Tietokanta pysyy hereillä aina, kun mikä tahansa kysyy siltä jotain: sovellus, ajastettu työ tai skripti, joka kysyy sitä säännöllisesti, riippumatta siitä, oliko sovelluksen palvelin käynnissä.
Nettovaikutus oli, että arvio veloitti käyttäjiltä noin puolet siitä, mitä tietokannat oikeasti maksoivat. Se ei ole kestävää meille, ja se teki myös sovelluksen käyttölukuihin näkyvistä luvuista harhaanjohtavia.
Mittaaminen arvaamisen sijaan
Tietokantapalveluntarjoajamme raportoi jokaisen projektin laskentayksikkösekunnit tunnissa, eli kuinka paljon laskentaa se todella käytti, kokoon suhteutettuna. Mittari toimii nyt näin:
- Jokaiselle tietokannalliselle julkaistulle sovellukselle haetaan mitattu käyttö jokaiselta valmiilta tunnilta siitä lähtien, kun sovellus julkaistiin.
- Käyttö muunnetaan kustannukseksi palveluntarjoajan hinnalla, tilauksen hinnaston mukaan, ja veloitetaan sovelluksen omistajan krediiteistä.
- Joka kerta katsotaan taaksepäin enintään yksi päivä, joten tunnit, jotka jäivät veloittamatta API:n uudelleenkäynnistyksen aikana, veloitetaan myöhemmin.
Tallennustila veloitetaan erikseen koon mukaan, koska se ei riipu aktiivisuudesta.
Ei koskaan veloiteta tuntia kahdesti
Laskutusmittari, joka toimii useammalla palvelimella ja voi kaatua ja yrittää uudelleen, on oltava varovainen, ettei se veloita kahdesti. Jokainen tietokannan tunti varataan omaan tietokantariviinsä ennen veloitusta, ja pari (tietokanta, tunti) on yksilöllinen. Jos kaksi palvelinta tai uudelleenyritys yrittää laskuttaa saman tunnin, vain yksi varaus onnistuu.
Teimme myös harkitun valinnan harvinaisen virhetilanteen varalle: jos prosessi kaatuu varaamisen ja veloittamisen välissä, tunti jää varatuksi ja veloittamatta. Pieni tulonmenetys harvinaisessa kaatumisessa on parempi kuin kenenkään veloittaminen kahdesti.
Kun mitattu laskutus käynnistyi, se aloitti seuraavasta täydestä tunnista. Sitä edeltävät tunnit oli jo veloitettu vanhan arvion mukaan, ja niiden laskuttaminen uudelleen mitatusta datasta olisi veloittanut saman jakson kahdesti.
Mitä tämä tarkoittaa, jos rakennat Mythexillä
- Tietokantalaskusi kuvastaa sitä, mitä tietokantasi teki. Harvoin käytetty sovellus maksaa hyvin vähän. Sovellus, joka kysyy tietokannaltaan jatkuvasti, pitää sen hereillä ja maksaa enemmän.
- Suurin vipu on se, miten sovelluksesi käyttää tietokantaa. Tietokannan kysyminen muutaman sekunnin välein pitää sen hereillä ympäri vuorokauden. Kun pyydät tekoälyä hakemaan dataa tarvittaessa tai välimuistittamaan sen, tietokanta saa nukkua. Oppaastamme mikä on tietokanta löytyvät perusteet.
- Pro-tilaukset maksavat puolet Free-hinnasta hostauksesta, tietokannoista ja tallennustilasta. Yksityiskohdat löytyvät krediittien dokumentaatiosta.
Mitä opimme
- Käyttöperusteisten kustannusten arviot vanhenevat. Kun ylävirran palveluntarjoaja kertoo, mitä on käytetty, laskuta sen mukaan.
- Tee laskutuksesta idempotenttia pienimmällä veloitettavalla yksiköllä. Meillä se on yksi tietokantatunti.
- Kun joudut epäonnistumaan, epäonnistu asiakkaan eduksi.