Є конкретний момент, коли managed-база перестає бути зручністю і стає стіною. Вам потрібне розширення, якого немає в тарифі. Ви хочете бачити реальний план запиту і налаштувати work_mem. Вам потрібен суперюзер. Managed-сервіс — чудовий дефолт рівно до моменту, коли треба володіти цим самому, — і тоді чесна відповідь це VPS з повним root.
Ця сторінка про те, як правильно підняти власний PostgreSQL або Redis і внятно сказати, де спільна машина — вірний вибір, а де ні.
Що базі даних реально потрібно
Бази даних дбають про дві речі, до яких ігровому серверу байдуже: памʼять під робочий набір і дисковий I/O. Приблизна картина:
- Один застосунок — інстанс Postgres (або Redis) плюс бекенд-сервіс. Робочий набір зазвичай 1.7-2 ГБ. Small ($8) тягне без драми.
- Кілька застосунків або реальна продакшн-конкуренція — більше зʼєднань, більші кеші, фонові задачі. Medium ($12) дає запас.
- До бази мають дотягуватися інші машини — потрібна стабільна маршрутизована адреса, тобто тариф з виділеним IPv4 (Small-IP $16 і вище). Про це нижче.
Redis ще легший — він упирається в памʼять, тож підберіть тариф під датасет плюс накладні, і все. Postgres — той, хто винагороджує за невеликий тюнінг.
Справжня причина self-host: контроль
Ось де VPS виправдовує своє місце. На своїй машині вам дістається:
- Увесь
postgresql.conf—shared_buffers,work_mem,max_connections, налаштування WAL, все, під ваше навантаження, а не під дефолти вендора. - Будь-яке розширення.
pgvectorдля ембедингів і семантичного пошуку,PostGISдля геоданих,TimescaleDBдля часових рядів,pg_cron,pg_stat_statements— ставте, що треба. Managed-тарифи часто обмежують список розширень або ховають його за тариф вищий. - Суперюзер і ОС під ним. Можете перенести каталог даних, тюнити ядро, ганяти
pg_dumpза своїм розкладом і підняти потокову реплікацію на іншу машину, якщо захочете.
Якщо нічого з цього вам не важливо — managed-база це справді нормально, і варто взяти її. Ця сторінка для випадку, коли важливо.
Де спільна машина — не той інструмент
Прямо: спільний VPS з vCPU не побудований під важкий OLTP — сотні транзакцій на секунду з критичними до затримки записами. Таке навантаження живе або вмирає на гарантованому дисковому I/O і рівній частоті, а спільні тарифи ні того, ні іншого не обіцяють. Якщо це про вас — вам потрібне виділене залізо, і ми скажемо це зараз, а не дивитимемося, як ваш p99 ганьбить нас обох.
Для куди частішого випадку — база за одним застосунком, внутрішній інструмент, аналітичне сховище, кеш — спільний тариф рівно те, що треба.
Бекапи не опційні
Self-host означає бекапи — ваша робота, і єдине правило: робіть їх до того, як знадобляться. Для Postgres — pg_dump за кроном для логічних бекапів або архівація WAL для point-in-time відновлення всього, що вам реально дороге. Відправляйте дампи з машини — в обʼєктне сховище або на інший сервер — щоб мертвий диск не забрав бекапи із собою. Перевірте відновлення хоча б раз. Бекап, який ви жодного разу не відновлювали, — це надія, а не бекап.
Як дати іншим серверам підключитися
Якщо база обслуговує лише застосунок на тій же машині — привʼяжіть її до localhost, і все, нема чого відкривати. Щойно всередину потрібно іншій машині, змінюються дві речі:
- Потрібна стабільна маршрутизована адреса — це тариф з виділеним IPv4 (Small-IP $16, Medium-IP $20). NAT-тарифи ділять адресу — це нормально для вихідного, але не для ролі бази, до якої дзвоняться інші сервери.
- Закриваєте фаєрволом жорстко. Відкривайте 5432 (або 6379) лише конкретним IP, яким треба, ніколи не
0.0.0.0/0, і вимагайте TLS. Відкритий порт Postgres у публічному інтернеті знаходять за хвилини.
Вибір тарифу
| Конфігурація | Тариф |
|---|---|
| БД за одним застосунком, лише localhost | Small ($8) |
| Кілька застосунків / продакшн-конкуренція | Medium ($12) |
| Інші сервери мають підключатися | Small-IP ($16) / Medium-IP ($20) |
| Важкий OLTP, сотні TPS | виділене залізо, не спільний VPS |
Більшість власних баз стартують на Small і доростають до Medium або тарифу з виділеним IP у міру додавання застосунків чи зовнішніх клієнтів.
Чому тут
Повний root означає це ваша база до самого низу — кожен рядок конфіга, кожне розширення, ваш розклад бекапів, жоден тариф не вирішує, що вам можна ставити. Оплата криптою (USDC або USDT на Base, Ethereum чи Polygon), без KYC, без документів. Root приблизно за 60 секунд після оплати, а Postgres може приймати зʼєднання ще за пару хвилин.
Чесне резюме: self-host, коли хочете контроль — розширення, тюнінг, суперюзер — і коли навантаження помірне. Для бази невеликого-середнього застосунку спільний тариф — вірний інструмент. Для сотень TPS критичного до затримки OLTP — ні, і ми це скажемо. Готові? Оберіть тариф.