Как ускорить выпуск новых фич: гибкая разработка спасёт ваш проект
Пилить идеальный продукт год или запустить тестовую версию через полгода, собрать отзывы пользователей и уже получать прибыль? Мы всегда за второй вариант, который называем гибким подходом. В статье объясняем, почему метод ускоренной разработки выигрывает.
Нас никто не спрашивал, но мы сделаем вид, что получили такой вопрос: «У меня свой интернет-магазин. Разработчики делают каждое обновление сто лет, что с этим делать?» Ответ: внедрять гибкий подход к задачам.
Что мы подразумеваем под гибким подходом
Вообще всё: и процессы, и разработку, и архитектуру, и автоматизацию жизненного цикла поставки изменений. Нельзя навести порядок только в одном месте и ждать, что это ускорит целый процесс, в который входит не только техническая часть, но и банальное общение между сотрудниками, например обсуждение задачи или согласование. Поэтому мы рассказываем про все четыре области.
Управление процессами
Представим такую ситуацию: компания хочет выпускать обновления быстрее. Нет никакой сложности сделать так, чтобы бизнес забыл про релизы новых версий продукта раз в год. В этом поможет MVP — минимально жизнеспособный продукт. Вместо того чтобы месяцами пилить идеальную фичу, лучше выкатить её ограниченную версию, собрать отзывы пользователей и доработать продукт. Это поможет быстро адаптироваться к изменениям и не тратить время на ненужные гипотезы.
Один из примеров в нашей работе, где бизнес выбрал MVP, — это McDonald’s. Проект запустился через шесть месяцев после старта с меньшим функционалом, а ещё через шесть вышла вся система целиком в том виде, в котором и планировалось. Благодаря такому подходу мы сократили срок запуска в два раза, а бизнес быстрее стал получать выгоду — прибыль и отзывы клиентов, которые помогли сделать сервис лучше ещё на этапе разработки.
При этом гибкость важна не только в решениях, но и в самих процессах. Например, лучше отказаться от методологий вроде «водопада», где сначала пишется километровая документация и только потом начинается разработка. Это должно происходить параллельно, например аналитики формируют требования, а разработчики уже пишут код — Agile даёт свободу и скорость.
Чтобы разработка была предсказуемой и управляемой, можно использовать гибридный подход: как только базовая функциональность описана, её начинают разрабатывать. Этот метод «маленьких водопадов» помогает одновременно ускорять процесс и сохранять контроль над качеством.
А ещё стоит выстраивать процессы так, чтобы они шли независимо друг от друга и не создавали блокировок. Это касается не только бизнес-логики, но и самой разработки. Например, фронтенд и бэкенд развиваются одновременно: аналитики описывают требования, после чего фронтендер и бэкендер независимо друг от друга реализуют свои части. Затем происходит интеграция и тестирование.
Разработка и поддерживаемый код
Быстрая разработка возможна только тогда, когда код легко поддерживать и масштабировать. Мы следуем принципам SOLID, которые упрощают поддержку системы: каждый модуль выполняет только свою функцию, не создавая излишних зависимостей, а изменения в одном месте не ломают всю архитектуру. Чем меньше связности между модулями, тем проще обновлять код без страха всё сломать.
А ещё для ускорения разработки лучше придерживаться чистой архитектуры, которая делает проект логичным и удобным для масштабирования. Это значит, что код живёт долго и счастливо, а разработчики не боятся его менять.
Гибкость архитектуры
Гибкость в разработке — это не только методология, но и выбор архитектурных решений. Для примера разберём монолитную архитектуру и микросервисы:
- Монолит — цельная система, где все компоненты (например, бэкенд, фронтенд, база данных) тесно связаны друг с другом. В такую архитектуру можно быстро вносить изменения, но её сложнее масштабировать.
- Микросервисы — система разделена на несколько небольших независимых сервисов, каждый из которых отвечает за свою часть логики и может разрабатываться отдельно. При таком подходе систему легче разделять на независимые модули, но сложнее интегрировать.
Гибкость — это не про «давайте делать микросервисы, потому что сейчас все так делают». Это про выбор архитектуры под задачи и проект с учётом масштаба, нагрузки и частоты обновлений. Приведём пример из нашей работы. Для MR Group — крупного девелопера недвижимости — мы использовали гибридную архитектуру: монолит на «Битриксе» для хранения объектов (квартир, парковок, офисов) и два микросервиса.
Первый микросервис на Elasticsearch позволяет быстро искать и фильтровать недвижимость, оперативно обновлять данные и поддерживать высокую производительность. Второй отвечает за отправку сообщений клиентам: за уведомления о статусе сделок, подтверждения по электронной почте и SMS. Разделение позволило сделать систему более гибкой: важные процессы вынесены в отдельные сервисы, что упрощает их масштабирование и поддержку.
DevOps и автоматизация жизненного цикла поставки изменений
Чтобы код как можно быстрее попадал в продакшен, помогут DevOps-практики и несколько тестовых сред:
- Dev — первое тестирование.
- Stage — предпродуктовая среда, максимально приближенная к реальной.
- Prod — финальная версия, доступная пользователям.
Чтобы упростить выпуск обновлений и избежать ошибок, настраивают CI/CD — систему, которая сама проверяет и загружает код. GitLab CI/CD делает это автоматически, снижая вероятность сбоев.
Но важно понимать: не во всех проектах CI/CD изначально правильно настроена. Например, так было в крупной алмазодобывающей компании «Алроса»: её код было тяжело поддерживать и дорабатывать. Тогда мы исправили ошибки, оптимизировали процесс и параллельно внедрили CI/CD и мониторинг. Работу делали поэтапно: не переписывали весь код сразу, а улучшали систему в процессе разработки. Такой подход позволяет стабилизировать проекты без долгих простоев в плане выпуска новых фич.
Как определить, что нужно проекту
Выше мы объясняли технические детали простым языком (или, по крайней мере, пытались). Это нужно, чтобы понять, как строится процесс работы и как правильно определить, что нужно бизнесу: какая архитектура и технологии лучше подойдут конкретному проекту. Это один из первых этапов работы, от которого зависит скорость и качество разработки.
Обычно этим занимается руководитель отдела разработки. Он собирает требования, анализирует бизнес-цели и определяет:
- какие серверы использовать и где их разместить;
- какие технологии лучше подходят под задачи проекта;
- как разные сервисы будут взаимодействовать между собой.
Например, если у нас сложный проект со множеством интеграций, лучше делать ставку на микросервисную архитектуру. Она позволяет разделить систему на независимые модули, которые можно дорабатывать и масштабировать отдельно.
А если проект требует быстрой разработки и скорости внесения изменений, можно выбрать монолитную архитектуру: она подходит для e-commerce, где важнее цельность системы, чем её модульность.
Не следуйте трендам просто потому, что они популярны, — выбирайте решения, которые соответствуют бизнес-целям проекта. Рассказываем, как это сделать, на примере кейса.
Как гибкий подх��д позволяет быстро запускать новые проекты — «Магнит Аптека»
Задача
Когда к нам пришёл «Магнит», у него не было систем, готовых к e-commerce. Нам нужно было создать всё с нуля и интегрировать системы во внутренние процессы компании.
Решение
Мы выбрали монолитную архитектуру на базе «Битрикса», дополнив её фреймворком Symfony и поисковым движком Elasticsearch для работы с большими объёмами данных. Это позволило нам за четыре месяца запустить полностью функционирующий сервис, который принимал заказы, работал с большим каталогом (больше 300 тысяч товаров) и поддерживал стабильную производительность.
Когда проект «Магнит Аптека» полностью заработал, клиент решил на его основе запустить ещё один сервис — доставку продуктов. Вместо того чтобы строить всё заново, мы использовали нашу же платформу, разделили её на два каталога для лекарств и еды и подключили доставку от «Яндекса». Для конечного пользователя это выглядело как два отдельных сервиса, но на деле всё управлялось из одного бэкенда с единой админкой.
А теперь краткая выжимка для тех, кто ничего не понял: мы всегда топим за ускоренный запуск. Кроме возможности быстрее вернуть вложения, гибкий подход позволяет собрать отзывы пользователей и найти недочёты, которые раньше были неочевидны.