Хто купував квитки на поїзд, той в цирку не сміється. Ви мабуть знаєте цей ритуал. Продаж відкривається за N днів до відправлення, о восьмій ранку, ти оновлюєш застосунок, і він закономірно підвисає, бо в цю саму секунду те саме роблять ще тисячі людей. Далі обираєш поїзд, бачиш список вагонів і вільних місць, тицяєш потрібні, і десь тут може вискочити "місце вже викупили". Якщо пощастило і не вискочило, вводиш пасажирів на кожне місце, добре хоч дані запамʼятовуються. А потім зʼявляється банер про бронювання (пікрілейтед в коментах), і ти чекаєш. Мінімум пʼять хвилин.
Наприкінці цих пʼяти хвилин буде або успіх і оплата, або сухе "квитки викупили", і все починається спочатку: знову поїзд, знову місця, знову пасажири, звісно, з ризиком ресету прогресу на початок квеста. Трохи підкумарює.
На всякий випадок дисклеймер: я поважаю людей, які це робили. Стало явно краще, тепер не треба займати чергу о пʼятій ранку в касу. Плюс всієї правди ми не знаємо, і взагалі з дивану завжди краще видно. І от я дивлюсь з дивану і бачу цілком впізнавану архітектуру, заточену на виживання під піковим навантаженням, обумовленим бізнес-специфікою.
Швидше за все попереду стоїть якийсь фасад, такий собі кеш наявності, який оновлюється не миттєво, а за розкладом. Уся движуха до банера про бронювання крутиться на ньому, тому вибір місць швидкий і дешевий. А коли ти підтверджуєш, твій запит лягає повідомленням у чергу, яка опрацьовується... по черзі. Поки до тебе дійде, місце могли зайняти везунчики, чиє повідомлення було попереду, і тоді "всьо фігня Міша, давай по новой". Або фасад просто не встиг оновитись, ти бронював давно продане, і дізнаєшся про це аж за пʼять хвилин, за які розберуть і решту.
Є в мене підозра, що це довге очікування зробили навмисне (може взагалі додали штучний таймер), та й весь цей незручний UX з купою повторюваних дій тут не випадково. Поки людина шукає кнопки і друкує паспортні дані, вона не довбить бекенд запитами, тобто повільний UX працює як природний тротлінг. Звучить розумно, але не сходиться: уся ця метушня все одно генерує запити, і замість умовних пʼяти на одне замовлення виходить пʼятдесят, більшість з яких ще й тягне неактуальні дані з фасаду. Виходить lose-lose, де і користувачі бісяться, і бекенд стогне.
Проблеми зрозумілі, але шо з ними робити? Чи можна спроектувати зручніше та ефективніше рішення? Думаю, варіанти можна буде почитати в коментах, а згодом я напишу свою версію.
Post #654
2.71K
- 🔥 30
- 👍 10
- ❤ 4