Разработка востребованного ERP продукта, консалтинг заказчика и системные проектные преобразования
Описание проекта
Очередной проект, в котором принимает участие команда ДжазТим — это английская B2B программная платформа для управления складскими запасами и заказами для дистрибьюторов и оптовиков, а также для осуществления электронной коммерции. В базовую комплектацию продукта входят:
- Адаптируемый рабочий процесс для любой модели управления заказами.
- Возможность обработки и выставления счетов для нескольких заказов в 8 кликов.
- Развитая система отслеживания складских запасов в режиме реального времени.
- Видимость цепочки поставок.
- Отслеживание прогнозов продаж.
- Мультивалютность.
- Обработка онлайновых платежей.
- Любой тип отчетности.
- Интеграция с основными торговыми системами (Amazon, eBay, Alibaba и пр.).
- Масштабируемость и кастомизация.
- Система плагинов.
Проект включает в себя несколько подпроектов:
- Консалтинг стейхолдеров и техлидов.
- Внедрение полноценного CI/CD.
- Миграция с .NET на Java.
Технологии
Stack: Java 7/8, Java Servlet & JSP, Apache Tomcat, MySQL, JDOM, REST API, XML/XSLT.
Фреймворки: Avalon Framework, XML-RPC, dbPool, JasperReports, MyFaces, JavaMail, PD4ML, Paypal, Gdata, jQuery Mobile.
Архитектура: Model-driven development, event-driven architecture.
CI/CD.
Тестирование (интеграционное и нагрузочное): JUnit+собственный фреймворк.
Инфраструктура: AWS, Bitbucket, Jenkins, Liquibase, CloudWatch.
Особенности проекта
История проекта уходит своими корнями в начало 2000-х годов. В тот период времени была заложена довольно удачная архитектура, основанная на XML моделировании бизнес-процессов и сущностей. Эта архитектурная концепция выдержала проверку временем, в том числе масштабирование продукта до миллионов осуществленных транзакций, с предоставлением доступа сотням заказчиков.
Команда ДжазТим присоединилась к проекту в 2019 году. К этому времени в проекте проявились многочисленные технические долги и недостатки, которые перекрывали очевидные преимущества заложенной архитектуры:
- систему с большим количеством функционала и модулей очень сложно масштабировать;
- при отсутствии автоматизированного тестирования невозможно контролировать стабильность продукта;
- попытки внести изменения и развить продукт приводят к задержкам релизов и возникающим на стадии продакшена багам, что негативно сказываются на репутации заказчика;
- разработка и поставка проходят напряжённо и в режиме стресса для всех участников процесса.
На этом проекте компания ДжазТим выступала одновременно как:
- консультант стейкхолдеров, для налаживания процессов и повышения качества продукта;
- основная рабочая сила в составе международной распределенной команды разработчиков;
- руководство и менторство всей команды разработчиков;
- инициатор и исполнитель закрытия технических долгов:
- отказ от .NET слоя;
- внедрение полноценного CI/CD;
- внедрение полноценного процесса бизнес-анализа;
- внедрение и поддержание QA Automation на проекте;
- внедрение и развитие юнит-тестов, в том числе т.н. Blackbox тестирования.
Результат проекта
С точки зрения инкремента функционала — команда ДжазТим разработала и поставила десятки новых эпиков и пользовательских историй. При этом был проведен глубокий рефакторинг существующего кода и обеспечено покрытие тестами (GUI-автотесты и юнит-тесты) разработанного функционала.
С точки зрения консалтинга — налажены партнерские отношения со стекйхолдерами проекта, реорганизована структура и процессы в команде разработчиков, внедрены и поддерживаются Agile принципы разработки, обеспечен прозрачный процесс репортинга (в т.ч. финансового).
С точки зрения закрытия техдолгов — реализована версия продукта без .NET слоя, что позволяет сфокусироваться на Linux платформе, тем самым значительно снизив затраты на хостинг и техподдержку. Внедрены полноценные CI/CD процессы, что ускорило частоту поставок продукта и повысило качество поставляемого функционала.
Достижения компании на проекте
Ввели полноценную фазу QA (тестирование, обеспечение качества) в жизненный цикл проекта. До прихода команды ДжазТим тестирование на проекте осуществлялось спонтанно, роль QA выполняли сам разработчики и один из владельцев продукта.
Представители ДжазТим проанализировали текущее качество разработки продукта, состав и скорость команды и прочие критерии — и предложили владельцам продукта ввести в команду несколько профессиональных QA инженеров и QA Automation инженеров из числа сотрудников компании ДжазТим. .Предложение было одобрено и уже через несколько месяцев стало очевидно, насколько повысилось качество продукта.
Улучшили процесс анализа требований и постановки задач. Мы ввели на проект бизнес-аналитика с экспертизой в областях, релевантных этому проекту. Ввели фазу бизнес-анализа, прямые коммуникации BA с партнерами по продукту. На выходе мы получили четкую постановку задач разработчикам, включая DoD (Definition of Done) и Acceptance Criteria (критерий приемки). Это позволило значительно сократить время разработки функционала и повысить качество конечного продукта.
Внедрили процесс оценки задач (estimate). Мы ввели обязательный анализ разработчиком потенциальных трудозатрат по каждой задаче с разбиением на подзадачи и с учетом рисков (см. ниже). Наличие оценки трудозатрат позволяет упорядочить процесс планирования разработки, сделать планирование более прозрачным для всех членов команды и стейкхолдеров.
Заложили анализ рисков при оценке задач. На выходе получается аргументированная оценка с учетом рисков, которая позволяет владельцам продукта увидеть объективную картину трудозатрат и предпринять шаги для возможного уменьшения рисков и оптимизации стоимости разработки.
Провели Agile-трансформацию процесса разработки. Ввели ритуалы гибкой разработки, которых не хватало на проекте:
- Ежедневные стендапы для географически распределенной команды. Тут мы сильно подняли уровень синхронизации между всеми членами команды, уменьшили недопонимание, да и просто ребята стали больше общаться и помогать друг другу.
- Ретроспективы — опять же повод порелаксировать, рассказать свой опыт, улучшить процессы, акцентировать внимание на явных проблемах
- Демонстрация — делаем презентацию каждой фичи, показываем всей команде. И QA инженерам легче тестировать, и документацию писать проще.
- Шаринг знаний внутри команды — лекции/митапы по технологическим моментам или по доменной экспертизе.
Внедрение CI/CD для осуществления автоматической сборки, регулярной проверки качества и поставки продукта. На проекте применяется частичная генерация кода из шаблонов. Генератор кода изначально не был оптимизирован под автоматическую сборку проекта Maven-ом, поэтому команда провела глубокий рефакторинг ядра проекта, чтобы исключить ручную сборку.
Создан фреймворк для написания т.н. blackbox-тестов. Такие тесты пишутся самими разработчиками и позволяют проверить сложные цепочки действий системы. При этом нет необходимости глубоко погружаться во внутреннюю структуру кода. Тесты запускаются как часть регулярных сборок проекта: по расписанию и по требованию.
Весь новый код и большинство изменений существующего кода покрывается Unit-тестами. Старый код регулярно рефакторится, чтобы он поддавался покрытию тестами.
Полноценное и регулярное покрытие практически всего функционала системы GUI-автотестами. МЫ создали фреймворк для быстрого написания и поддержки большого количества GUI-автотестов с минимальными затратами.
Переписали .NET фронтенд на Javascript, таким образом отвязались от Windows хостинга.
Значительно освежили UI и юзабилити продукта — пользователи и стейкхолдеры довольны.
Статьи, созданные на основе проектного опыта
В процессе написания следующие статьи:
- Оценка оценки.
- Внедрение CI/CD на проекте с большим сопротивлением.
- Model-driven development.
- Blackbox тестирование.
- Внедрение GUI автотестов на долгоиграющем проекте.
Скриншоты
Свяжитесь с нами, чтобы обсудить Ваш IT-проект