Развитие и поддержка MVP видеоплатформы
- PM
- Analytics
- Mobile
- TechSupport
- SwiftUI
- MVVM
- State-Machine
- Async/Await
- UIKit
- AVFoundation
- Git
- Agile
- Kotlin
- MVI
- Orbit
- Jetpack Compose
- RxJava 2
- Coroutines
- Clean Architecture
- JNI
- LiveData
- Dagger2 API
- Room
- Okhttp
- Unit tests
Индустрия
Развлечения и медиа
У вас есть задача?
Давайте обсудим?
О клиенте
Бизнес занимается разработкой собственной цифровой экосистемы и создает финтех-решения для B2B- и B2C- клиентов на базе облачных технологий, предиктивной аналитики и интернета вещей. Также компания предлагает аудитории различные медиа-продукты: онлайн-кинотеатр, сервис цифровых книг, музыки, платформу для планирования путешествий, бронирования отелей и билетов и др.
О проекте
Продуктовая ИТ-компания развивает сервис для публикации и просмотра видео. Площадка имеет систему монетизации контента, благодаря которой авторы зарабатывают с помощью донатов. Завершив разработку MVP видеоплатформы, бизнесу требовалось оперативно привлечь аудиторию: блогеров и зрителей. Для этого было необходимо расширить функционал продукта, чтобы предложить пользователям больше возможностей.
Описание задачи
Клиент сформировал основной запрос — в кратчайшие сроки внедрить инструменты для монетизации digital-материалов. Помимо разработки новых современных опций команде RedLab требовалось:
- Доработать корневую фичу: анализ архитектурных решений и исправление «узких мест».
- Адаптировать функционал под различные типы устройств: корректная работы программы в веб-версии и на мобильных устройствах.
- Обеспечить бесперебойную работу платформы: масштабирование ИТ-инфраструктуры под растущий трафик и нагрузку.
Реализация
В ходе реализации проекта работы велись специалистами RedLab по нескольким направлениям.
- Реализовали архитектурный подход Unidirectional Data Flow, с помощью которого обновили функционал монетизации видеоконтента и переписали основной экран приложения. Технология улучшила производительность ИТ-продукта и сэкономила ресурсы на поддержку легаси.
- Перешли на фреймворк SwiftUI, что позволило упростить создание пользовательских интерфейсов, быстрее разрабатывать прототипы и писать меньше строк кода.
- Использовали синтаксис Async/await, чтобы оптимизировать работу с сетью и другими асинхронными операциями, а также повысить производительность приложения.
- Применили нативные реактивные подходы в процессе мобильной разработки, благодаря чему стали эффективно управлять состоянием программы.
- Постепенно делили проект на модули. Микросервисная методология помогла разным командам разработки работать независимо и эффективно.
- Создали различные template и документы с пояснениями и обсуждением различных задач по улучшению общей экосистемы проекта.
- Создали архитектуру всего приложения и отдельных модулей на базе MVI с применением библиотеки Orbit, а внедрение зависимостей внутри модулей осуществили благодаря Dagger 2. Удалось улучшить структурированность кода.
- Настроили GitLab-CI flow, позволяющий автоматически строить сборки проекта в трех режимах: Debug (для develop branch), Beta (для системного тестирования) и Release (для публикации в магазинах приложений).
- Выполнили построение компонентов в системе таким образом, что оно происходит, если код прошел review и были успешно выполнены все Unit-тесты.
- Реализовали навигацию между экранами приложения с помощью Navigation Architecture Component вместо ранее используемой библиотеки Cicerone. Внедренная технология предлагает более обширную документацию и улучшенную тестируемость.
- Разработали сложную «выпрыгивающую» анимацию кнопок для UI-интерфейса, которая работает как для экранов, выполненных с помощью Jetpack Compose, так и для экранов, реализованных через XML layout.
- Создали набор дополнительных экранов, позволяющих пользователю найти блогеров и видеоклипы по заданным критериям и добавить ссылки на контент в свои ролики.
Также клиенту требовалось провести системный анализ в сфере разработки маркетинговых инструментов рассылки уведомлений, сбора и обработки статистики:
- Согласовали ТЗ с заказчиком, архитектором и другими участниками команды, чтобы каждый специалист получал актуальные и единые требования к будущему продукту.
- Подготовили детальные технические задания на разработку. Благодаря четкому описанию требований, клиент смог ощутить пользу от новой фичи быстрее из-за ее оперативной разработки.
- Помогли спроектировать высоконагруженную микросервисную архитектуру, которая помогла программистам убедиться в совместимости и согласованности компонентов.