Сотрудничество с компанией «Касперский»

О клиенте
Мы сотрудничаем с нашим клиентом «Касперский» уже около трёх лет. За это время успешно завершили ряд проектов. Но мы не останавливаемся на достигнутом и продолжаем совершенствовать ранее созданные продукты, а также воплощать в жизнь новые идеи.
Проект «Прометей»

Клиент обратился к нам с просьбой обновить свой проект, который не обновлялся в течение довольно длительного периода времени и нуждался в усовершенствовании. В частности, требовалось проанализировать базу на предмет устаревших решений и ускорения работы создания графиков на основе собранных и загруженных данных в систему. Также были поставлены задачи по обновлению компонентов и скриптов. Так как система не обновлялась достаточно продолжительное время, и многие компоненты требовали доработки и обновления.

В системе был обнаружен некорректно работающий функционал, который требовал исправления и доработки. Также были требования к таблицам для сбора статистики, которые требовалось дополнить данными для более полноценного анализа и презентаций перед руководством. Кроме того, нашей команде необходимо было улучшить UX, обновить различные элементы для более легкого взаимодействия, повысить безопасность системы. Мы провели глубокий анализ перед тем, как приступить к решению поставленных задач.

Что мы сделали?

Для решения данных задач были привлечены необходимые специалисты, среди которых были дизайнер, frontend и backend разработчики, а также DevOps.

Дизайнер работал над обновлением интерфейса системы, с целью улучшения пользовательского опыта и визуальной привлекательности для пользователей. Он провел работу по обновлению графического дизайна и других элементов интерфейса, что позволит пользователям лучше понимать и управлять системой.

Frontend и backend разработчики работали над устранением ошибок и улучшением производительности системы. Они проводили работу по обновлению компонентов и скриптов, убирали устаревшие решения и добавляли новые функциональные возможности в систему.

DevOps занимался управлением инфраструктурой системы и улучшением процесса развертывания и обновления системы. Он работал над автоматизацией процесса развертывания новых версий системы, чтобы процесс был более эффективным и экономически целесообразным, давая возможность обновлять систему по мере необходимости. Благодаря его действиям, мы значительно улучшили производительность процесса развертывания и обновления системы.

Что получили?

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

Проект статистика https://statistics.securelist.com/ru

С какой задачей обратился к нам клиент?

Нужно было убрать границы стран и регионов с карты мира, на которой отображаются статистические данные с информацией о киберугрозах.

Данные отображаются по странам и регионам и надо сохранить такую возможность просмотра. Ранее полностью все государство отмечалось цветом и устанавливался коэффициент данных, к примеру уровень угрозы в процентах. Карта отображается с использованием библиотеки Amcharts.

Как мы решили данную задачу?

Для решения поставленной задачи мы привлекли команду из frontend и backend разработчиков, а также аналитика. Наша команда совместно проработала несколько идей, чтобы найти оптимальное решение для данного вопроса.

Итоговая идея состояла в том, что текущая карта была заменена на карту Мира, которая не имеет границ совсем. Вместо этого мы добавили кружки для столиц и стран, которые были помечены соответствующим цветом уровня угрозы и подписаны названием каждого государства. Также добавили кластеризацию, при первом отображении на карте видно только названия континентов, при приближении уже отображаются названия государств с точками по цвету указывающие на уровень угрозы. При наведении на каждую точку можно увидеть не только название государства, но и и рейтинг и уровень угрозы. По итогу мы смогли предоставить нашему клиенту качественный результат, который удовлетворил его потребности.

Ещё одна задача от заказчика была связана с поддержкой проекта, который был разработан чужой предыдущей командой. В процессе работы были определены следующие цели и задачи.

