Тендерная площадка ИНТЕРПАЙП: разработка, обеспечившая ведущему поставщику труб надежную логистику

Евгений
Евгений
CBDO
15.01.2024
15.01.2024
5.0
932
10 минут
0

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

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

Именно такие технологии мы стремились предоставить нашему клиенту - группе компаний ИНТЕРПАЙП, которая является глобальным игроком на рынке стальных труб и железнодорожных колес. Расскажем о кастомной разработке тендерной площадки для перевозок ИНТЕРПАЙП, которая решила ряд проблем в технических процессах компании.

Наш клиент

ИНТЕРПАЙП - украинская промышленная компания, мировой производитель стальных труб и железнодорожной продукции. Клиенты ИНТЕРПАЙП - ведущие мировые компании нефтегазовой отрасли, строительства, транспорта. Даже сегодня, несмотря на войну в Украине, продукция холдинга поставляется в 70 стран мира через сеть торговых офисов, размещенных на ключевых рынках Ближнего Востока, Северной Америки и Европы.

С какой проблемой столкнулся клиент

Чтобы определить проблему, надо немного рассказать о специфике бизнес-процессов клиента.

В организации своей логистики ИНТЕРПАЙП полагается на внутреннюю электронную тендерную площадку, где можно закупать услуги автоперевозок. Тендеры на этой платформе проводятся практически в непрерывном режиме, обновляясь по три-четыре раза в день. Перевозчик, который выигрывает в тендере, должен быть готовым отправиться в рейс без промедлений. Часто на подготовку к перевозке - не более суток.

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

Задача электронной тендерной площадки заключается в том, чтобы автоматизировать эти торги и обеспечить равные условия для всех участников. Но с ростом нагрузки на нее – старая система потеряла эффективность. Платформа начала терять быстродействие и обрабатывала запросы с ошибками, или же отклоняла их. Наиболее критическими были последние 5-10 секунд до конца торгов. В этот момент десятки экспедиторов начинали интенсивно обновлять свои ценовые ставки, поэтому система теряла стабильность.

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

За решением этой проблемы команда ИНТЕРПАЙП обратилась в нашу компанию. Клиенту было необходимо новое решение - эффективное и надежное.

Решение проблемы

Клиент обратился к нам с существующей системой и старым техзаданием, которое использовалось для ее создания. Идея заключалась в том, чтобы повторить текущий функционал, но таким образом, чтобы соответствовать требованиям к быстродействию и отказоустойчивости.

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

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

Достижение этой цели требовало решения ряда задач:

  • реализовать функционал для проведения тендеров в формате веб-приложения (SPA);

  • обеспечить обновление тендерных данных на платформе в реальном времени. Чтобы все пользователи в рамках тендера могли видеть абсолютно идентичные данные с минимальной задержкой;

  • обеспечить платформе возможности точной обработки большого количества запросов в течение короткого промежутка времени, во время пиковых нагрузок;

  • реализовать современный UI/UX, который будет удобным и понятным для экспедиторов.

 

Какие технологии мы выбрали

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

Для реализации клиентской части был использован фреймворк Next.js. В качестве СУБД была применена реляционная база данных PostgresSQL, а в качестве In-memory хранилища - Redis. Backend-часть разработана с применением языка PHP, а именно фреймворка Laravel. Взаимодействие между компонентами посредством API реализовано с использованием GraphQL.

Полный стек разработки выглядит так:

  • PHP 8;

  • Laravel 8 with octane (Swoole);

  • WS Server (Swoole engine);

  • PostgresSQL 14;

  • Redis (cache/queue);

  • GraphQL;

  • TypeScript;

  • React.js;

  • Next.js;

  • Apollo Client;

  • Ant Design.

 

Как мы построили работу

В целом проект состоял из двух этапов. Первый этап предусматривал разработку Proof-of-Concept. В рамках этой стадии команда изучила запрос клиента и подготовила ядро продукта под его технические требования, с учетом всей специфики будущего решения. Работу этого ядра мы продемонстрировали клиенту в тестовой симуляции на демо-серверах, проведя процедуру нагрузочного тестирования.

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

