Главная/Блог/Технологии и CMS/Самописный движок: свобода или ловушка

Самописный движок: свобода или ловушка

Технологии и CMS20 июля 20247 мин чтенияРедакция студии «Санмедиа»
Самописный движок: свобода или ловушка

Сайт на собственном движке обещает полную свободу и отсутствие лицензий, но может превратить компанию в заложника одного разработчика. Разбираем, когда самописное решение оправдано и как защитить себя от его рисков.

О чём мы говорим, когда говорим «самописный»

Слово «самописный» объединяет очень разные вещи, и из-за этого споры о нём часто ведутся мимо друг друга. Стоит различать хотя бы три варианта.

  • Движок «с нуля» на чистом языке программирования. Разработчик сам написал маршрутизацию, работу с базой, авторизацию, административную панель. Встречается у небольших студий и фрилансеров, которые годами тиражируют свою разработку.
  • Собственная система студии на основе фреймворка. Базовые механизмы берутся из популярного открытого фреймворка с документацией и сообществом, а поверх него студия построила свою административную панель и набор модулей.
  • Уникальная разработка под проект на фреймворке. Каждый проект создаётся под задачи конкретного заказчика, используя стандартные инструменты фреймворка, без «своей CMS» как продукта.

Риски у этих вариантов принципиально разные. Первый — самый опасный, третий — вполне профессиональный подход для сложных проектов. Дальше в статье мы будем говорить обо всех трёх, но отмечать, к какому относится тот или иной тезис.

Что привлекает в собственном движке

Ничего лишнего

Коробочные системы содержат сотни функций, которые проекту не нужны, но которые грузятся, обновляются и потенциально содержат уязвимости. Решение под задачу содержит только то, что используется, поэтому часто работает быстрее и проще в понимании.

Нестандартная логика без борьбы с платформой

Сложное ценообразование, конфигураторы продукции, многоступенчатые согласования, уникальные сценарии личного кабинета — всё это проектируется так, как нужно бизнесу, а не так, как позволяет архитектура чужого продукта.

Отсутствие лицензионных платежей

Нет ежегодного продления, нет ограничений по количеству сайтов или пользователей. Для холдинга с несколькими проектами экономия может быть заметной.

Меньше массовых атак

Автоматические сканеры ищут уязвимости в популярных системах. Уникальный код не попадает в эти массовые сценарии. Но важно не путать это с реальной защищённостью — к этому вернёмся ниже.

Где прячется ловушка

Проблемы самописных решений почти никогда не видны на старте. Сайт запускается, работает, заказчик доволен. Сложности начинаются через год-два, и к этому моменту сменить курс уже дорого.

Зависимость от автора

Самый серьёзный риск. Если движок знает один человек или одна небольшая студия, их уход означает, что никто не может быстро разобраться в коде. Мы получаем в среднем два-три обращения в квартал от компаний, у которых «пропал разработчик», и в половине случаев речь идёт о самописной системе без документации.

Безопасность держится на одном человеке

В популярных системах уязвимости ищут тысячи исследователей, и исправления выходят регулярно. В самописном коде уязвимости тоже есть — их просто никто не ищет, кроме злоумышленника, решившего атаковать именно вас. Типичные находки при аудите таких сайтов: SQL-инъекции в фильтрах, отсутствие защиты от подбора пароля администратора, загрузка файлов без проверки типа.

Технический долг

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

Всё, что есть в коробке, нужно писать

Карта сайта, редиректы, мета-теги, резервное копирование, логирование, права пользователей, поиск — в коробочной CMS это уже есть. В самописной каждая такая функция — отдельная задача и отдельный счёт.

Риски в цифрах: три сценария из практики

Чтобы разговор не был абстрактным, приведём обезличенные истории, с которыми к нам приходили компании.

СитуацияЧто обнаружилиЧем закончилось
Производитель упаковки, сайт на движке фрилансера, автор перестал выходить на связьНет доступов к серверу, код без комментариев, версия языка снята с поддержкиВосстановление доступа 3 недели, затем перенос на новую платформу с полным редизайном
Дистрибьютор оборудования, собственная CMS небольшой студииКод понятен, но нет тестов и документации; студия подняла ставки втроеАудит, документирование и передача другой команде за 2 месяца
Логистическая компания, уникальная разработка на фреймворкеСтандартная структура, документация, тесты, репозиторий у заказчикаНовая команда подключилась за 5 рабочих дней

