Oink
Билет за Ed Sheeran? Мисията (не)възможна!

Билет за Ed Sheeran? Мисията (не)възможна!

За много от нас 26 октомври ще се запомни с един дълъг ден изпълнен с неистови опити да си закупим билет за едно от най-очакваните събития през 2024г - мега концерта на Ed Sheeran в София. Въпреки че билетите почти се разпродадоха в рамките на ден, много хора предпочетоха да си спестят нервите и изгубеното време и взеха решение да посетят събитието в Румъния, което ще се проведе седмица по-рано на 24 август 2024г. 

 

Статията ще бъде малко по-техническа и е вероятно да не можете да разберете в детайли част от написаното, за което се извиняваме предварително.

 

Как започна всичко?

 

Ticket Station Bulgaria обявиха, че в 09:30 на 26 октомври ще пуснат сайт в който можем да се наредим на опашка и когато редът ни дойде да закупим своите билети. Речено сторено, в 09:35 сайтът вече беше онлайн и в 10:00 вече се появиха първите късметлии с ценните “хартийки”.

 

Още докато си чакахме търпеливо реда, от професионално изкривяване, отворихме нашите browser development конзоли и какво да видим, console.log-ове, които print-ват разни обекти. “Случва се”  си казахме и не обърнахме достатъчно внимание, но чакай малко, какво е MyPosition.vue, това не трябва да е там. Защо разработчиците са качили sourcemap-а в production build?!, това е сериозен пропуск който leak-ва целия клиентски код във вида в който програмиста го е писал.

 

 

Тъй като разработчиците на тази система са ни предоставили възможност да прочетем целия им клиентски код, приятно форматиран и четим, ние се заехме с частта да го разгледаме. Ticket Station са взели решението да разработят малка система, която да служи като портал между основната им система за закупуване на билети и хилядите хора, които чакат своя ред на опашка.



  1. Проблем номер - Client-side
    Ticket Station са взели решението цялата им програмна логика, свързана със системата за чакане, да бъде изцяло client-side, което означава, че при презареждане на страницата, загуба на интернет и др, ние губим своето място и чакането започва отново. Тук най-потърпевши са хората, които не са използвали настолни компютри и лаптопи, а са чакали своя ред на мобилен телефон. Екраните на мобилните телефони се изключват и вероятността изобщо да не ви се execute-не javascript който да ви покаже заветния бутон КУПИ е доста голям. Архитектурата на подобно приложение е трябвало да бъде съвсем различна, където чрез потребителски акаунт да заемеш своето място в опашка, която да се пази независимо дали си на компютъра или си отворил своя браузър. Като при достигане на твоя ред можеше да получаваш известие посредством имейл или в реално време да виждаш колко хора преди теб остават. Истинско оставащо време, а не такова каквото ни предложиха Ticket Station.

  2. Лош responsive design и UX.
    Много хора не видяха заветния бутон "КУПИ" тъй като той се показваше най-отдолу без системата да те скролва и без потребителя да има представа, че неговия ред е дошъл. Други имаха проблем с валидацията на имената и потвърждаване на общите условия в основната система за закупуване на билети поради лош UX и некоректни валидации.

  3. Натоварени системи.
    Организаторите не успяха да осигурят надеждна система, която да успее да обслужи всички хора, като много често системата им не смогваше и връщаше хората обратно на опашка. Тук в защита на Ticket Station можем да кажем, че част от проблемите не са по тяхна вина, а се дължат на проблем със системите на трети страни над които те нямат контрол.

  4. Бутафорна опашка
    При POST request към AWS endpoint d3ma0lvfw13ump.cloudfront.net/assign_queue_num системата автоматично генерира api_request_key във формат UUID който ключ е валиден и може да се ползва без да е нужно да се чака на опашка. Всеки с технически познания може да генерира своя ключ, след което да го използва директно в основния сайт на Ticket Station ticketstation.bg/bg/api={KEY}&event_id=Sample&home=false като това автоматично ще ви даде възможност да закупите билет без да се редите на “опашки”. Нечестно нали? Цялата валидация дали ви е дошъл реда, се свежда до един ред клиентски код:

    this.myPosition <= this.queuePosition

    което е един голям пропуск в сигурността и равнопоставеността за която Ticket Station говориха дни по-рано.

  5. Обратна връзка и потвърждение
    24 часа след стартирането има хора, които все още не знаят дали са закупили успешно билети или не, защото системата не им е върнала нито имейл, нито екран в който да е описано, че всичко е приключилo успешно.



Реализирането на сложната задача да обслужиш над 100 хиляди души в рамките на няколко десетки минути не е толкова тривиална задача. Хората, които не са технически запознати обаче, не осъзнават в детайли потенциалните проблеми пред които са изправени разработчиците. Това разбира се не им е работа. Всеки човек очаква в рамките на няколко минути да влезе в дадена платформа, да закупи своя билет и да продължи нормално своето ежедневие. За съжаление набързо скалъпената платформа от страна на Ticket Station и лошите инженерни решения превърнаха този 26 октомври  в едно голямо преживяване и луда борба в опит да се сдобият с билет за любимия изпълнител.

 

Дано разработчиците и организаторите от Ticket Station да направят своите изводи от случилото се. А междувременно всички ние ще се видим на концерта в България (или Румъния), живот и здрав!

 

Категории

Събития

покажи всички

Други статии

Общи условия

Политика за поверителностОбщи условияБисквитки
© 2024 Oink.bg. Всички права запазени