10 KLoC: achievement unlocked

Nov 10, 2018 10:25


Хобби-проект, стартовавший как сайтик-эксперимент, постепенно превратился в распределенную систему. Состав примерно такой...

Окружения

  • лаптопа (DEV);
  • двух серверов (STAGING, PRODUCTION).
Компоненты

  • собственно, application server;
  • бот, работающий в режиме интеграции (см. сериалы «Web Scraper», «Парсер»);
  • телеграм-бот, про который я расскажу чуть ниже;
  • билд-деплой-тула, умеющая в матрицу «компонент» × «окружений» и билдить, чистить, деплоить, перезапускать.
Телеграм-бот

Бот работает по двум направлениям:

  • шлёт админам ресурса баг-репорты (5XX коды, + некоторые критические уведомления (самодельная наколеночная Capacity management system: alarms, thresholds, metrics);
  • шлёт менеджерам уведомления о человеческих заявках.

Особенность бота в том, что в него ещё воткнут сервер с самописным API, удовлетворяющим исключительно мои требования - уметь принимать сообщения с разных окружений и доставлять разным пользовательским группам и всё с этим связанное. Так решена проблема с блокировкой телеграма, нет нужды слать запросы напрямую.

Благодаря Servant, API прекрасно шарится без лишних движений между сайтом (клиент) и ботом (сервер).

А 10 KLoC - блин, это всё трехэтажные SQL, и hamlet (html) шаблоны, опердень ведь должна быть динамической, не так ли?

servant, эфир, bot, yesod, haskell

Previous post Next post
Up