Как за три месяца заложить основу крупной системы

Заказчик

Хайтек выступал субподрядчиком. Подрядчик — крупный интегратор.

Задача

Разработать крупную автоматизированную систему.

Результат

В сжатые сроки создана основная часть архитектуры проекта.

Задача

По условиям договора мы не можем раскрывать всей информации о проекте (NDA).

Подрядчик привлек нас чтобы расширить команду разработчиков автоматизированной системы. Срок — три месяца. Наша команда участвовала с начала разработки и до введения проекта в опытную эксплуатацию.

Почему привлекли именно Хайтек?

Заказчик требовал вести разработку под Linux-сервера и использовать свободное ПО. Подрядчик выбрал платформу .NET Core, но ему не хватало экспертизы для разработки под Linux. Мы ранее осуществляли внутреннюю автоматизацию на Core, а наша библиотека на .NET Core ускоряет разработку ПО для бизнеса.

Проблемы

300 000 строк кода за 16 000 человеко-часов

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

Аналитики со стороны подрядчика сталкивались со множеством проблем и ждали разъяснений. Разработка проходила практически в режиме прототипирования.

Максим Аршинов
Соучредитель «Хайтек Груп», CTO. Тимлид проекта

Взаимодействие

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

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

Представитель заказчика

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

Решения

*

*

Серверная часть — ASP.NET Core MVC

Фронтенд и верстка — React

Поиск в классификаторе — Elastic Search

Сервер очередей — RabbitMQ

*

*

*

Вся серверная часть написана на ASP.NET Core MVC, фронтенд и верстка — на React. В ходе проекта мы провели обучение сотрудников подрядчика работе с React, чтобы позволило разработчикам быстрее войти в работу. Для ускорения разработки типичных компонентов в пользовательском интерфейсе применили собственный генератор.

На этапе начала проекта и дефицита UI-разработки на React это являлось весомым фактором. В общей сложности генератор позволил сократить издержки в 2-3 раза и сэкономить 100-200 человеко-часов.

Представитель заказчика

Постраничный вывод, фильтрация, сортировка, изменение состояние объекта, создание проекций в базе данных — все эти операции отнимают слишком много времени. Благодаря тому, что разработчик не пишет стандартный функционал, а просто декларирует намерения, удалось сэкономить еще около 80-100 человеко-часов. Изменили структуру хранения данных, предупредили возможные проблемы после разрастания базы данных и сократили возможные затраты на изменение интерфейса благодаря собственному генератору. В системе могут быть периодические пики нагрузки. Для очередности операций применили RabbitMQ. После ожидания и обработки заявки пользователю приходит уведомления, что данные успешно загружены.

Желание идеализировать разработку и закладывать архитектурные моменты еще на этапе прототипирования — это больше плюс, чем минус, хоть и не всегда рентабельно. В этом плане можно было строить работу более гибко. Другой момент — сложный код и собственные решения требует определенного порога вхождения в проект. Однако с помощью собственных решений получилось ускорить разработку.

Представитель заказчика

Результат

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

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

Представитель заказчика
Опубликовано: 01.05.18
Другие кейсы