Новости

Архитектура проекта: PHP, SQLite и осознанная простота

Опубликовано: 02.02.2025 12:24 Автор: Роберт Д. Последняя редакция: 14.01.2026 12:24

Когда проект начинает расти, один из самых сложных вопросов – не какие технологии выбрать, а когда остановиться. Avrika с самого начала строилась вокруг идеи осознанной простоты: использовать ровно те инструменты, которые решают задачу, и не усложнять архитектуру без реальной необходимости.

История технического стека проекта не была линейной. До текущей архитектуры Avrika прошла через несколько этапов. После экспериментов с готовыми CMS проект на определённый период был переведён на Python и Django. Это был важный и полезный этап: Django дал чёткое понимание того, как должна выглядеть модель данных, как разделять ответственность между компонентами системы и как выстраивать более строгую архитектуру.

Сайт какое-то время полноценно работал на Django: с моделями, админкой, шаблонами и собственными решениями для вакансий и компаний. Этот опыт сильно повлиял на дальнейшее развитие проекта – многие архитектурные идеи, которые используются в Avrika сейчас, родом именно оттуда. Но со временем стало понятно, что для проекта такого масштаба и формата Django оказывается избыточным: он требует более сложной инфраструктуры, большего количества служебного кода и постоянного поддержания окружения.

В результате было принято решение вернуться к более лёгкому и предсказуемому стеку – PHP. Не как шаг назад, а как осознанный выбор. PHP позволил сохранить архитектурную строгость, полученную на этапе Django, но при этом упростить развёртывание, поддержку и повседневную разработку.

В качестве основного языка сейчас используется PHP. Не потому что «так привычнее», а потому что он отлично подходит для серверных веб-проектов с длительным жизненным циклом. PHP легко читается, не требует тяжёлой инфраструктуры и позволяет держать всю бизнес-логику под контролем. Для Avrika это означает предсказуемость: любой участок кода можно открыть и понять, что именно происходит на странице.

Отдельного внимания заслуживает выбор базы данных. Вместо привычного MySQL проект использует SQLite. Для многих это выглядит неожиданно, но на практике SQLite отлично справляется с задачами Avrika: хранение вакансий, пользователей, компаний, логов изменений и служебных настроек. База хранится в одном файле, легко бэкапится и не требует отдельного сервера или сложной конфигурации.

При этом SQLite используется не «по умолчанию», а осознанно: с включённым WAL-режимом, таймаутами на блокировки и индексами на всех критичных полях. Это даёт стабильную работу даже при параллельных запросах и делает поведение системы предсказуемым. Когда возникают узкие места, их проще диагностировать и оптимизировать, чем в сложной многослойной архитектуре.

Внутренняя структура проекта также строится вокруг понятных принципов: разделение ядра и прикладных модулей, минимальное количество «магических» абстракций, явная работа с данными. Здесь нет фреймворка, который диктует стиль разработки – наоборот, код подстраивается под реальные задачи проекта.

Важно и то, что выбранная архитектура не является тупиком. При необходимости Avrika можно масштабировать: вынести часть логики, подключить MySQL или другую СУБД, переработать отдельные модули. Но всё это делается тогда, когда появляется реальная потребность, а не «на всякий случай».

В результате Avrika остаётся технически простой, но не примитивной. Это проект, в котором легко ориентироваться, удобно вносить изменения и не страшно возвращаться к коду спустя месяцы. Именно такая архитектура позволяет развивать платформу постепенно, не накапливая технический долг и не теряя управляемость со временем.

Back up