Каждый раз когда я говорю что LeadFinder работает на SQLite, у собеседника дёргается глаз. «Это же файлик. Это для учебных проектов. Серьёзный продакшн — это Postgres, минимум».
LeadFinder в проде второй год. Он живёт на VPS, обслуживает реальных клиентов, ничего не падает. База — один файл leadfinder.db в /root/leadfinder/data/. Бэкап делается командой cp. Миграция — ALTER TABLE. Никакого отдельного контейнера с базой, никакого «упал postgres, бот лёг», никаких настроек памяти, шардинга, реплик.
Когда я выбирал стек, у меня был соблазн взять Postgres «на вырост». На всякий случай. Чтобы потом не переезжать. Я этого не сделал и не жалею. SQLite держит мою нагрузку с запасом раз в сто. На том же сервере крутится бот, парсер на Playwright, Telethon-клиент — и узкое место точно не база.
Правило, которое я выучил на этом проекте: бери самое скучное, что закроет задачу. Не самое модное, не самое масштабируемое — самое скучное. Postgres появится в день когда SQLite реально перестанет тянуть. Этот день, скорее всего, не наступит никогда. А если наступит — миграция SQLite → Postgres занимает один вечер, потому что схема банальная.
Есть хороший принцип: boring technology is the best technology. Я долго думал, что он про языки, фреймворки, парадигмы. Оказалось — про базы тоже.
