Kuva Aphinya Dechalert. Otsikko: Lue / kirjoita hirviöjuhlia Firebase-laskussa

Kuinka EI saada 30 000 dollarin laskua Firebase-palvelusta

salaisuus on arkkitehtuurissa

Viime vuoden heinäkuussa väkijoukkojen rahoittamiskampanja kävi virusperäiseksi Kolumbiassa. Se oli hyvä ja dandy ensimmäisen 48 tunnin aikana. He onnistuivat saavuttamaan yli 2 miljoonaa istuntoa ja yli 20 miljoonaa sivun katselua - verkkosivustolla, joka pysyi täysin toiminnassa ilman koukkua.

Kunnes he näkivät laskun.

30 356,56 USD USD 72 tunnissa.

Riippumatta siitä, mitä hyötyjä heillä oli joukkorahoituskampanjasta, sovelluksen ylläpitämisen kustannukset syövät pian.

Miksi se meni niin pieleen?

Yksi suurimmista eroista Firebase- ja perinteisten pilvipohjaisten tietokantojen välillä on hinnoittelumalli. Amazon, Digital Ocean, Google Cloud, Microsoft Azure ja kaikki muut palveluntarjoajat käyttävät esimerkiksi tunnitietoihin perustuvia tietokantoja.

Firebase kuitenkin laskuttaa per 100–250 000 luku-, kirjoitus- ja poistopyyntöjä tietokantaan. Jos pystyt pitämään sen tällä alueella, todellisen laskusi ei pitäisi maksaa yli 25 dollaria. Amazonin DynamoDB toimii samanlaisella hinnoittelumantralla paitsi, että ne jakavat tietojen tallennuskustannukset luku- ja kirjoituspyyntöihin.

Sitä vastoin perinteisiä pilvitietokantoja rajoittaa jokaisella kerroksella käytettävissä olevien samanaikaisten yhteyksien määrä, ja sillä ei ole oikeasti merkitystä, kuinka paljon tai kuinka paljon käytät tietokantaa, koska se on jo maksettu tunti. Tätä koskevia huomautuksia on jokaisessa yksittäisessä palvelussa ja sen tarjoajan hienossa versiossa.

Kolumbian joukkorahoituskampanja teki virheen lukemalla tietyn kokoelman jokaista asiakirjamerkintää laskeakseen kerättyjen kokonaisarvojen ja tuki-arvojen joka kerta, kun käyttäjä katsoi tiettyä näkymää. Tämä tarkoitti, että jos lahjoituksia olisi 100, sovellus soittaisi tietokantaan kerran, mutta todellinen lukema vastaa 100 lukemista kahdesti - kerran arvoille, joita tarvitaan kokonaislaskelmaan, ja toisen kerran kannattajien lukumäärään - yhteensä 200 lukupyyntöä.

Asiat pahenivat, kun tämän numeron on oltava näkyvissä useilla sivuilla ja laskettu siksi useita kertoja. Kun kannattajien lukumäärä alkoi kärsiä tuhansista ja sivun katselukerrat nousivat yli 2 miljoonaan, tietokantaan lukemista koskevista pyynnöistä tuli erittäin helppoa saavuttaa miljardeja.

Tämä ei ole Googlen laskutusvirhe tai tekniikan jättiläinen, joka yrittää napata rahaa. Tämä on tapaus inhimillisistä virheistä tietorakenteessa, jota ei ole optimoitu tehokkuuden parantamiseksi. Kolumbian käynnistys olisi joutunut kohtaamaan tietokantayhteydet, jotka olisivat selvittäneet ongelmat tai jotain vastaavaa, vaikka he käyttäisivät perinteistä pilvipalvelinratkaisua Firebaseen sijasta. Aihe johtuu yhteyksien ja siirrettyjen tietojen määrästä - ei itse palvelusta.

Kuinka pitää asiat alle 25 dollaria

