Когда-то у нас было вот так:
А теперь стало так:
История началась почти два года назад, когда мы только пришли на Хабр. Наш первый топик был, в частности, про багрепорты, советы и идеи. Особенно много предложений было по старому личному кабинету. Поскольку быстрой переделкой там дело не ограничилось бы, мы начали практически полную замену системы.
Для начала расскажу, почему приняли решение делать с нуля. Это была возможность полностью перебрать архитектуру. Старый личный кабинет работал на уже как минимум 10-летней давности ПО, который не масштабировался и обладал определенными ограничениями
Техническая часть
Использовалась 32-битная платформа, что накладывало определенные ограничения на размер используемой оперативной памяти, а использование legacy API, который зачастую уже не поддерживался производителем, негативно сказывалось на стабильности работы Java-приложений.
Старая версия личного кабинета для балансировки нагрузки использовала только функциональность балансировщика HTTP-сессий. При этом, если случались какие-либо проблемы с одним из серверов приложений, то терялись текущие пользовательские сессии, связанные с таким сервером приложений.
Слабая модульность решения и наличие большого количества логики на презентационном слое делало архитектуру приложения «монолитной», что требовало значительных трудозатрат при разработке, тестировании даже простых изменений. Также это осложняло горизонтальное масштабирование и снижало общую скорость работы приложения. Как следствие, определенные операции, особенно чувствительные к производительности, как вывод биллинговой и клиентской информации, выполнялись излишне продолжительное время. Кроме того, обработка счетов первого биллингового цикла, приходящегося на начало месяца, могла занимать несколько дней. Проблема была в алгоритме обработки, при котором временные данные сохранялись на дисковый массив, что замедляло работу.
Мы перешли на 64-битную платформу, отказались от использования legacy-библиотек. Сейчас для повышения отказоустойчивости и распределения нагрузки применяются кластер как на уровне серверов приложений, так и на уровне базы данных. При проектировании и внедрении новой версии личного кабинета была пересмотрена и сильно изменена интеграция со смежными системами, это было достаточно сложно.
Переход от «инженерного» интерфейса к «человеческому»
Важные изменения коснулись функционала системы, особенно в части абонентов постоплатной системы расчетов. Появился функционал групповых операций, адресная книга, наглядное представление финансовой информации при помощи графиков и диаграмм, конструктор пользовательских отчетов, где пользователи могут сами задавать параметры и фильтры.
Если сравнивать с предыдущей версией, то новая система уже в момент запуска обладает емкостью втрое большей в отношении количества абонентов и примерно в пять раз больше по числу одновременных транзакций. Так, сейчас обрабатывается порядка 100 транзакций в секунду. Но мы можем обеспечить и большую нагрузку.
С точки зрения количества данных, то в системе хранится порядка 80 млн. абонентов и по каждому из них услуги, тарифы, балансы, счета, заказанные детализации и прочая информация.
Одной из проблем предыдущей версии являлась скорость обработки счетов. Ежемесячно через новый личный кабинет проходит порядка 4 ТБ счетов.
При этом основная часть счетов приходится на первый биллинговый цикл в начале месяца. Новое решение позволяет обработать данные счета более
чем в 3 раза быстрее, укладываясь в 8 часов.
Кроме того, что очень важно, — были сняты первоначальные системные ограничения по наращиванию емкости, и теперь, при необходимости, мы сможем ее постепенно расширять, исходя из требований рынка.
Помимо этого, личный кабинет — это интерфейс к большому количеству внутренних систем. Сейчас осуществлена интеграция более чем с 15 информационными системами, включая биллинговую систему, препейдные платформы, контент-платформы, веб-сайт, CRM систему и пр. Необходимо обеспечить быстрое и надежное функционирование всей сложной цепочки интеграции.
Философия интерфейса
Профиль «до» и «после»
Посмотрите на сравнение скриншотов одинаковых экранов старого и нового личного кабинета. Мы перегруппировали элементы, максимально ориентировали всё на пользователя в плане восприятия информации, перевели большую часть терминов на русский разговорный язык (как абоненты называют эти вещи при обращении в колл-центр) и многое другое.
Главная задача – чтобы кабинет перестал восприниматься как нечто, требующее специальных знаний. У нас есть пример Европы, где любой пенсионер может просто взять и зайти в личный кабинет своего оператора, чтобы что-то изменить в своем пользовательском профиле. (в Норвегии около половины абонентов местных операторов используют личный кабинет, у нас же – всего несколько процентов).
Разница в достижениях цели почти на порядок.
В принципе для звонков в колл-центр есть базовая причина – обеспокоенность за баланс. Точнее, вопрос: «а не переплачиваю ли я»? Например, скорее всего, большая часть читателей этого топика не знают, что выгоднее для них – их текущий тариф или тот, что рекламируется по телевизору. Клиентам без технических знаний проще всего банально спросить у оператора. Механика такая – вышел новый ролик, человек его увидел во время рекламной паузы, забеспокоился, решил проверить, позвонил нам. К этому же относится проверка того, дошли ли деньги: «Я вот вчера 100 рублей клал через терминал, они пришли?» и вопросы списаний. В общем, абоненту нужен контроль. Мы это ощущение контроля постарались дать, собрав на главном экране максимум сразу нужных данных, плюс, сделав быстрые выписки. Выписки позволяют точно понять, что происходило со счётом, и очень радуют многих. И здесь было важно подтянуть и техническую часть (вы уже знаете, почему) и сделать правильный интерфейс, иначе даже быстро генерируемая выписка просто не была бы найдена.
Финансовая информация
Как делались прототипы и тесты
На входе были наши данные о том, что нужно пользователю (у нас — одна из наиболее известных в России юзабилити-лабораторий), видение специалистов Студии Лебедева, плюс данные от техспециалистов, что можно, а что нет. Получался прототип, который сначала проверялся по нашей методологии, а потом уходил на итерации утверждений и тестов.
Наглядный результат взаимодействия с живыми людьми
Тесты делались так: мы набирали людей «с улицы» в соответствии с профилем обычных абонентов, обращающихся в колл-центр. Запускали перед ними определенный прототип личного кабинета и ставили задачи в таком виде, в каком они стоят перед пользователями. Например, не «Сделайте выписку со счёта за последние 15 дней», а: «Интересно, сколько стоил звонок из Украины, который вы сделали во время прошлой поездки?», не «Подключите тарифную опцию такую-то», а «Завтра вы едете в Киев, попробуйте посмотреть, как дешевле звонить родственникам». Человек сам изучал кабинет и искал решение. Мы писали его движения глаз, движения мышью, нажатия, плюс общее видео «со стороны». Такие тесты прогонялись сотни раз для каждого макета, пока не стало понятно, что большая часть «случайных» людей (мы набирали их перед каждой новой итерацией) вполне успешно справляется.
Потом была очень долгое бета-тестирование, где тоже сильно помог Хабр – за час хабраэффекта нашлось столько ошибок, сколько тестеры находили за неделю.
Мы продолжаем его дорабатывать, а также собираемся в перспективе свести все личные кабинеты (включая кабинет для домашнего интернета) в один, как сейчас уже свели доступ к разным сим-картам в один аккаунт.
Автор: GodunovAndrey