Как перестать велосипедить или 4 self-hosted сервиса для начинающего СТО

Я знаю многое о велосипедах в Enterprise-разработке. Видел издали, катался на них, собирал сам, но наступают моменты, когда типичные задачи пора перевести на типичные решения. В статье расскажу о 4 self-hosted сервисах, которые освобождают уйму времени на действительно важные вещи.

Как перестать велосипедить или 4 self-hosted сервиса для начинающего СТО

Мы в "Искусство Автоматизации" занимаемся заказной разработкой MVP (мобильных приложений, веб-сервисов, чат-ботов) со средним сроком цикла разработки 2 месяца. Это срок, в который нужно уже запустить готовое решение для новых пользователей. Об общих подходах к стабильной разработке ИТ-продуктов рассказал в прошлой статье, а в этой статье расскажу про инструменты.

За 4 года ведения ИТ-продакшена ярко выделись следующие однотипные запросы к проекту:

  • показывать метрики, что происходит с проектом;
  • мониторить доступность сервисов;
  • шарить статичные файлы (отчеты, сборки);
  • интегрироваться с соседними сервисами.

Итак, переходим к самим сервисам.

Metabase

Данные интересны всем. Почти все сервисы сохраняют / агрегируют сведения о нас. Наши проекты тоже не исключение. Типичные запросы на старте разработки: сколько пользователей сейчас в проекте (новых / активных), сколько сделано заказов, какие ресурсы проекта самые посещаемые etc.

Выбора становится два: либо пилить что-то кастомное, либо предоставить клиенту пульс-дашборд на готовом решении.

Вот уже два года в каждом нашем проекте мы используем BI-утилиту Metabase.

Вкратце о возможностях продукта:

  • подключение к почти любым источникам данных (SQL/noSQL)
  • уровень входа в продукт крайне низкий; собрать дашборд может менеджер, без привлечения программистов;
  • шеринг дашбордов и показателей по ссылке, встраиваемые фреймы.

Килл-фича, о которой мало кто говорит. Metabase можно использовать как API для доступа к вашей БД. Больше не нужно писать контроллеры, поднимаем Metabase, открываем консоль хрома, копируем запросы к бэкенду и используем их в своих проектах. И это все, не написав ни строчки кода.

За 3 минуты можно собрать пульс-дашборд и показать его заказчику
За 3 минуты можно собрать пульс-дашборд и показать его заказчику

Из минусов Metabase:

  • довольно прожорлив к серверным мощностям (Java все-таки);
  • скудноватая коллекция готовых виджетов

Uptime Kuma

Про мониторинг проекта можно и не рассказывать. Важно знать о падении сервисов до того момента, пока об этом сообщит заказчик или конечный клиент. На рынке много инструментов, которые закрывают эту потребность. Мы долгое время пользовали Zabbix, но для нас он оказался тяжеловесным. Сейчас используем Uptime Kuma для:

  • мониторинга доступности сервисов
  • срока действия SSL-сертификатов
  • получаем уведомления в Telegram
Не скрою, интефрейс нас тоже подкупил, выглядит по мне более приятно, чем Zabbix
Не скрою, интефрейс нас тоже подкупил, выглядит по мне более приятно, чем Zabbix

Из минусов, не хватает мониторинга параметров сервера (место на диске, нагрузка). Одной из частых причин недоступности проекта может быть банально закончившееся место на диске. Надеемся, в Uptime Kuma добавится агент, который можно будет поставить на сервер.

NextCloud

В эпоху облачных хранилищ вопрос обмена файлами вроде бы решился. Но по тем или иным причинам не всем подходит размещение файлов на сторонних серверах. Причиной тому могут быть и требования по конфиденциальности данных и тарифная политика облачных сервисов. Мы на своих проектах, если нужно организовать доступ к файлам используем продукт NextCloud. Сервис запускается на сервер и вот у вас есть свой персональный Dropbox.

Интерфейс приятный, чуть-чуть не дотягивает до современных трендов в дизайне, но все равно лучше, чем перетаскивать файлики по FTP
Интерфейс приятный, чуть-чуть не дотягивает до современных трендов в дизайне, но все равно лучше, чем перетаскивать файлики по FTP

Из плюсов:

  • шеринг файлов по ссылке;
  • гибкая настройка прав доступа;
  • приятный интерфейс

Из минусов, обнаружили, что при большом количестве файлов в директории (больше 1000) интерфейс подлагивает. Видимо, не завезли lazy-load для списка объектов.

Apache NiFi

На самом деле, это не сервис, а какая-то вакцина от велосипедизма. Представим ситуацию, нужно получить объект из шины данных, выбрать нужные поля, сохранить объект в БД и отправить событие в систему нотификаций по HTTP. Уже руки чешутся написать пару классов на Java и еще пару классов для интеграционных тестов? Не спешите, вопросов много, ответ один - Apache NiFi.

По сути, это ETL-комбайн по построению data-pipelines. Из коробки 100+ коннекторов ко всем популярным источникам данных (шины, базы, HTTP etc). А если вдруг не найдется нужный, можно написать свой.

Настройка data-pipelines происходит в веб-интерфейсе
Настройка data-pipelines происходит в веб-интерфейсе

С внедрением Apache NiFi мы значительно сократили количество интеграционного кода, а значит сократили вероятность ошибок.

Продукт хорошо согласуется с набирающим популярность NoCode трендом. Получается такой аналог Zapier, только у вас на сервере под полным контролем.

Резюме

Используя готовые self-hosted сервисы можно серьезно прокачать свой проект и добавить новую функциональность, не написав лишний код, который, конечно, будет требовать в будущем ресурсы на свою поддержку.

А какие сервисы используете вы при создании своих ИТ-продуктов?

4646
13 комментариев

От себя добавлю такой сайт https://www.opensourcealternative.to/ я как раз все эти решения там нашёл.

5

От себя добавлю (так же self-hosted):
- Pydio Cells - аналог NextCloud
- N8N - аналог Zapier и возможно Apache NiFi (с ним не знаком)
- NocoDB - аналог Airtable

3

Prometheus, node-exporter, grafana, alert-manager

Правда проблема с нахождением готовых хороших дашбордов и многое нужно допиливать, зато как стандарт в сфере и полегче Zabbix. И да, эта связка может всё то, что вам нужно.

Ещё полезно мониторить логи и получать уведомления по особым событиям в них.

3

полезная статья, большое спасибо

2

Статья супер, спасибо большое ;)
Действительно хорошие решения

2

Комментарий недоступен

2

NocoDB - огонь, беру на вооружение, спасибо!

1