Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni

🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!

07.12.2022

Плани проєкту "зворотній ping" - вибір мови та хостінгу

📋🦡🎈 Продовжую планування для проєкту “пінг, але навпаки”.

По-перше, на чому його писати? Спочатку думав продовжити реалізацію на Firebase. Але ж таке рішення коштуватиме порівняно багато, оскільки використовує хмарні функції — хоч у Firebase і щедрі безплатні ліміти. А мені хочеться, щоб можна було пінгувати сервіс хоч щохвилини.

При меті досягти найбільше з найменшими витратами мій вибір буде Golang та fly.io. Тут почати можна вже за $2 на місяць, і не хвилюватись про кількість запитів.

Але є інша сторона витрат — база даних. Зазвичай база — то окремий сервіс, тобто ще $2 на місяць, а скоріше за все, більше, бо сучасні бази не хочуть працювати на 256 MB оперативної памʼяті. Тому вирішив зробити ще один неординарний хід та розмістити базу даних всередині головного додатка, тобто вбудувати. Тоді не тільки не потрібно переплачувати, а ще й працюватиме швидше.

Можна було взяти для цього SQLite3, але ще краще, на мій погляд, випробувати одну з декількох вбудованих key-value баз, що існують для Golang. Поки зупинився на базі Badger. Якщо спрощувати, то це типу Redis, але працюватиме прямо в додатку. Вміє вона зберігати дані на диск (бо як без цього), синхронізувати (в майбутньому) декілька вузлів, підтримує транзакції. Єдине, що мені трохи не подобається, це те, що API роботи з базою — це не “просто писати в структуру даних”, а все ж таки схоже на роботу з сервісом.