Экономический смысл обновления до Drupal 8
- Что такое мажорная версия сайта?
- Что такое обратная совместимость и какие есть подходы?
- Что такое жизненный цикл в контексте сайта?
- Что происходит с рынком разработчиков разных версий продукта?
- Как высчитать нужное время для обновления?
- Рецепты для экономии.
Что такое мажорная версия сайта?
В веб-разработке (и в IT вообще) устаревание технологий происходит очень быстро. Что такое устаревание, на практическом языке? Какие маркеры говорят о том что есть потребность в обновлении? Вот основные:
- Вы не можете делать то же, что и конкуренты в тот же бюджет
- Разработка одного и того же функционала на вашем сайте и на любом сайте, созданном недавно в той же компании стоит разное количество денег (ваш дороже)
- Вам сложнее найти специалистов для поддержки и внедрения нового функционала
- Вы более 3-4 лет не вкладывались в архитектурные изменения сайта.
Разработчики постоянно изобретают новые подходы, повышающие их производительность труда, стабильность, прогнозируемость.
Жизненный цикл успешной компьютерной программы может быть очень долгим; изменения в программе бывают разными — от исправления ошибки до полного переписывания. В большинстве случаев название программы остаётся тем же, изменяется подназвание — так называемая версия.
Так что же такое мажорная версия? В контексте Drupal - это набор версий ядра и модулей, которые могут работать с вашими данными и вашей базой данных, без значительных изменений структуры базы данных. Большинство сайтов наших клиентов работает на базе Drupal 7.x (мы говорим: "друпал 7", или "седьмая версия"). Последние 2 года мы делаем все новые сайты на базе Drupal 8.x (начали это делать как только drupal 8 вышел официально и у нас появилась стабильная версия). К сожалению, между Drupal 7 и Drupal 8 нет обратной совместимости. Это означает, что в определенный момент жизненного цикла сайт будет необходимо обновлять. Мы создаем целый набор инструментов, которые могут позволить ускорить и удешевить этот процесс, а также подготовить старый сайт к миграции.
Что такое обратная совместимость?
Обра́тная совмести́мость — наличие в новой версии компьютерной программы или компьютерного оборудования интерфейса, присутствующего в старой версии, в результате чего другие программы (или человек) могут продолжать работать с новой версией без значительной переделки (или переучивания).
Попросту говоря, это возможность поддерживать старые версии сторонних модулей, ваших индивидуальных настроек, темы оформления на базе нового ядра. Давайте поразмышляем, что требуется для поддержки обратной совместимости:
- Новая архитектура должна "понимать" все старые форматы данных. Даже устаревшие. Даже не используемые в современном мире. Мы должны тянуть "мертвый хвост" годами. Это, например, делает Битрикс. Пример из документации ядра Битрикс: http://bxapi.ru/src/?module_id=iblock&name=CIBlockElement::PrepareGetList . Это пример плохой архитектуры, когда каждый новый разработчик "добавлял" новый аргумент в функцию, чтобы сохранить обратную совместимость и позволить работать с новыми данными. В итоге - получилась неудобочитаемая "каша", которая мешает работать и делает разработчиков неэффективными. Например, в знаменитой книге Мартина Фаулера, по рефакторингу (улучшению) кода, явно указано что желательно избегать функций/методов с большим количеством передаваемых аргументов.
- Новая архитектура не может внедрять радикальные изменения структуры, которая бы сказалась на файловой структуре проекта, организационной, возможностями работы с базой. Т.е. вы не можете выкинуть плохо пахнущий диван, но можете запаковать его в герметичную пленку и надеяться что ее хватит на некоторое время.
Drupal идет другим путем. Раз в значительный промежуток времени мы переходим на новые рельсы и внедряем новые методологии разработки. Это значительное время для бизнеса и команд разработчиков, чтобы спланировать и провести изменения и обновления. Drupal 7 вышел 7 января 2011 года. 7 лет назад. Drupal 8 вышел 19 ноября 2015 года, 3 года назад. При этом планируемый цикл релизов для Drupal8 смогли увеличить, благодаря соглашению о семантическом версионировании (об этом позже).
Что такое жизненный цикл продукта и как высчитать нужное время для обновления?
Исходя из предыдущего тезиса - что мир меняется, лучший способ быть эффективным — меняться вместе с ним. Давайте посмотрим на жизненный цикл Drupal, каким он стал с версии 8. Было введено понятие семантического версионирования (подробное описание), когда все версии которые называются 8.x.x будут обновляться между собой без каких-либо проблем. При этом, сохраняется возможность добавлять новый функционал, который не нарушает обратную совместимость в разных версиях внутри одной 8.x ветки. Т.е. версия 8.1 будет содержать не только улучшения и исправления ошибок по сравнению с 8.0, но и добавит какой-то новый функционал. При этом будет добавлен только такой функционал, который позволит легко обновить сайт между 8.0 и 8.1 версиями.
Это официальный жизненный цикл, но есть еще и неофициальный, который получается исходя из поведения рынка.
Тут весь секрет в том, что новые технологии открывают новые горизонты. И студии начинают ускоренно их внедрять. Мы же являемся обычными организациями, с новыми кадрами, растущим штатом. И оказывается, что все кто пришли в компанию за последние 3 года, если они не работали ранее, уже не знают и не могут помнить как работают многие детали из Drupal7. Да, в компании есть люди, которые могут подсказать или научить — но как правило это обходится очень дорого для заказчика (принцип дефицита — если для решения вашей задачи требуются самые опытные люди, со стажем не менее 7-8 лет, которых все меньше, решение будет дорогостоящим).
Поэтому, крайне важно не упустить момент, когда решить задачу "переезда" на новую версию все еще могут большинство сотрудников студии и начать планировать масштабное обновление.
Рецепты для экономии
Несколько советов для того чтобы посчитать, когда вам нужно обновление:
- Иногда чтобы обновить функционал, который писали индивидуально для вас (т.е. который не поставлялся Drupal или модулями "из коробки"), требуется затратить до 80% времени от того что было затрачено в первый раз при разработке.
- Принцип 80% от времени верен и для верстки темы оформления. Таким образом, если вы хотите изменить дизайн сайта или вносить серьезные индивидуальные доработки, лучше запланируйте обновление с Drupal 7 (или 6) до Drupal 8.
- Если вы планируете выделить маркетинговый бюджет в ближайшие месяцы, превышающий стоимость создания сайта, запланируйте обновления. Почти всегда резкая маркетинговая активность требует каких-то корректировок в структуре сайта, а с точки зрения возможности оперативно внедрять изменения Drupal 8 намного превосходит прежние версии.
- Если вы хотите произвести большой объем интеграций с внешними системами (складской учет, любые CRM, ERP, управление логистикой и т.п.), проще и удобнее эти задачи решать на базе Drupal 8.
- Если вы хотите делать мобильную версию сайта, SPA-приложение, мобильное приложение интегрированное с вашим сайтом - в ядре Drupal 8 значительно больше возможностей для решения этих задач.
О том, какие преимущества дает Drupal 8 для разработчиков (а следовательно и для бизнеса) мы расскажем в отдельном материале.