Сайт на собственном движке обещает полную свободу и отсутствие лицензий, но может превратить компанию в заложника одного разработчика. Разбираем, когда самописное решение оправдано и как защитить себя от его рисков.
О чём мы говорим, когда говорим «самописный»
Слово «самописный» объединяет очень разные вещи, и из-за этого споры о нём часто ведутся мимо друг друга. Стоит различать хотя бы три варианта.
- Движок «с нуля» на чистом языке программирования. Разработчик сам написал маршрутизацию, работу с базой, авторизацию, административную панель. Встречается у небольших студий и фрилансеров, которые годами тиражируют свою разработку.
- Собственная система студии на основе фреймворка. Базовые механизмы берутся из популярного открытого фреймворка с документацией и сообществом, а поверх него студия построила свою административную панель и набор модулей.
- Уникальная разработка под проект на фреймворке. Каждый проект создаётся под задачи конкретного заказчика, используя стандартные инструменты фреймворка, без «своей CMS» как продукта.
Риски у этих вариантов принципиально разные. Первый — самый опасный, третий — вполне профессиональный подход для сложных проектов. Дальше в статье мы будем говорить обо всех трёх, но отмечать, к какому относится тот или иной тезис.
Что привлекает в собственном движке
Ничего лишнего
Коробочные системы содержат сотни функций, которые проекту не нужны, но которые грузятся, обновляются и потенциально содержат уязвимости. Решение под задачу содержит только то, что используется, поэтому часто работает быстрее и проще в понимании.
Нестандартная логика без борьбы с платформой
Сложное ценообразование, конфигураторы продукции, многоступенчатые согласования, уникальные сценарии личного кабинета — всё это проектируется так, как нужно бизнесу, а не так, как позволяет архитектура чужого продукта.
Отсутствие лицензионных платежей
Нет ежегодного продления, нет ограничений по количеству сайтов или пользователей. Для холдинга с несколькими проектами экономия может быть заметной.
Меньше массовых атак
Автоматические сканеры ищут уязвимости в популярных системах. Уникальный код не попадает в эти массовые сценарии. Но важно не путать это с реальной защищённостью — к этому вернёмся ниже.
Где прячется ловушка
Проблемы самописных решений почти никогда не видны на старте. Сайт запускается, работает, заказчик доволен. Сложности начинаются через год-два, и к этому моменту сменить курс уже дорого.
Зависимость от автора
Самый серьёзный риск. Если движок знает один человек или одна небольшая студия, их уход означает, что никто не может быстро разобраться в коде. Мы получаем в среднем два-три обращения в квартал от компаний, у которых «пропал разработчик», и в половине случаев речь идёт о самописной системе без документации.
Безопасность держится на одном человеке
В популярных системах уязвимости ищут тысячи исследователей, и исправления выходят регулярно. В самописном коде уязвимости тоже есть — их просто никто не ищет, кроме злоумышленника, решившего атаковать именно вас. Типичные находки при аудите таких сайтов: SQL-инъекции в фильтрах, отсутствие защиты от подбора пароля администратора, загрузка файлов без проверки типа.
Технический долг
Движок, написанный восемь лет назад, работает на устаревшей версии языка программирования. Хостинг прекращает её поддерживать, и внезапно сайт перестаёт открываться. Обновление требует переписывания значительной части кода.
Всё, что есть в коробке, нужно писать
Карта сайта, редиректы, мета-теги, резервное копирование, логирование, права пользователей, поиск — в коробочной CMS это уже есть. В самописной каждая такая функция — отдельная задача и отдельный счёт.
Риски в цифрах: три сценария из практики
Чтобы разговор не был абстрактным, приведём обезличенные истории, с которыми к нам приходили компании.
| Ситуация | Что обнаружили | Чем закончилось |
|---|---|---|
| Производитель упаковки, сайт на движке фрилансера, автор перестал выходить на связь | Нет доступов к серверу, код без комментариев, версия языка снята с поддержки | Восстановление доступа 3 недели, затем перенос на новую платформу с полным редизайном |
| Дистрибьютор оборудования, собственная CMS небольшой студии | Код понятен, но нет тестов и документации; студия подняла ставки втрое | Аудит, документирование и передача другой команде за 2 месяца |
| Логистическая компания, уникальная разработка на фреймворке | Стандартная структура, документация, тесты, репозиторий у заказчика | Новая команда подключилась за 5 рабочих дней |
Третья история показывает главное: проблема не в самописности как таковой, а в том, соблюдены ли правила, которые позволяют передать проект другим людям.
Когда собственная разработка действительно оправдана
Мы рекомендуем уникальную разработку на фреймворке, а не коробочную CMS, в ситуациях, когда:
- Сайт — это по сути бизнес-приложение: портал для дилеров, система расчёта стоимости, сервис бронирования с нетипичными правилами.
- Более половины функций не покрываются готовыми модулями ни одной подходящей CMS.
- Есть высокие требования к производительности, и каждый лишний запрос к базе на счету.
- У компании есть собственная IT-служба или долгосрочный договор с подрядчиком, и она готова вкладываться в развитие продукта.
- Проект рассчитан на долгий срок жизни с постоянными доработками, а не на «запустили и забыли».
И наоборот, для корпоративного сайта, лендинга, типового каталога или магазина собственный движок почти никогда не окупается. Готовые системы закрывают такие задачи дешевле и надёжнее.
Совет студии: если подрядчик предлагает «свою CMS», задайте один вопрос: «Сколько сторонних команд уже работали с этой системой?» Если ответ «ни одной», вы становитесь первопроходцем, и все риски передачи проекта ложатся на вас.
Как защититься, если выбор сделан в пользу самописного решения
Если собственная разработка обоснована, риски можно сделать управляемыми. Вот что стоит прописать в договоре и контролировать на протяжении проекта:
- Исключительные права на код переходят заказчику. Не лицензия на использование, а именно права — это позволяет свободно передать проект другой команде.
- Репозиторий на стороне заказчика. Код хранится в системе контроля версий, к которой у компании есть администраторский доступ, а не только у разработчика.
- Популярный фреймворк в основе. Это гарантирует, что на рынке найдутся специалисты, знакомые с базовой архитектурой.
- Документация. Описание архитектуры, развёртывания, интеграций и нестандартных решений. Проверка простая: сможет ли новый разработчик развернуть проект локально за один день по инструкции.
- Автоматические тесты на критичные сценарии: оформление заказа, расчёт цены, авторизация.
- Регулярное обновление зависимостей — версии языка, фреймворка и библиотек, не реже раза в полгода.
- Независимый аудит безопасности перед запуском и после крупных доработок.
- Все доступы у заказчика: сервер, домен, база данных, почта, сторонние сервисы.
Если вы уже живёте на самописном движке
Не нужно паниковать и срочно всё переписывать. Начните с оценки рисков: соберите все доступы, выясните, какая версия языка используется и сколько ей осталось поддержки, проверьте, есть ли резервные копии и можно ли из них восстановить сайт. Затем закажите короткий технический аудит у независимой команды — он покажет, насколько код понятен постороннему специалисту.
По результатам станет ясно, какой путь выбрать: задокументировать и продолжать развитие, провести рефакторинг ключевых модулей или спланировать переезд. Переезд часто логично совместить с редизайном сайта — тогда затраты на миграцию контента и настройку редиректов распределяются на проект, который в любом случае назрел.
Чек-лист: свобода или ловушка
- Основан ли движок на популярном фреймворке с открытой документацией?
- Принадлежат ли вам исключительные права на код?
- Есть ли у вас доступ к репозиторию, серверу, домену и базе данных?
- Существует ли документация, по которой новый разработчик развернёт проект за день?
- Покрыты ли тестами критичные бизнес-сценарии?
- Когда последний раз обновлялись версия языка и зависимости?
- Проводился ли аудит безопасности сторонней командой?
- Действительно ли задачи проекта не решаются готовой CMS?
Если на большинство вопросов ответ «да», самописное решение — это свобода. Если «нет» — это ловушка, из которой лучше выбраться планово, пока не пришлось делать это в аварийном режиме.