Мобильное приложение по продаже билетов для авиаперевозчика

Удобная покупка, самостоятельная регистрация на рейс и личный кабинет пользователя

Мы разработали мобильное приложение для продажи авиабилетов и дополнительных услуг одной из пяти крупнейших российских авиакомпаний.

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

Цель проекта

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

Ключевая особенность

Стандартная продажа билета — резервирование, оплата, корректировка, регистрация на рейс — имеет сложную бизнес-логику и превращается в запутанный клубок многоходовых сценариев, если принять в расчет сегментированность по категориям пассажиров и типам услуг, а также ограничения государственных регуляторов. На разных этапах процесса покупки может потребоваться корректировка параметров услуг, возникнуть ошибка при взаимодействии с одним из сторонних сервисов (платежный шлюз, система бронирования, система программы лояльности, и пр.). Такая ошибка должна быть корректно обработана, а приложение должно предоставить пользователю варианты действий. Поэтому простая задача по добавлению кнопки в интерфейс приложения зачастую требует привлечения аналитиков, реализации дополнительной интеграции со сторонними сервисами, а иногда и согласования их доработки.

Технологии реализации

Android - Kotlin, iOS - Swift

Фронт мобильное приложение

Java + Spring + React

Бэкенд

CI: Linux, Docker, Nginx, PostgreSQL, Tomcat, Gitlab Ci

Инфраструктура

rest json, soap, telnet

Протоколы интеграции

AppStore, GooglePlay, GalaxyStore, GetApps, Huawei AppGallery, NashStore

Маркетплэйсы

Firebase, Google Analytics

Аналитика

Стандартный функционал

Поиск рейсов и выбор подходящего тарифа

Удобный интерфейс для поиска рейсов, сравнение опций при выборе тарифа, выделение предложений с лучшей ценой и скидками.

Выбор дополнительных услуг

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

Отслеживание выгодных предложения и акций

Мы отправляем пользователям уведомления об акциях и закладываем в интерфейсе приложения место под рекламные баннеры авиакомпании. Гибкая настройка предложений в административной панели даёт пользователям возможность выгодно спланировать путешествие, а авиакомпании – продать максимальное количество билетов.

Онлайн регистрация на рейс

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

Онлайн-табло

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

Хранение посадочных талонов

Приложение обеспечивает удобный доступ к талону даже в оффлайн режиме.

Логирование

Мы применяем систему логирования для отслеживания корректности выполнения операций. Такая система позволяет команде разработки быстро локализовать проблемы в работе приложения.

Интеграция с процессинговым центром

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

Административная панель серверной части системы

Управлять настройками системы, отслеживать события и получать статистику позволяет специальный веб-модуль администратора.

Специальный функционал

Развитый функционал личного кабинета пользователя

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

Интеграция с сервисами партнеров авиакомпании

Информация, отображаемая в мобильном приложении, формируется в том числе через запросы к сервисам партнеров.

Интеграция с сервисом отображения погоды на карте

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

Сервис поддержки пассажиров

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

Обработка ситуаций при отключенных сервисах партнеров

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

Проектные практики

Работа над требованиями с несколькими подрядчиками

От заказчика к нам поступает верхнеуровневая задача — например, реализовать возможность возврата билетов. Ее реализация требует не только анализа поведения пользователей системы, но и согласования с командами других подрядчиков клиента (платежный шлюз, система бронирования, CRM). Иногда предоставленная документация API сторонних сервисов оказывается неверна, и тогда приходится заново продумывать процесс непосредственно в ходе реализации проекта.

Быстрая адаптация к изменяющимся внешним факторам

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

Еще один пример связан с запретом приложения компании в Apple App Store. В худшем случае компания потеряла бы всю пользовательскую базу этого канала. Поэтому мы разработали альтернативное мобильное приложение, наладили скачивание и обновление этого приложения через официальный сайт компании и альтернативные сторы. При этом нам удалось реализовать поддержку ранее установленных версий приложения и за счет этого дополнительно сохранить около 20-30% пользовательской базы.

Поддержка инфраструктуры и обновлений без простоя

Мы перевели инфраструктуру на современные варианты развертывания с помощью конвейера CI/CD, чтобы иметь возможность обновлять сервера без перехода в режим техобслуживания.

Выделенная поддержка пользователей

На проекте есть выделенный инженер поддержки, который ведет мониторинг системы и работает с обращениями клиентов. Мы автоматизировали работу с обращениями, чтобы обратная связь от пользователей попадала напрямую в Jira проекта.

Инициатива по развитию проекта

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

Долгосрочное развитие проекта

Мы постоянно возвращаемся к обновлению архитектуры, технологического стека и документации, потому что те изменения и дополнения, которые накапливаются по мере развития проекта, делают его все более сложным с точки зрения поддержки. Если этот процесс оставить без контроля, в будущем это может негативно сказаться на возможности развития системы и ее отказоустойчивости. Это явление называется технический долг. Учитывая долгосрочные планы клиента, мы следим за регулярным обнулением этого долга.

Процессы на службе у качества

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

Эксплуатация в цифрах