Friendship ended with Heroku, now fly.io is my best friend.

Коли я починаю проект то завжди намагаюсь застосувати нову технологію. Для @Donate1024Bot я обрав дві таких: хостинг на fly.io та верстку з Tailwind CSS. І якщо остання завдала клопоту, то перша виправдала себе на 100%. Про це і розповім.

Вперше я натрапив на fly.io на HackerNews, де обговорювався їх блог-пост A Foolish Consistency: Consul at Fly.io. Я тоді прочитав цей матеріал і подумав “Нічого собі! Оце хлопці роблять рокет саєнс!”. Якщо коротко то Fly позиціонює себе як хостинг з точками присутності по всьому світу з мінімальним оверхедом на віртуалізацію.

Щоб досягнути цього вони побудували приватну IPv6 мережу між датацентрами по всьому світу з'єднану через WireGuard, для віртуалізації використовують Firecracker, а зверху написали купу софту яким тим всім керує, наприклад конвертер з Docker імеджів у Firecracker, свій DNS-сервер для гнучких гео-запитів і багато іншого цікавого. Рекомендую ознайомитись.

Останні місяці я платив за Heroku 60$. Значну частку рахунку складали adopt.ua та blogigram.com (сервіс що публікує пости з блогу в телеграм) які тягнули по 23$ кожний за дві віртуалки та постгрес. Донат бот теж потребував 2 процеси—вебсервер та воркер для бекграунд джоб. Збільшувати рахунок ще на 14$ мене якось ламало. Але і переносити існуючі проекти мотивації не було. Тому як тільки випала нагода, я вирішив протестувати fly.io.

Процес деплою аплікації докладно описаний в доках. Робота відбувається через CLI, навідміну від Heroku, де все можна наклікати у веб-інтерфейсі.

Перед початком роботи потрібно розгорнути Postgres кластер. Кластер немає обмежень по розміру бази, навідміну від Heroku що дає всього 10 000 рядків у Free Tier. Його можна приєднувати до потрібних аплікацій. Я швиденько то налаштував, потім підняв Redis, який потрібен мені для Sidekiq.

Далі просто. Fly працює з докер-контейнерами, тому вам треба або вже мати свій, або fly launch детектить що за мова та фреймворк використовується і генерує Dockerfile під вас.

Потім потрібно встановити секрети (ключі AWS і так далі) через fly secret set і нарешті fly deploy. Ця команда підніме ваш особистий безкоштовний білд-сервер, надішле туди сорци, збере докер імедж, і задеплоїть його.

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

Після першого деплою апки можна додати домени та сертифікати.

Через день я подивився у скільки мені то все обійшлося і був приємно здивований—я вліз у Free Tier і витратив лише пару центів.

Про мережу я розповім пізніше, але Fly мені так сподобався що я вирішив перенести туди всі свої проекти з Heroku. Сказано—зроблено. Завдяки тому що Heroku ефемерний, то мені потрібно було лише забрати звідти дампи баз.

Вчора я переніс останній проект—adopt.ua, довелось трошки повозитися з докер імеджом, бо там використовується старий вебпакер, але вреші все запрацювало. Мене приємно вразила швидкість роботи. Сайт став буквально літати. Можете поклікати котиків та оцінити.

Heroku це просто надбудова на AWS, тому він працює достатньо швидко, але зовісм не так як Fly, який розгортає ваші контейнери прямо на залізі. За рахунок цього вони по-перше, значно дешевші та по-друге, більш швидкодійні.

Через пару днів буду розуміти у скільки мені то все обійдеться, але схоже що я легко влізу в 15$ на місяць за всі проекти.

Якщо ви хостите свої проекти на DO/AWS/Heroku ще десь то наполегливо рекомендую подивитися на fly.io.


Сподобалось? Долучайтеся до мого телеграм каналу: https://t.me/full_of_hatred