Хобби-проект, стартовавший как сайтик-эксперимент, постепенно превратился в распределенную систему. Состав примерно такой...
Окружения
- лаптопа (DEV);
- двух серверов (STAGING, PRODUCTION).
Компоненты
- собственно, application server;
- бот, работающий в режиме интеграции (см. сериалы «Web Scraper», «Парсер»);
- телеграм-бот, про который я расскажу чуть ниже;
- билд-деплой-тула, умеющая в матрицу «компонент» × «окружений» и билдить, чистить, деплоить, перезапускать.
Телеграм-бот
Бот работает по двум направлениям:
- шлёт админам ресурса баг-репорты (5XX коды, + некоторые критические уведомления (самодельная наколеночная Capacity management system: alarms, thresholds, metrics);
- шлёт менеджерам уведомления о человеческих заявках.
Особенность бота в том, что в него ещё воткнут сервер с самописным API, удовлетворяющим исключительно мои требования - уметь принимать сообщения с разных окружений и доставлять разным пользовательским группам и всё с этим связанное. Так решена проблема с блокировкой телеграма, нет нужды слать запросы напрямую.
Благодаря Servant, API прекрасно шарится без лишних движений между сайтом (клиент) и ботом (сервер).
А 10 KLoC - блин, это всё трехэтажные SQL, и hamlet (html) шаблоны, опердень ведь должна быть динамической, не так ли?