🤖Как я разработал бота
Когда я решил разработать бота @save_sn_bot который скачивает Reels & TikTok, передо мной встал вопрос: написать бота на коленке в одном js-файле или взять монструозный ООП фреймворк, например NestJS, где из коробки идёт хорошая архитектура и 1000 зависимостей.
Я выбрал свой путь, проект на TypeScript с выделением сервисных слоёв (работа с telegram API, БД, парсерами Reels & TikTok, и сценарный файл, который определял, какой сценарий нужно выполнить).
Дальше можно было решить задачу в лоб, получаем ссылку, идём скачивать видео и грузить в Telegram, но представьте, если мы одновременно получим 100 запросов на скачивание, мой сервер с 2Gb оперативы просто не выдержит 💥
Для того чтобы купировать возможную проблему большого спроса, я добавил на вход очередь задач. Прилетает запрос, кладём в очередь. Если прошло 3 секунды или в очереди больше 5 запросов, то выполняем джобы из очереди, берём первые 5 запросов на скачивание из очереди и параллельно скачиваем и загружаем видео в телегу. Если сработал таймер или в очереди больше 5 джоб, но текущие джобы ещё не выполнились, то дожидаемся выполнения запущенных джоб.
А как вы поступаете в таких ситуациях, пишете MVP на коленке, проверяете результат и решаете возникшие проблемы по факту?