S7 Airlines ежегодно перевозит около 13 миллионов пассажиров. В холдинге работает более 11 тысяч сотрудников, а внутренняя ИТ-экосистема включает сотни сервисов для разных подразделений. Мы разработали корпоративный портал, который собрал эти сервисы в общем рабочем пространстве. В этом кейсе рассказываем о проекте со стороны бизнеса и технологий: как учли разные сценарии сотрудников, интегрировали портал с существующими системами и подготовили его к дальнейшему развитию. А как эти потребности учтены в дизайне портала читайте в другом нашем материале.
Задача
До запуска портала внутренние сервисы S7 были распределены между множеством информационных систем. Сотрудникам приходилось хранить ссылки в закладках, разбираться в навигации разных систем и в некоторых случаях повторно авторизоваться при переходе между ними.
При этом набор нужных инструментов зависит от роли сотрудника. Летный состав, бортпроводники, инженеры, ИТ-специалисты, бухгалтеры и юристы работают с разными сервисами и данными, поэтому доступ к ним должен разграничиваться. Для сотрудников вне офиса также был важен полноценный мобильный доступ с личных устройств и корпоративных планшетов.
Отдельно нужно было решить задачи внутренних коммуникаций и защиты чувствительных данных.
Собрали сервисы вокруг задач сотрудников
Все корпоративные сервисы собрали на одном портале, при этом их набор зависит от сегмента, либо роли сотрудника. Права доступа к самим сервисам определяются во внутренней мастер-системе S7, поэтому у разных пользователей перечень доступных инструментов может отличаться.
Самые актуальные задачи и события выводятся в отдельные виджеты в разделе «Актуальное для вас». Например, в «Журнале ознакомлений» можно увидеть корпоративные документы, которые нужно прочитать или подписать, в «Командировках» - информацию о рабочих поездках. Через «Мои документы» сотрудник может заказать справку 2-НДФЛ, справку с места работы или копию трудовой книжки, а в «Активных запросах» - проверить статус заказанных документов. «Корпоративный тариф» показывает информацию о предстоящих перелетах по специальным тарифам компании.
Доступ к виджетам настраивается уже внутри самого портала и также зависит от сегмента сотрудника. Например, архив финансовых документов, журнал ознакомлений и командировки доступны всем сегментам. А инструмент для планирования и оценки задач не показывается бортпроводникам и летному составу, которым этот сервис не нужен для работы.
Сотрудник может добавлять нужные сервисы в избранное и менять их порядок. Остальные можно найти через поиск. Для связанных систем реализовали SSO: достаточно один раз авторизоваться в корпоративном контуре, повторно вводить учетные данные при переходах не нужно.
Для сотрудников, которые работают вне офиса, сделали нативное мобильное приложение. Оно дает летному составу, бортпроводникам и специалистам технического обслуживания доступ к ресурсам портала со смартфонов и планшетов. Веб-версия портала также адаптирована под мобильные устройства.
Интегрировали портал с ИТ-ландшафтом
S7 Портал связан с другими корпоративными системами холдинга через несколько механизмов интеграции. Для синхронного взаимодействия со смежными системами используются REST API, для асинхронного обмена данными - Kafka. Уведомления вынесены в отдельный центр, который отвечает за обработку, маршрутизацию и отправку push- и email-сообщений.
Как устроен портал
Портал собран из независимых микросервисов на Java и Spring Boot. В стеке - PostgreSQL, Redis и RabbitMQ. Сервисы развернуты в Kubernetes с контурами dev, uat и prod: так можно масштабировать отдельные модули и обновлять их без остановки всей платформы.
На фронтенде используется Angular, под который адаптировали UI Kit S7. Для управления функциональностью внедрили Feature Flags: отдельные возможности можно включать на уровне всей платформы или конкретных виджетов и открывать для определенных групп пользователей.
Также протестировали микрофронтенды на Web Components. Этот подход позволяет собирать портал из независимых компонентов, которые разные команды могут разрабатывать и обновлять отдельно друг от друга.
Часть контента можно обновлять без разработчиков
Портал используется в том числе для внутренних коммуникаций. HR и маркетинг могут самостоятельно публиковать информационные баннеры, запускать онбординг и проводить опросы для разных групп сотрудников.
Для управления информационными баннерами и сценариями онбординга используется CMS Directus, через нее же контролируются версии мобильного приложения. Интерактивные карты офисов можно создавать и редактировать во встроенном SVGedit. Для этих задач не нужно привлекать команду разработки.
Отдельно реализовали модуль для централизованного ведения и синхронизации оргструктуры холдинга и разграничения доступа к ней.
Учли требования к безопасности корпоративных сервисов
Для управления секретами и ключами используется HashiCorp Vault. В пайплайны разработки встроили GitLeaks для поиска паролей, API-ключей и токенов в исходном коде, Dependency Check для проверки сторонних библиотек на известные уязвимости и SonarQube для автоматизированного анализа кода. Для закрытых корпоративных виджетов предусмотрена дополнительная аутентификация по одноразовому PIN-коду. Если пользователь некоторое время не взаимодействует со страницей, чувствительные данные автоматически скрываются.
Отдельные требования действуют для мобильного приложения. На iOS используется проверка Jailbreak, а на Android - Root: так приложение выявляет устройства с измененными системными ограничениями. На Android также проверяются запуск в эмуляторе и debug-режиме и целостность подписи приложения, чтобы определить, не была ли установленная версия изменена. Для обеих платформ используется SSL Pinning: он позволяет проверить подлинность сервера и защищает соединение от перехвата. Чувствительные данные на устройстве хранятся в зашифрованном виде, а технические логи скрываются. В CI/CD встроены Dependency Check и MobSF: первый проверяет сторонние библиотеки на известные уязвимости, второй выполняет статический анализ мобильного приложения и помогает находить проблемы в коде и конфигурации.
Следим за состоянием системы и использованием портала
Для мониторинга настроили дашборды Grafana, где отслеживаются техническое состояние портала, нагрузка на микросервисы и ключевые бизнес-метрики системы. Логи со всех микросервисов собираются в Elastic, а сбои мобильного приложения - в Firebase.
Продуктовую аналитику собираем через self-hosted Matomo. Она позволяет отслеживать метрики по отдельным функциям портала, при этом данные хранятся на серверах холдинга.
За полгода MAU превысил 75%
От начала проектирования до полноценного запуска прошло чуть больше года. Через восемь месяцев портал вышел в опытную эксплуатацию, еще через два - в опытно-промышленную. Спустя следующие три месяца MVP запустили в прод и открыли всем сотрудникам холдинга.
Уже в первые полгода ежемесячная активная аудитория превысила 75% от общего штата. Ежедневная аудитория составляет от 900 до 3500 человек в зависимости от графика смен и производственных задач.
Что дальше
Портал продолжает развиваться сразу в нескольких направлениях.
Для мобильных приложений мы исследовали Kotlin Multiplatform. Тестирование подтвердило возможность переиспользовать общую бизнес-логику на Android и iOS при сохранении нативного интерфейса для каждой платформы.
Еще одно направление - ML-функции. Уже реализован прототип автоматической обработки фотографий сотрудников: система проверяет снимок, заменяет фон на корпоративный и сохраняет обработанное изображение в профиль. Также прототип предусматривает изменение одежды на фотографии под корпоративный стиль и создание снимка через веб-камеру.
Также прорабатываются новые сценарии внутренних обращений. Среди них диалоговый интерфейс для отпусков, командировок, заявок экипажа, запросов документов, служебных записок и других процессов. Предусмотрено разделение на операционные и приватные обращения.
Еще одно направление - корпоративный GPT-чат, который должен объединить вопросы сотрудников в одном интерфейсе. В нем планируются контекстный поиск и сохранение истории диалогов, запросов и файлов.