🏰 Про мою мини-инфраструктуру
Немножко захотелось осветить то, как я веду мини-проектики, где их держу, завожу, на чем пишу, ну и вот это все.
Для начала, что вообще за мини-проектики? Ну, пока это только бот sp_link_saver_bot и мини-апп sp_adv_reminder_bot. Они были скорее "пробой пера", чем чем-то серьезным, - чтобы самому для себя все потыкать, повспоминать, чему-то новому может научиться, ну и устаканить процесс разработки. Сейчас вроде все устаканено и можно в целом любого рода сервис достаточно быстро раскатить, и будет там сразу и сборка, и деплой, и базовый мониторинг, и взаимодействие с другими сервисами, ну и все такое.
🔹 На виртуалке крутится однонодный k8s кластер, поднятый с использованием "дистрибутива" k0s. Поднимается с нуля реально за пару часов, если совсем не в контексте, то за денек.
🔹 Этот кластер менеджится через GitOps тулзу Flux. Коротко говоря, она позволяет хранить все состояние кластера в репозитории и работать с ним как с кодом. Закодил ямл - запушил - он раскатился в кластер.
🔹 В кластере подняты всякие PostgreSQL, Redis, ClickHouse, настроены бэкапы в S3 Yandex Cloud, ну и всякое остальное по мелочи.
🔹 Бэкенд-приложения пишу на Scala (недавно еще мигрировал на третью) + zio.
🔹 Собираю их через nix в нативные GraalVM бинарники. Бинарники пакуются nix'ом в образы, которые пушатся в гитлаб реджистри.
🔹 В кластере через изкоробочные средства Flux настроен поллинг новых имеджей в реджистри, так что как только там появляется новый образ приложения, оно перераскатывается.
🔹 Сборка (и последующий деплой) происходит по коммиту в master. Поэтому итоговый флоу разработки простой и приятный: пушишь в мастер, собирается и пушится в реджистри образ, образ подхватывается в кластере и все перераскатывается.
🔹 Настроен базовый мониторинг через Uptime Kuma, чисто получать уведомления в телегу, когда что-то отвалилось. В перспективе хочется каких-то графиков, логов, метрик, алертов, но пока что-то руки не доходят заняться.
🔹 Фронт пишу на SvelteKit, раскатываю на GitLab Pages, тут все супер-просто вроде.
Вот как-то так. В ближайшее время будем на этой инфре что-нибудь еще разворачивать, так что оставайтесь на связи 🫡
А как вы разворачиваете свои проекты? 🤔