Тендерний майданчик ІНТЕРПАЙП: розробка, що забезпечила провідному постачальнику труб надійну логістику

Євген
Євген
CBDO
15.01.2024
15.01.2024
5.0
828
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)
Будьте першими, хто залишить коментар
Залишились питання?
Залиште контактні дані. Наш менеджер зв'яжеться та проконсультує вас.
Підписуйтесь на розсилку Айтижблог
Бажаєте отримувати цікаві статті?
Натискаючи кнопку “Відправити”, ви даєте згоду на обробку особистих даних. Детальніше
Слідкуйте за нами у соціальних мережах
Цей сайт використовує cookie-файли для більш комфортної роботи користувача. Продовжуючи переглядати сайт, Ви погоджуєтеся на використання cookie.