shaurgon / stardust

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

  • отправка данных в телегу
  • сбор метрик по группам

About


Languages

Language:TypeScript 97.0%Language:JavaScript 3.0%