Ускорение Time to Market: Опыт «М.Видео»

Александр Садыков, заместитель руководителя отдела тестирования «Инфосистемы Джет»

В закладки

В прошлый раз мы рассказывали о том, какие преимущества дает ускорение Time to Market и какие финансовые потери несут компании из-за архаичных процессов разработки. Сегодня мне хотелось бы подробнее раскрыть наш практический подход к оптимизации процессов, а также поделиться опытом одного из крупнейших российских ритейлеров – компании «М.Видео – Эльдорадо».

Три года назад наша команда совместно с «М.Видео» начала внедрять подход непрерывной интеграции в процесс разработки у ритейлера, и сегодня мы продолжаем его развивать. Он не ограничивается только применением современных технологий DevOps и автоматизации тестирования. Это скорее комплексное решение по систематизации всех процессов в разработке и изменению отношения к ним вовлеченных сотрудников.

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

Ускорение Time to Market помогает компании быстрее выпускать обновления и экономить на фонде оплаты труда (ФОТ). Например, простая автоматизация сборки и регрессионного тестирования может сократить смету проекта до 10%, а если вы решите автоматизировать подготовку тестовых данных, дополнительная экономия может достигать 12%. Но это еще не все. Критически важные изменения необходимо выпускать вовремя. Это необходимо для того, чтобы быть первыми на рынке с новыми идеями, быстрее других предлагать инновационные сервисы и, конечно же, максимально оперативно исправлять ошибки.

На практике ускорение Time to Market происходит за счет полной автоматизации процессов внутри компании. Я бы выделил четыре необходимых элемента, которые помогают нам ускорить Time to Market для клиентов:

  • В компании должен быть четко выстроен процесс разработки и межкомандных коммуникаций. Решение этой задачи нередко становится отдельным проектом из сферы консалтинга.
  • Необходимо внедрить и начать использовать полностью автоматизированный конвейер CI/CD по доработке кода (включая функциональное, автоматизированное и нагрузочное тестирование).
  • Нужно обеспечить прозрачность получения результатов тестирования для заказчика. Для этого создаются ТМС, онлайн-дашборды, проводится регулярный репортинг.
  • Наконец, требуется четко и неукоснительно поддерживать актуальность базы знаний о проекте и обеспечить необходимые инструменты и механизмы для ее актуализации.

Опыт «М.Видео – Эльдорадо»

«М.Видео» – крупный федеральный ритейлер с более чем 60 различными информационными системами: от решения для управления складом или цепочками поставок до ERP и корпоративной CRM. На примере интернет-магазина мы расскажем, как компания трансформировала разработку и тестирование нового функционала.

Что же сделали в «М.Видео» с разработкой? При участии внешних экспертов в компании была внедрена совершенно иная практика сборки релизов, регрессионного тестирования и выпуска обновлений. Так, например, разработка перешла со Scrum, то есть спринтовой модели, на Kanban, когда проверка на совместимость происходит по мере готовности каждого мелкого изменения (мердж по готовности) и никому не надо никого ждать. Благодаря этому удалось сократить процесс регрессионного тестирования на три дня.

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

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

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

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

Результат:

  • Длительность регрессионных тестов сократилась до 4 дней (вместо прежних 10).
  • На 50% уменьшилась команда ручного тестирования.
  • С 30-35 до 25 дней сократилась продолжительность Time to Market – с момента поступления фичи в бэклог команды до ее выхода на пилот.

Подготовка должна быть тщательной

Опыт показывает, что невозможно сразу «стать ИТ-компанией», а сокращение Time to Market нужно реализовывать постепенно на каждом отдельно взятом участке. Если начать с самых «болезненных» процессов, а также четко расставить приоритеты, оценить сроки и риски, составить план реализации и привлечь экспертов, можно достичь впечатляющих результатов в короткие сроки.

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

На подобных проектах внедряются методологии ускорения разработки, в числе которых QA, CI/CD и DevOps. Они все ведут к сокращению затрат, но приводят к изменениям в работе специалистов. Поэтому для каждого сотрудника нужно предусмотреть свою мотивацию, которая будет стимулировать его работать в новых условиях лучше, а не саботировать внедрение новых подходов.

Есть еще один момент. Иногда компании просто не хватает специалистов, чтобы решить какую-то срочную задачу или исправить внезапно появившуюся ошибку – нужна почти мгновенная возможность быстро расшириться, а затем сократить команду. Понятно, что в таких условиях держать штат без работы никому не интересно. Например, никто не будет держать в штате дорогостоящего специалиста по Erlang, ModBus или Clojure. Гораздо удобнее привлечь такого эксперта из компании-партнера. А для этого необходимо выстроить полноценное сотрудничество и даже интегрировать команды разработчиков, обеспечив постоянный обмен опытом.

Как выглядит простой «кусочек» автоматизации?

Чтобы читатель не подумал, что мы здесь шутки шутим, приведу в пример небольшое демо, записанное одним из DevOps-архитекторов нашей команды.

