4х летняя Архитектура @ffmemesbot



После обновления поиска телеги бот начал вирально расти в разных странах и я задумался, что же с ним делать дальше. Но даже если ничего и не делать, текущая реализация нестабильна и полна ужасов.



В основе лежит django-telegram-bot с синхронной ORM и огромном оверхедом по RAM от джанги и селери. Руки чешутся переписать на фастапи, я как раз научился это делать нормально.



Я записываю все просмотры и реакции на мемы в одну большую таблицу Postgres, которая уже больше 50М. Понятно, что есть индексы, но диск пухнет, бот становится медленнее и уже не умещается на микро тачку на Digital Ocean. Покупать еще серверы не хочется, ведь бот не планирует приносить бабосики. С одной стороны, это полезные для анализа данные, с другой — звучит неправильно обрабатывать в риалтайме десятки миллионов строк, чтобы выдать мем. Или нет?



Да и рекомендательная система сейчас простенькая: для каждого мема, паблика (откуда я взял мем) и юзера я считаю попарные статистики в бекграунде, а потом по ним в риалтайме сортирую все непросмотренные юзером мемы. Работает быстро, без какого-либо ML, но хочется больше % лайков. Платить за гпу нет сил. Есть эксперты?



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

Еще отдельная боль с дублированием мемов. Алгоритм “достать весь текст с картинки и дедублицировать мемы по этому тексту” работал хорошо, но кредиты на GCP давно сказали чао-чао.



Что бы вы могли тут посоветовать? ChatGPT спам боты, к вам тоже этот вопрос.