Изображение на Aphinya Dechalert Озаглавено: Прочетете / Напишете Monster Feasting на Firebase Bill

Как НЕ да получите сметка от 30 000 долара от Firebase

тайната е в архитектурата

Юли миналата година кампания за финансиране на множество се превърна в вирусна в Колумбия. Всичко беше добро и весело през първите 48 часа. Те успяха да достигнат до над 2 милиона сесии и над 20 милиона гледания на страници - с уебсайт, който остана напълно функционален без бъркане.

Докато не видяха сметката.

$ 30 356,56USD за 72 часа.

Каквато и печалба да е имала в кампанията за краудфандинг, скоро ще бъде изядена от разходите за стартиране на приложението.

Защо се обърка толкова?

Една от най-големите разлики между Firebase и традиционните бази данни в облак е моделът на ценообразуване. Amazon, Digital Ocean, Google Cloud, Microsoft Azure и всички други доставчици използват модел на заплащане на час, например базирани бази данни.

Firebase, обаче, таксува на база 100 000 - 250 000 заявки за четене, писане и изтриване в базата данни. Ако можете да го задържите в този диапазон, действителната ви сметка не трябва да струва повече от 25 долара. DynamoDB на Amazon работи по подобна мантра за ценообразуване, само че не разделя разходите за съхранение на данни от заявките за четене и запис.

За разлика от тях традиционните облачни бази данни са ограничени от броя на едновременните връзки, налични на всеки ниво и всъщност няма значение какво или колко взаимодействате с вашата база данни, тъй като тя вече се плаща за час. Всякакви предупреждения към това са във всяка отделна услуга и финият печат на нейния доставчик.

Колумбийската кампания за краудфандинг направи грешката при прочитането на всеки запис на документ в определена колекция, за да се изчислят общите събрани и стойности на поддръжка всеки път, когато потребителят погледне определен изглед. Това означава, че ако има 100 дарения, приложението ще извърши повикване в базата данни веднъж, но действителният акт на четене ще се равнява на 100 четения два пъти - веднъж за стойностите, необходими за изчисляване на общия и втори път за броя на поддръжниците - общо 200 заявка за четене.

Нещата се влошават, когато се изисква този номер да се показва на няколко страници и следователно се изчислява няколко пъти. Когато броят на поддръжниците започна да удря хилядите и изгледите на страници се покачиха на повече от 2 милиона, стана много лесно заявките за четене в базата данни да достигнат милиарди.

Това не е грешка в плащането в Google или технологичният гигант се опитва да вземе пари. Това е случай на човешка грешка в структурата на данните, неоптимизирана за ефективност. Колумбийският стартъп щеше да се сблъска с връзки с бази данни, които максимират проблеми или нещо подобно, дори ако отидат с традиционно облачно решение вместо Firebase. Коренът на проблема е в броя на връзките и прехвърлените данни - не самата услуга.

Как да поддържам нещата под 25 долара

Когато използваме Firebase, ние сме склонни да мислим само за аспекта на базата данни на услугата. Google обаче предоставя щедро количество извиквания на облачни функции с пакета. Човек почти би могъл да каже, че се опитват да ни насърчат да го използваме.

С 2 милиона извиквания на месец или 0,40 долара на милион при модела на заплащане при ценообразуване, това ви кара да се чудите защо те биха дали толкова много в сравнение с четене / запис / изтриване на взаимодействия с базата данни.

Тъй като Firebase е структура без таблици, лесно е да се стартират обобщени таблици за оптимизиране на заявките за данни. Не само, че е по-бързо връщането на резултатите, броят на заявките за четене / запис / изтриване също намалява значително.

Кампанията за краудфандинг използва структура от данни в Firebase, която е подобна на схемата, илюстрирана по-долу.

Въпреки това, горната структура е неефективна за мащабиране, въпреки че реалната инфраструктура има възможности за работа с нея.

Облачните функции действат като евтин микро услуга заден край, който намалява процеса, който се случва в предния край. На диаграмата по-долу, когато документ за плащане се вмъкне в колекцията, той задейства облачна функция, която актуализира друг документ в колекция, която следи данните, които трябва да бъдат изчислени. В резултат на това първият тригер води до три действия - два записа на документ и едно четене. Въпреки че това може да изглежда като повече четене и писане, повечето приложения се четат тежко и следователно трябва да бъдат оптимизирани за това.

При тази структура това означава, че когато се изискват данни, се изискват само данни в кампания 1, което води до едно четене, вместо връщане на пет отделни резултата.

Когато тази структура наброява до един милион гледания, се очаква само да извършите един милион четене на обаждания, а не да избухнете експоненциално, тъй като се извършват повече плащания. Може да се влоши, ако приложението ви се актуализира в реално време.

Преосмисляне на начина, по който пишете приложенията си

Всъщност няма значение дали сте с Firebase или не. Хостинг приложенията в днешно време е евтино, но като цяло базите данни все още могат да бъдат скъпи, ако не се държат под контрол. Данните са това, което прави приложение, а връзките, заявките за четене и запис са нещата, които се случват най-много, когато става въпрос за трафик на трафик между различни части на приложението.

Докато предният край се зарежда бързо, бекендът е това, което поддържа всичко организирано и проверено. Традиционните архитектури предлагат сесии с данни в бекенда, но архитектурите без сървър често нямат тази полза.

Необходимо е обаче повече пространство и мощност за обработка, за да стартирате резервния файл, който може да повиши общата ви сметка. Сървърните структури предлагат услуга при поискване, която може да струва по-малко. Мисленето за това как вашите данни ще продължат да съществуват ще се отрази върху скоростта на реакция и броя на общите четения и записи, необходими, за да ви предоставят необходимите ви данни. Колкото по-малко се изисква обработка след това, толкова по-добре е за мащабиране на разходите за цялостното ви приложение във времето.

Нека останем свързани и се присъединете към страхотния ми списък за бюлетин от уебсайтове. Благодаря ви за четенето.❤

Aphinya