Цели проекта:
  1. Избавиться от симлинков, используемых для деплоя проекта.
  2. Перенести административный интерфейс с поддомена, учитывая возможные проблемы с одноименными куками.
  3. Избавиться от поддомена «storage» и перенести файлы пользователей с локального диска на S3. При этом доступ к личным файлам должен осуществляться с проверкой прав доступа, а публичные данные должны отдаваться без дополнительных проверок.
  4. Обновить Yii до самой свежей стабильной версии вместе с зависимостями:
    • Расширение Yii 2 для работы с базой данных MySQL.
    • Библиотека для валидации данных.
    • Расширение Yii 2 для работы с Redis.
    • Пакет для работы с очередями задач.
    • Пакет для генерации фейковых данных.
  5. Интегрировать дополнительную функциональность кастомных ролей, которые назначаются через административный интерфейс, в стандартный функционал ролей Yii.
  6. Интеграция с ExpertSender:
    • Добавить чекбокс «Согласие на получение маркетинговых рассылок» на странице «Мой профиль».
    • Для каждого подтвердившего свой email пользователя в базе данных добавить признак согласия на подобную рассылку.
    • Рассылка писем будет осуществляться с использованием платформы ExpertSender. Необходимо настроить двусторонний обмен контактами (email, имя, фамилия) между рассыльщиком и БД проекта.
    • Все новые пользователи должны попадать в рассылку, а у всех, отписавшихся через email, должны пропадать галки согласия на получение подобных писем.
  7. На главном экране выводить зарегистрированным пользователям информацию не только из групп, на которые они подписаны, но и из всех групп с сортировкой по дате последней активности.

Когда проект был передан нам, он находился в плачевном состоянии. Мы предложили заказчику переписать проект с нуля, чтобы избавиться от проблем легаси кода. Для выполнения задачи была сформирована команда, и обязанности были распределены следующим образом:

  • Разработчик 1: отвечал за избавление от симлинков, перенос административного интерфейса с поддомена и решение проблем с одноименными куками.
  • Разработчик 2: занимался переносом файлов пользователей на S3 и настройкой проверки прав доступа к личным файлам.
  • Разработчик 3: отвечал за обновление Yii до последней стабильной версии, включая зависимости.
  • Разработчик 4: занимался интеграцией дополнительной функциональности кастомных ролей и настройкой рассылки с использованием ExpertSender.
  • Разработчик 5: отвечал за вывод информации на главном экране для зарегистрированных пользователей, с учетом сортировки по дате последней активности.

Для решения поставленных задач мы использовали стандартные инструменты разработки. В результате нашей работы мы смогли исправить часть багов и успешно внедрить большую часть функционала, которую требовал заказчик.

Ещё один кейс с данным клиентом — это «Kaspersky Privacy», который был подвергнут рефакторингу с целью восстановления портала. Задачи проекта включали обновление зависимых модулей и версий программного обеспечения, улучшение и расширение функционала и интерфейсов, исправление ошибок и настройку прав доступа.

Основные цели проекта заключались в восстановлении работы портала, а также переносе медиаконтента пользователей в облачное хранилище S3, интеграции с ExpertSender и докеризации проекта. Другие задачи включали удаление неиспользуемого функционала, настройку RBAC, исправление чата, реализацию приватных вложений через S3 в чатах, разделение сессий между инстансами, импорт изображений и видео по ссылкам для постов, обратимое сжатие и изменение размера изображений, реализацию раздельных RSS-каналов, импорт данных из сторонних RSS-каналов, управление RSS-каналами в админке, перенос проекта на новый сервер, создание раздела с активностью пользователя в админке, рассылку для всех пользователей для подтверждения верификации и добавление изображений к товарам в магазине.

Ранее множество функций не работали или работали некорректно из-за устаревших версий ПО и модулей, проблем с интерфейсом, отсутствия подготовки проекта для локального развертывания, отсутствия документации, а также из-за большого количества ошибок и неработающего функционала.

Наша команда проекта состояла из менеджера проектов, frontend и backend разработчика, аналитика, DevOps, а также дизайнера. Обязанности были распределены среди команды в соответствии с их навыками и ролями.

Ожидалось возникновение различных трудностей, и некоторые из них действительно произошли. Трудности возникли в связи с ограниченным доступом, синхронизацией баз данных и переездом на новый сервер.
Для выполнения проекта мы использовали стандартные инструменты, включая Git, GitLab, PhpStorm, Docker, LEPP и VPN.