Автоматическое тестирование программного продукта с использованием CI/CD и DevOps подходов

На видео происходит автоматическое тестирование нашего собственного продукта. Производится запуск UI и API автотестов в системе CI/CD Jenkins.

В консоли отображаются докер-контейнеры, которые стартуют внутри тестовой инфраструктуры.

В Web-интерфейсе Jenkins можно наблюдать логи сборки тестового проекта. С помощью Selenoid UI виден ход выполнения UI-тестов прямо в браузере с помощью технологии VNC. По результатам прогона UI и API-тестов формируется Allure-отчет, и экспортируются результаты прогона в тест-менеджмент систему TestRail.

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

Преимущества используемого подхода CI/CD:

  • экономия времени;
  • разработчик не пишет новый код в код с дефектами;
  • не нужны ресурсы администратора для установки сборок на стенд;
  • процессы сборки, установки и тестирования более предсказуемы и воспроизводимы;
  • освобождаются человеческие ресурсы для выполнения более «творческих» задач;
  • имеется прозрачная отчетность о результатах тестирования;
  • разрабатываемая система становится пригодной для дальнейшего внедрения практик CI/CD и DevOps.

Как приступить к ускорению Time to Market?

Повышение прозрачности работы новых направлений, а также прибыльности онлайн-бизнеса часто скрывается в оптимизации типовых узких мест, таких, например, как распространенная проблема объединения веток кода в релизную в последний день перед началом приемочного тестирования (это и было одним из краеугольных камней успеха оптимизаций в интернет-магазине «М.Видео»). Автоматизация проблемных процедур приводит к снижению количества ошибок и уменьшению трудозатрат. А аудит процессов разработки позволяет найти те этапы, на которых вы теряете больше всего времени и денег, и начать модернизацию именно с этих участков.

Первые 2-3 месяца вы не увидите радикального снижения расходов, потому что вам придется одновременно и поддерживать старый процесс внесения изменений, и внедрять новый. Сначала затраты будут даже расти, но за счет автоматизации самых неэффективных процессов через полгода обычно происходит окупаемость инвестиций – ускоренный Time to Market начнет приносить прибыль.

Если вы решаетесь на оптимизацию своих сред разработки, я советовал бы следовать 7 базовым правилам, которые были сформулированы по итогам ряда проектов для наших заказчиков:

  • Прежде чем запускать полномасштабные модернизации, начните с чего-то небольшого и самого критичного. Для этого полезно бывает собрать команду экспертов и оценить риски, ожидаемые результаты, сроки и стоимость проекта.
  • Не пытайтесь все решить своими силами. Если сотрудники и так загружены рутинными процессами, на поддержку нововведений у них просто не будет времени – вам определенно нужны будут подрядчики, которые разбираются в вопросе ускорения Time to Market. Ведь первое время работы будет только больше.
  • Следите за тем, чтобы команды были интегрированы между собой. В случае, когда на проекте работает несколько подрядчиков, нужно обеспечить их взаимодействие и координацию. Иначе вы можете получить новые проблемы, связанные с несогласованностью действий.
  • Если применимо – планируйте переход от каскадных моделей разработки, привыкайте работать по схеме Agile-спринтов. Это поможет обеспечить эффективное взаимодействие всех команд – как собственных, так и приглашенных со стороны партнера.
  • Следите за тем, чтобы команды могли отслеживать свой прогресс. Для этого необходимо предусмотреть прозрачные метрики, которые легко собирать и контролировать. Лучше всего, если статистика и основные индикаторы по проекту обновляются автоматически.
  • Четко распределяйте роли. Никто не должен отвечать за чужую работу. Идея agile-разработки в том числе подразумевает отсутствие конфликта интересов, так что избегайте совмещения ответственности, например, в сфере разработки и тестирования.
  • Предусмотрите мотивацию для всех участников процесса. Саботаж будет, поверьте нашему опыту. Важно сделать так, чтобы личная выгода перевешивала желание «послать все это к черту».
  • При подготовке и во время работы следите за теми процессами, на которых возникают ошибки и простои. Анализируйте их и собирайте статистику. Ведь именно эти процессы нужно будет автоматизировать следующим шагом.

Материал опубликован пользователем.
Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Александр Садыков", "author_type": "self", "tags": [], "comments": 0, "likes": 27, "favorites": 14, "is_advertisement": false, "subsite_label": "dev", "id": 100910, "is_wide": true, "is_ugc": true, "date": "Mon, 13 Jan 2020 16:04:17 +0300", "is_special": false }
0
{ "id": 100910, "author_id": 426496, "diff_limit": 1000, "urls": {"diff":"\/comments\/100910\/get","add":"\/comments\/100910\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/100910"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 235819, "last_count_and_date": null }
Комментариев нет
Популярные
По порядку
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "Article Branding", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cfovx", "p2": "glug" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Баннер в ленте на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "disable": true, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } }, { "id": 20, "label": "Кнопка в сайдбаре", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cgxmr", "p2": "gnwc" } } } ] { "page_type": "default" }