В конце июня 2019 года к нам обратилась директор Украинской Биржи Благотворительности с запросом о поддержке существующего проекта.
Платформа портала Украинской Биржи Благотворительности (УББ) представляет собой высоконагруженный сайт, посредством которого благотворительные фонды собирают пожертвования от посетителей на социальные инициативы, например: помощь детям, беженцам, ветеранам АТО, детским домам, приютам для животных, людям, пострадавшим вследствие несчастных случаев, и так далее. УББ — общенациональная платформа, с которой сотрудничают десятки благотворительных фондов.
Поскольку организация некоммерческая, для УББ критично важны:
По факту пользовательская нагрузка на портале УББ нерегулярная, но большая. На момент обращения к нам летом 2019 года у платформы были следующие проблемы: при резком скачке заходов посетителей на сайт портал начинал “подвисать” и “падать”, посетители не могли совершить пожертвование, или же сами транзакции становились в очередь и зависали. Подобное приводило к проблеме подсчета денежных поступлений на проекте. Чтобы решить проблему и обеспечить верный подсчет, необходимы были нечеловеческие усилия и постоянный контроль команды УББ.
Подобные скачки в нагрузке вполне объяснимы: они происходят из-за сюжетов на телеканалах по сбору средств. График показа таких сюжетов спрогнозировать нельзя, так как телеканалы сами предлагают провести их в доступные временные промежутки. Когда сюжет про ребенка, нуждающегося в помощи, показывают по национальным телеканалам, на сайт заходят тысячи людей одновременно. Допускать падения сайта под высокой нагрузкой в этом случае нельзя, ведь все эти люди хотят помочь сейчас, а не увидеть “белый экран”.
Параллельно с решением главных проблем с highload, директор УББ Ирина Гуцал хотела внедрить много нового функционала. Например, регулярные пожертвования (подписка на регулярное пожертвование средств определенной категории благотворительности). Именно реализацию функционала регулярного платежа мы выбрали пилотной частью функционала.
Мы реализовали регулярный платеж, и теперь посетители сайта могут, совершив пожертвования на проект, проводить такой же платеж автоматически в течении выбранного периода с желаемой регулярностью. Также у них есть возможность отказаться от продления платежей одним из двух способов: либо автоматически, при полном сборе необходимой суммы на проект, либо же в любое время по высланной ранее на почту ссылке.
Параллельно с разработкой пилотной части функционала, мы забрали проект на поддержку. Это дало нам возможность наблюдать за работой платформы и выполнять мелкие задачи (чтобы понять, какие из них можно и нужно автоматизировать), а также проследить за пиковыми нагрузками на платформу и определить какой функционал будет оптимальней внедрить для решения вопроса.
Работу проекта мы стабилизировали примерно за 2 месяца с начала поддержки. Отдельно за это стоит поблагодарить команду УББ, которая действительно хорошо знает свой проект и его потребности. Благодаря тому, что мы практически переписали критично важный функционал приема платежей, даже с сохранением старой архитектуры проект перестал падать от нагрузок. Если раньше каждый сюжет на ТВ вызывал колоссальные сложности у всей команды, то после стабилизации этот процесс стал больше похож на “Ну что, всё нормально?” “Есть некоторые проблемы, но в целом — да”.
Несколько слов вместо вывода: мы в Evergreen искренне прониклась задачами и целями платформы УББ. Помимо того, что это высоконагруженный проект со своей спецификой и технологическими вызовами, который дает нам возможность совершенствоваться и расти, как профессионалам, он позволяет сделать что-то хорошее для тех, кто нуждается в помощи.
Нам хочется, чтобы каждая копейка дошла адресату, и мы понимаем, что каждая секунда простоя сайта, малейший баг в транзакциях или неверно работающей логике функционала, может привести к недособранным средствам на лечение ребенка, проведение операций или реабилитации. Сложно сосчитать сколько раз с момента начала работы над проектом взрослые бородатые инженеры украдкой вытирали слёзы. И как радовались каждой собранной без “зависаний” сумме на лечение и каждой новости об успешно проведенной операции.
И неважно, кто ты на этом проекте — заказчик, менеджер, разработчик или тестировщик — каждый из нас ощущает причастность и возможность сделать мир вокруг лучше и добрее. Мы не планируем останавливаться на достигнутом и будем работать над новыми сервисами, платформами и поиском лучших решений.