Блог

Оплата баз даних за тим, що вони справді використовують

Кожен застосунок Mythex, якому потрібно зберігати дані, отримує власну базу даних Postgres, а використання бази опублікованим застосунком списується з того самого балансу кредитів, що й створення. До кінця вересня ми оцінювали це використання за тим, як довго працював сервер застосунку. Оцінка виявилася хибною у способі, який мав значення, тож ми її замінили: тепер кожна база даних оплачується за обчисленнями, які її провайдер справді виміряв, по одній завершеній годині, і кожна година може бути списана лише один раз.

Як працюють бази даних

Кожна база працює на безсерверному Postgres, який масштабується до нуля: після кількох хвилин бездіяльності вона засинає, а прокидається від першого запиту. Коли вона не спить, її обчислювальна потужність може зростати і зменшуватися разом із навантаженням. Саме це робить можливою схему «одна база даних на застосунок»: більшість застосунків майже весь час тихі, а спляча база коштує майже нічого.

Це також означає, що вартість бази залежить від двох речей, яких ззовні не видно: як довго вона не спала і якого розміру була, поки не спала.

Що помилялася оцінка

Наш початковий лічильник робив припущення: за кожну годину, протягом якої сервер опублікованого застосунку працював, він нараховував вартість бази за найменший розмір обчислень.

Це було неправильно у трьох відношеннях:

  1. Розмір був неправильний. Бази насправді працювали на більшому типовому розмірі, ніж припускала оцінка.
  2. Бази масштабуються автоматично. Під навантаженням вони зростають, а оцінка цього не бачила.
  3. Бази не слідують за сервером застосунку. База не спить, поки що-небудь її запитує — застосунок, заплановане завдання, скрипт, що її опитує, — незалежно від того, працював сервер застосунку чи ні.

Підсумок: оцінка брала з користувачів приблизно половину того, що бази справді коштували. Для нас це не стало б стійким, а ще й означало, що цифри використання в застосунку не означали того, що люди в них бачили.

Вимірювати, а не вгадувати

Наш провайдер баз даних звітує про секунди обчислювальних одиниць на годину для кожного проєкту — скільки обчислень він справді використав, з урахуванням розміру. Тепер лічильник працює так:

  1. Для кожного опублікованого застосунку з базою даних отримуємо виміряне використання за кожну завершену годину з моменту, коли застосунок був запущений.
  2. Перетворюємо це використання на вартість за ціною провайдера, застосовуємо тариф плану і списуємо з кредитів власника застосунку.
  3. Щоразу дивимося назад до доби, тож години, пропущені поки наш API перезапускався, все одно буде оплачено пізніше.

Сховище оплачується окремо, за розміром, бо воно не залежить від активності.

Ніколи не списувати одну годину двічі

Лічильник оплати, що працює більш ніж на одному сервері і може падати та повторюватися, має бути обережним, щоб не списати подвійно. Кожна година кожної бази резервується в окремому рядку бази даних перед нарахуванням, з обмеженням унікальності на пару (база, година). Якщо два сервери або повторна спроба намагаються оплатити одну й ту саму годину, успішним буде лише один запис.

Ми також свідомо обрали рішення для рідкісного випадку збою: якщо процес падає між резервуванням години і її нарахуванням, ця година лишається зарезервованою і неоплаченою. Втрата невеликої частини доходу під час рідкісного збою краща, ніж подвійне списання з когось.

А коли виміряне оплачення було увімкнено, воно почалося з наступної повної години. Години до того вже були оплачені старою оцінкою, і оплата їх знову за виміряними даними списала б цей відрізок двічі.

Що це означає, якщо ви будуєте на Mythex

  • Ваш рахунок за базу тепер відображає те, що ваша база справді робила. Застосунок, яким рідко користуються, коштує дуже мало; застосунок, який постійно запитує свою базу, не дає їй заснути і коштує більше.
  • Найбільший важіль — це те, як ваш застосунок використовує базу. Опитування бази кожні кілька секунд тримає її активною цілодобово. Якщо просити ШІ отримувати дані на вимогу або кешувати їх, база може спати. Наш посібник про те, що таке база даних, пояснює основи.
  • Плани Pro платять вдвічі меншу ціну за тариф Free за хостинг, бази даних і зберігання. Деталі в документації про кредити.

Що ми з цього винесли

  • Оцінки вартості, що залежить від використання, з часом розходяться з реальністю. Коли зовнішній провайдер може сказати, що було використано, оплачуйте за цими даними.
  • Робіть оплату ідемпотентною на найменшій одиниці, яку ви списуєте. Для нас це одна година роботи бази даних.
  • *Якщо мусите помилитися, помиляйтеся на користь клієнта.

Mythex · Pricing · Створюйте що завгодно з ШІ · Шаблони сайтів і застосунків · Порівняння Mythex · Глосарій створення застосунків за допомогою ШІ · Безкоштовні інструменти для створення застосунків за допомогою ШІ · English

English አማርኛ العربية Български বাংলা Bosanski Català Č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 简体中文 繁體中文(香港) 繁體中文(台灣)