Наприкінці червня 2019 роки до нас звернулася директор Української Біржі Благодійності із запитом про підтримку існуючого проекту.
Платформа порталу Української Біржі Благодійності (УББ) представляє собою високонавантажених сайт, за допомогою якого благодійні фонди збирають пожертви від відвідувачів на соціальні ініціативи, наприклад: допомога дітям, біженцям, ветеранам АТО, дитячим будинкам, притулкам для тварин, людям, які постраждали внаслідок нещасних випадків, і так далі. УББ - загальнонаціональна платформа, з якою співпрацюють десятки благодійних фондів.
Оскільки організація некомерційна, для УББ критично важливі:
За фактом призначене для користувача навантаження на порталі УББ нерегулярне, але велике. На момент звернення до нас влітку 2019 року біля платформи були такі проблеми: при різкому стрибку кількості відвідувань на сайт портал починав "виснути" і "падати", відвідувачі не могли зробити пожертвування, або ж самі транзакції ставали в чергу і зависали. Подібне призводило до проблеми підрахунку грошових надходжень на проекті. Щоб вирішити проблему і забезпечити правильний підрахунок, необхідні були нелюдські зусилля і постійний контроль команди УББ.
Такі стрибки в навантаженні цілком зрозумілі: вони відбуваються через сюжети зі збору коштів на телеканалах. Графік показу таких сюжетів спрогнозувати не можна, так як телеканали самі пропонують провести їх в доступні тимчасові проміжки. Коли сюжет про дитину, яка потребує допомоги, показують по національних телеканалах, на сайт заходять тисячі людей одночасно. Допускати падіння сайту під високим навантаженням у цьому випадку не можна, адже всі ці люди хочуть допомогти зараз, а не побачити "білий екран".
Паралельно з вирішенням головних проблем з highload, директор УББ Ірина Гуцал хотіла впровадити багато нового функціоналу. Наприклад, регулярні пожертви (підписка на регулярне пожертвування коштів певної категорії благодійності). Саме реалізацію функціоналу регулярного платежу ми вибрали пілотною частиною функціоналу.
Ми реалізували регулярний платіж, і тепер відвідувачі сайту можуть, зробивши пожертвування на проект, проводити такий же платіж автоматично протягом обраного періоду з бажаною регулярністю. Також вони мають можливість відмовитися від продовження платежів одним із двох способів: або автоматично, при повному зборі необхідної суми на проект, або у будь-який час за надісланим раніше на пошту посиланням.
Паралельно з розробкою пілотної частини функціоналу, ми забрали проект на підтримку. Це дало нам можливість спостерігати за роботою платформи і виконувати дрібні завдання (щоб зрозуміти, які з них можна і потрібно автоматизувати), а також простежити за піковими навантаженнями на платформу і визначити, який функціонал буде оптимальніше впровадити для вирішення питання.
Роботу проекту ми стабілізували приблизно за 2 місяці від початку підтримки. Окремо за це варто подякувати команді УББ, яка дійсно добре знає свій проект і його потреби. Завдяки тому, що ми практично переписали критично важливий функціонал прийому платежів, навіть із збереженням старої архітектури проект перестав падати від навантажень. Якщо раніше кожен сюжет на ТВ викликав колосальні складності у всієї команди, то після стабілізації цей процес став більше схожий на "Ну що, все нормально?" "Є деякі проблеми, але в цілому - так".
Кілька слів замість висновків: ми в Evergreen щиро проникнулися завданнями і цілями платформи УББ. Крім того, що це високонавантажених проект зі своєю специфікою і технологічними викликами, який дає нам можливість удосконалюватися і рости, як професіоналам, він дозволяє зробити щось хороше для тих, хто потребує допомоги.
Нам хочеться, щоб кожна копійка дійшла адресату, і ми розуміємо, що кожна секунда простою сайту, найменший баг у транзакціях або у логіці роботи функціоналу, може призвести до недостачі коштів на лікування дитини, проведення операцій або реабілітації. Складно порахувати скільки разів з моменту початку роботи над проектом дорослі бородаті інженери крадькома витирали сльози. І як раділи кожній зібраній без "зависань" сумі на лікування і кожнії новині про успішно проведену операцію.
І неважливо, хто ти на цьому проекті - замовник, менеджер, розробник або тестувальник - кожен з нас відчуває причетність і можливість зробити світ навколо кращим і добрішим. Ми не плануємо зупинятися на досягнутому і будемо працювати над новими сервісами, платформами і пошуком кращих рішень.