November 10th, 2018

10 KLoC: achievement unlocked

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

Окружения 

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

Компоненты

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

Телеграм-бот

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

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

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

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

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