Третья история показывает главное: проблема не в самописности как таковой, а в том, соблюдены ли правила, которые позволяют передать проект другим людям.

Когда собственная разработка действительно оправдана

Мы рекомендуем уникальную разработку на фреймворке, а не коробочную CMS, в ситуациях, когда:

  • Сайт — это по сути бизнес-приложение: портал для дилеров, система расчёта стоимости, сервис бронирования с нетипичными правилами.
  • Более половины функций не покрываются готовыми модулями ни одной подходящей CMS.
  • Есть высокие требования к производительности, и каждый лишний запрос к базе на счету.
  • У компании есть собственная IT-служба или долгосрочный договор с подрядчиком, и она готова вкладываться в развитие продукта.
  • Проект рассчитан на долгий срок жизни с постоянными доработками, а не на «запустили и забыли».

И наоборот, для корпоративного сайта, лендинга, типового каталога или магазина собственный движок почти никогда не окупается. Готовые системы закрывают такие задачи дешевле и надёжнее.

Совет студии: если подрядчик предлагает «свою CMS», задайте один вопрос: «Сколько сторонних команд уже работали с этой системой?» Если ответ «ни одной», вы становитесь первопроходцем, и все риски передачи проекта ложатся на вас.

Как защититься, если выбор сделан в пользу самописного решения

Если собственная разработка обоснована, риски можно сделать управляемыми. Вот что стоит прописать в договоре и контролировать на протяжении проекта:

  1. Исключительные права на код переходят заказчику. Не лицензия на использование, а именно права — это позволяет свободно передать проект другой команде.
  2. Репозиторий на стороне заказчика. Код хранится в системе контроля версий, к которой у компании есть администраторский доступ, а не только у разработчика.
  3. Популярный фреймворк в основе. Это гарантирует, что на рынке найдутся специалисты, знакомые с базовой архитектурой.
  4. Документация. Описание архитектуры, развёртывания, интеграций и нестандартных решений. Проверка простая: сможет ли новый разработчик развернуть проект локально за один день по инструкции.
  5. Автоматические тесты на критичные сценарии: оформление заказа, расчёт цены, авторизация.
  6. Регулярное обновление зависимостей — версии языка, фреймворка и библиотек, не реже раза в полгода.
  7. Независимый аудит безопасности перед запуском и после крупных доработок.
  8. Все доступы у заказчика: сервер, домен, база данных, почта, сторонние сервисы.

Если вы уже живёте на самописном движке

Не нужно паниковать и срочно всё переписывать. Начните с оценки рисков: соберите все доступы, выясните, какая версия языка используется и сколько ей осталось поддержки, проверьте, есть ли резервные копии и можно ли из них восстановить сайт. Затем закажите короткий технический аудит у независимой команды — он покажет, насколько код понятен постороннему специалисту.

По результатам станет ясно, какой путь выбрать: задокументировать и продолжать развитие, провести рефакторинг ключевых модулей или спланировать переезд. Переезд часто логично совместить с редизайном сайта — тогда затраты на миграцию контента и настройку редиректов распределяются на проект, который в любом случае назрел.

Чек-лист: свобода или ловушка

  • Основан ли движок на популярном фреймворке с открытой документацией?
  • Принадлежат ли вам исключительные права на код?
  • Есть ли у вас доступ к репозиторию, серверу, домену и базе данных?
  • Существует ли документация, по которой новый разработчик развернёт проект за день?
  • Покрыты ли тестами критичные бизнес-сценарии?
  • Когда последний раз обновлялись версия языка и зависимости?
  • Проводился ли аудит безопасности сторонней командой?
  • Действительно ли задачи проекта не решаются готовой CMS?

Если на большинство вопросов ответ «да», самописное решение — это свобода. Если «нет» — это ловушка, из которой лучше выбраться планово, пока не пришлось делать это в аварийном режиме.

Расскажите о задаче —посчитаем проект

Опишите в двух словах, какой сайт нужен и к какому сроку. Мы изучим задачу, зададим уточняющие вопросы и в течение двух рабочих дней пришлём оценку сроков и бюджета. Можно написать и напрямую: [email protected].

Ответим в течение рабочего дня · Без навязчивых звонков · NDA по запросу

Нажимая кнопку, вы соглашаетесь с политикой конфиденциальности и использованием cookies.

Спасибо, заявка отправлена.
Менеджер ответит в течение рабочего дня на указанный контакт.