Kun käytämme Firebase-palvelua, meillä on tapana ajatella vain palvelun tietokanta-osaa. Google tarjoaa kuitenkin paketin mukana runsaasti pilvifunktio kutsuja. Voisi melkein sanoa, että he yrittävät rohkaista meitä käyttämään sitä.

Kun hinnoittelumallilla on 2 miljoonaa kutsua kuukaudessa tai 0,40 dollaria miljoonalta, niin saat ihmettelemään, miksi he antaisivat niin paljon verrattuna tietokannan vuorovaikutusten lukemiseen / kirjoittamiseen tai poistamiseen.

Koska Firebase on pöytätön rakenne, yhdistelmätaulukoiden on helppo käynnistää tietopyyntöjen optimoimiseksi. Tulosten palauttamisen lisäksi on myös nopeampaa lukea / kirjoittaa / poistaa pyyntöjä.

Yhteisrahoituskampanja käytti Firebase-tietorakennetta, joka on samanlainen kuin alla oleva kaavio.

Edellä esitetty rakenne ei kuitenkaan ole tehokas skaalaamiseen, vaikka todellisella infrastruktuurilla on kyky käsitellä sitä.

Pilvitoiminnot toimivat halvalla mikropalvelun takapäällä, joka vähentää käyttöliittymässä tapahtuvaa prosessia. Seuraavassa kaaviossa, kun maksutosite lisätään kokoelmaan, se laukaisee pilvitoiminnon, joka päivittää toisen kokoelman asiakirjan, joka seuraa laskettavia tietoja. Seurauksena ensimmäinen liipaisin johtaa kolmeen toimintaan - kaksi asiakirjan kirjoittamista ja yksi luettu. Vaikka tämä saattaa tuntua enemmän lukevalta ja kirjoittavalta, useimmat sovellukset luetaan raskaaksi, ja se on siksi optimoitava sitä varten.

Tällä rakenteella se tarkoittaa, että tietoja pyydettäessä vaaditaan vain kampanjan 1 tietoja, mikä johtaa yhden lukemisen sijasta viiden erillisen tuloksen palauttamiseen.

Kun tämä rakenne skaalaa jopa miljoona näyttökertaa, sinun odotetaan soittavan vain miljoona lukupuhelua sen sijaan, että räjähtää räjähdysmäisesti, kun lisää maksuja suoritetaan. Se voi pahentua, jos sovelluksesi päivitetään reaaliajassa.

Mieti uudelleen sovellusten kirjoittamistapaa

Sillä ei ole väliä, oletko Firebaseen vai et. Sovellusten isännöinti on nykyään halpaa, mutta yleensä tietokannat voivat silti olla kalliita, jos niitä ei pidetä hallinnassa. Tiedot muodostavat sovelluksen ja yhteydet, luku- ja kirjoituspyynnöt tapahtuvat eniten, kun kyse on sovelluksen eri osien välisestä liikennevirrasta.

Vaikka käyttöliittymä on nopea käynnistyä, taustaohjelma pitää kaiken järjestäytyneenä ja varmassa. Perinteiset arkkitehtuurit tarjoavat dataistuntoja taustalla, mutta palvelimettomilla arkkitehtuureilla ei usein ole tätä etua.

Taustan suorittamiseen tarvitaan kuitenkin enemmän tilaa ja käsittelytehoa, joka voi lisätä kokonaista laskuasi. Palvelimettomat rakenteet tarjoavat kysynnän tyyppisiä palveluita, jotka voivat lopulta maksaa vähemmän. Ajattelemalla, kuinka tietosi jatkavat, vaikuttaa reagointinopeuteen ja lukemien ja kirjoitusten kokonaismäärään, jotta tarvittavat tiedot saadaan. Mitä vähemmän prosessointia tarvitaan sen jälkeen, sitä parempi se on sovelluksesi kokonaiskustannustettavaksi ajan myötä.

Olkaamme yhteyksissä ja liitymme mahtavaan verkkosivustojen uutiskirje-luettelooni.Kiitos lukemisesta.❤

Aphinya