Второй этап касался непосредственно разработки продукта: проработка и согласование UI/UX, программирование бэкэнда и фронтенда, реализация всех функциональных требований.

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

К работе над проектом присоединилась опытная команда:

  • UX Designer

  • Business Analyst

  • Backend Developer

  • Frontend Developer

  • Project Manager

  • QA Engineer

  • DevOps Engineer

Отчетность и коммуникация

Клиент закрепил за проектом собственного менеджера, который мониторил ход разработки и предоставлял разработчикам всю необходимую обратную связь. Мы вели отчет для клиента о соблюдении тайминга проекта и прогрессе выполнения road-map.

Раз в две недели команда разработчиков проводила demo day для бизнес-заказчика и технического департамента ИНТЕРПАЙП, которые были лично заинтересованы в проекте. Мы подробно обсуждали наш прогресс и демонстрировали результаты работ. В целом разработка продвигалась без неожиданностей, поэтому команда вышла к релизу в запланированные сроки.

Что мы разработали

Результатом проекта стала надежная цифровая тендерная площадка для закупки транспортных услуг, реализованная в формате Single Page Application. Теперь клиент может быть уверен в том, что его ежедневные онлайн-тендеры на автомобильные перевозки проводятся без проблем, задержек и ошибок.

Рассмотрим, как работает новое решение.

1.   Экспедитор авторизуется на корпоративном портале ИНТЕРПАЙП. Там он может перейти в раздел "Торги на перевозки" и попасть на платформу, разработанную нашей командой.

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

     

3.  Ключевой функцией платформы являются торги. Выбрав необходимые тендеры, экспедитор нажимает на кнопку "Торговать по выбранным" и попадает в новый экран. Здесь в карточках выбранных тендеров появляется таймер и поле для торговой ставки.

4.  Цель экспедитора - выиграть тендер, предлагая самую выгодную цену. Он выставляет в карточке свою стартовую цену и шаг автоматического снижения ставки. Важным здесь является то, что таймер торгов и актуальные ставки обновляются через протокол WebSocket в реальном времени.

5.  Когда таймер торгов истекает, тендер автоматически поступает на обработку. Логика определения победителя лежит за пределами платформы, на стороне ERP клиента. Но именно наша платформа гарантирует точность и сохранение правильной очередности подачи ставок от всех участников.

6.  Результаты своих торгов экспедитор может увидеть во вкладке "неактивные тендеры". Там он может узнать, в каких тендерах он выиграл, а в каких - проиграл.

Важной частью проекта стал новый дизайн. Мы проработали UI/UX площадки таким образом, чтобы сделать ее максимально удобной и информативной для конечных пользователей. Команда также уделила особое внимание адаптивной верстке страниц, чтобы сделать их удобными на планшетах и смартфонах.

Какие вызовы мы преодолели

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

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

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

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

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

Результаты проекта

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

Следующим шагом в развитии площадки должна стать разработка полноценной работы через интерфейс ERP. Она упростит для компании загрузку тендеров и управление процессами торгов.

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

Евгений
Про автора
Евгений
CBDO
Опыт работы 9 лет
Эксперт по IT-продуктам, помогает потенциальным клиентам WEZOM подобрать оптимальные платформы и технологии для решения задач бизнеса.
Больше статей от автора
Как вам статья?
5.0
Проголосовало: 1
Давайте обсудим Ваш проект
Нажимая на кнопку “Отправить”, вы даете согласие на обработку личных данных. Подробнее
Комментарии
(0)
Будьте первыми, кто оставит комментарий
wezom logo
Остались вопросы?
Оставьте ваши контактные данные. Наш менеджер свяжется и проконсультирует вас.
Подписывайтесь на рассылку Айтыжблог
blog subscriber decor image
Хотите получать интересные статьи?
Нажимая на кнопку “Отправить”, вы даете согласие на обработку личных данных. Подробнее
Следите за нами в социальных сетях
Этот сайт использует cookie-файлы для более комфортной работы пользователя. Продолжая просматривать сайт, Вы соглашаетесь на использование cookie.