Как за три месяца заложить основу крупной системы
Заказчик
Хайтек выступал субподрядчиком. Подрядчик — крупный интегратор.
Задача
Разработать крупную автоматизированную систему.
Результат
В сжатые сроки создана основная часть архитектуры проекта.
Задача
По условиям договора мы не можем раскрывать всей информации о проекте (NDA).
Подрядчик привлек нас чтобы расширить команду разработчиков автоматизированной системы. Срок — три месяца. Наша команда участвовала с начала разработки и до введения проекта в опытную эксплуатацию.
Почему привлекли именно Хайтек?
Заказчик требовал вести разработку под Linux-сервера и использовать свободное ПО. Подрядчик выбрал платформу .NET Core, но ему не хватало экспертизы для разработки под Linux. Мы ранее осуществляли внутреннюю автоматизацию на Core, а наша библиотека на .NET Core ускоряет разработку ПО для бизнеса.
Проблемы
300 000 строк кода за 16 000 человеко-часов
Проект состоял из нескольких независимых модулей, мы полностью закрывали два, связанных с обработкой 3 миллиардов позиций. Изначально сроки выполнения оценили в девять месяцев. Заказчик требовал сдать проект в опытную эксплуатацию за три. При этом разработка требовала глубокого понимания бизнес-процессов заказчика.
Аналитики со стороны подрядчика сталкивались со множеством проблем и ждали разъяснений. Разработка проходила практически в режиме прототипирования.
Взаимодействие
Очные встречи с подрядчиком дважды в неделю. Подготовка демо-версий модулей для заказчика 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. После ожидания и обработки заявки пользователю приходит уведомления, что данные успешно загружены.
Желание идеализировать разработку и закладывать архитектурные моменты еще на этапе прототипирования — это больше плюс, чем минус, хоть и не всегда рентабельно. В этом плане можно было строить работу более гибко. Другой момент — сложный код и собственные решения требует определенного порога вхождения в проект. Однако с помощью собственных решений получилось ускорить разработку.
Результат
Подрядчик при помощи Хайтека заложил первичную архитектуру проекта. Мы оформили техдокументацию, обучили разработчиков подрядчика, создали первоначальный набор компонентов. Со временем постепенно уводили с проекта сотрудников и передали его на поддержку подрядчику. Проект был введен в опытную эксплуатацию спустя три месяца после начала разработки, в промышленную — через полгода.
Проект стал положительным опытом для обеих команд. Результат говорит сам за себя. Проект был сдан в те сроки, которые на начальном этапе нам казались нереальными.
Другие кейсы

