10 ноября 2017

Система лояльности: ready, steady, GO!

Какой разработчик не любит интересных задач! А ещё — новых технологий и классных заказчиков. И недавно нашей команде посчастливилось поработать над проектом, где было сразу всё это и ещё много интересного. Нас так впечатлил этот опыт, что мы решили рассказать о нём на страницах нашего блога.

Наш заказчик — международная компания, которая предоставляет решения для продаж и оплаты товаров. Её продукты развёрнуты буквально по всему миру — от Северной Америки до Европы и Ближнего Востока. Сотрудничество с таким серьёзным партнёром — уже предмет для гордости, тем более, что это не первый наш совместно разработанный проект.

На этот раз нам предстояло поучаствовать в разработке приложения, которое полностью обеспечивает продажи — как онлайн, так и в обычных магазинах. Помимо всего ПО, связанного именно с процессом покупок, приложение содержит модуль лояльности клиентов. Этот модуль позволяет управлять различными бонусными программами, выбирая их из обширного списка и настраивая под свои нужды. Именно над ним и трудилась наша команда.

Проблема, которую нам предстояло решить, заключалась в следующем: облачное решение для управления лояльностью, уже существовавшее на тот момент, не всегда отвечало потребностям клиентов заказчика. Дело в том, что некоторые магазины располагались в регионах, где частенько возникали проблемы с качеством интернета и отключением электричества — да-да, это актуально не только для России, но даже для развитых европейских государств! Чтобы магазины в отдалённых районах могли полноценно пользоваться сервисом, заказчик решил разработать локальный клиент, который синхронизировался бы с облачным решением. Во время перебоев такой клиент хранит информацию “у себя”, а когда соединение восстановлено, передаёт её в облачное хранилище. И наоборот, все изменения в программах лояльности, которые появляются в облаке, передаются и на локальный клиент. Разработку этого локального клиента заказчик доверил Noveo.

Правила применения скидок в бонусной программе были описаны в JSON-файле. Наш локальный «движок» был спроектирован так, чтобы этот файл можно было в любой момент подменить файлом с новыми акциями, скидками и другими условиями.

Синхронизация с облачными сервисами сама по себе представляет непростую задачу, но с этим мы уже были знакомы, так что наиболее интересными для нас стали другие особенности проекта. Первая из них — язык программирования Go. Для нас это был первый серьёзный проект на этом языке, так что работать с ним было одновременно и интересно, и волнительно. Но наши разработчики в очередной раз продемонстрировали высший класс, и у заказчика не возникло никаких нареканий к качеству кода.

Следующей особенностью был подход Test Driven Development, или TDD, с которым мы также нечасто сталкиваемся на наших проектах. В данном случае это работало так: заказчик предоставлял входные и выходные данные, а мы написали юнит-тесты, разработали локальный клиент для системы лояльности, запустили эти тесты сначала на локальном клиенте, а затем на облачном, и сравнили результаты. Если результаты не совпадали, мы искали (и, конечно, устраняли) причину. Спасибо заказчику за интересный опыт!

Кстати, о заказчике. Все члены нашей команды безоговорочно отмечают не только вежливость и оперативность ответов, но и его высокую техническую квалификацию. Он очень подробно рассказал о том, как видит проект, какие у него цели и задачи, какой функционал уже разработан и какой результат он желает получить от наших ребят. При этом детально и очень грамотно было расписано устройство самой системы, облачной платформы, всех её особенностей и нюансов работы. Необходимую документацию и артефакты нам также предоставили незамедлительно. “Они отвечали на вопросы прежде, чем мы их задавали!” — так описывает взаимодействие менеджер проекта Павел.

В настоящее время проект уже разработан, внедрён и радует как покупателей, получающих приятные бонусы, так и владельцев магазинов, которые видят счастливых клиентов, готовых возвращаться снова и снова. Мы хотим ещё раз поблагодарить наших ребят за отличную работу, а заказчика — за то, что доверил нам такой крутой проект. Надеемся скоро увидеться снова и поработать над чем-нибудь столь же интересным!

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Читайте в нашем блоге

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: