Stardust serverless
Я не планировал это выкладывать xD
Предыстория
Года три назад захотелось проверить свои силы в автопостинге в ВК. Была выбрана тематика - гороскопы, созданы группы, за две ночи написал код (на php). Так оно все и работало.
Недавно мне надоело платить за почти простаивающий сервер, где оставался жить только этот проект (а убивать его жалко). После небольшого ресерча в целях экономии средств был выбран вариант Serverless Cloud Function в Яндекс.Облаке, а код был переписан на NestJS
Особенности
Разделен на 2 приложения в монорепе Nest:
- fetch - сбор данных с сайта-источника, подтягивание картинок для постов
- publish - загрузка картинок и публикация сообщений в группах ВК
Общая библиотека common с модулями:
- aws - модуль для работы с очередями (YCloud использует AWS SQS)
- fetch - обертка над node-fetch для быстрых запросов к ресурсам.
- vk - обертка над easyvk (публикация на стену, загрузка фото)
- logger - Pino-логгер + asyncLocalStorage для хранения RequestID YCloud
Сборка
- dev-сборка запускается командой
yarn start:dev <appName>
, стартовый скриптmain.js
- prod собирается командой
yarn build
, после чего через bat-файл (нет в git) можно упаковать релиз в zip-архив и запушить в ycloud. Запускается триггерами (Cron + MQ) изmain-ycloud.js
Косяки
- Из-за того, что ycloud просит в качестве точки входа
scriptName.handlerName
, пришлось отключить webpack
TODO
- отправка данных в телегу
- сбор метрик по группам