Михаил Дементьев: «Инженерные решения влияют на метрики не меньше, чем маркетинг»
15.09.23, Пт, 08:52, Мск,
iOS-разработчик Михаил Дементьев рассказал, как архитектура видеоредактора влияет на производительность, масштабирование и устойчивость медиапродуктов VK — от Клипов до Одноклассников.
Мобильный видеоконтент — один из ключевых инструментов привлечения и удержания пользователей. По данным data.ai, на фото- и видеоредакторы приходится почти четверть всего времени, которое люди проводят в мобильных приложениях, — это вторая по популярности категория после соцсетей. Чтобы удерживать внимание аудитории, видеосервисы должны быть стабильными, гибкими и быстрыми. И здесь многое зависит от инженерных решений.
Но реализовать такую функциональность в iOS-среде — особенно при работе с видео — непросто. Основной фреймворк Apple для работы с медиа, AVFoundation, предоставляет мощные инструменты, однако разработчики сталкиваются с тем, что он не охватывает сложные пользовательские сценарии и требует глубокой доработки и собственных архитектурных решений. iOS-разработчик Михаил Дементьев создал архитектурные решения, которые, как он поделился, позволяют справиться с этими проблемами. Его подход к работе с AVFoundation лег в основу SDK, который уже используется в VK Клипах и будет также внедрен в VK Видео, VK Историии и Одноклассники. Решение глобальной задачи, которая, по словам эксперта, считалась практически непреодолимой, Михаил представил в этом году на конференции для мобильных разработчиков Mobius. После публикации видео доклада в соцсетях мы решили поговорить с Михаилом Дементьевым, техническим лидером в VK, о том, как устроена архитектура, на которую опираются миллионы пользователей, и почему подобные инженерные решения важны для бизнеса.
— Михаил, почему, на ваш взгляд, задачи, связанные с мобильным видеоредактированием, до сих пор требуют нестандартных решений, особенно в iOS?
Производительность мобильных устройств с годами значительно выросла, но когда речь заходит о работе с видео — особенно в реальном времени — выясняется, что многие вещи все еще не решаются «из коробки». В iOS особенно остро это ощущается: у AVFoundation огромный потенциал, но он работает скорее как набор инструментов для сборки, а не готовое решение. Чтобы сделать что-то по-настоящему удобное и стабильное, приходится разбираться в деталях, строить свою архитектуру, тестировать десятки нюансов поведения, и искать обходные пути, если официальной документации нет.Создатели ALT Linux – о сложной судьбе свободного ПО, роли Максута Шадаева и сделке с «Ростелекомом». Подкаст TAdviser
— На ИТ-конференции Mobius, на которой обсуждаются проблемы мобильной разработки, вы подняли тему, которой мало кто касался из-за ее сложности. А насколько сложной задача оказалась лично для вас и почему вы за нее взялись?
Это было осознанное решение — показать, что даже там, где кажется, что ничего нельзя сделать, всегда есть путь. AVFoundation — мощный, но мало документированный фреймворк, особенно когда речь идет о создании продвинутых инструментов редактирования видео с нуля. Я потратил недели на ресерч, ночи на эксперименты, и когда нашел решение, захотел поделиться им с сообществом. Это был тот редкий случай, когда техническая задача оказалась и инженерным вызовом, и интересным рассказом.
— Ваше выступление вызвало большой отклик в ИТ-сообществе, поскольку вы реализовали функциональность, которую AVFoundation «из коробки» не поддерживает. Ожидали ли вы такой реакции?
Тема была интересна, в первую очередь, мне самому, но оказалось, что она волнует многих. После доклада я получил много откликов — люди писали, что наконец поняли, как можно решать подобные задачи. Так что ответ: и да, и нет. Эта конференция собирает разработчиков, которым, как и мне, важны не просто фичи, а инженерный подход к их созданию. И для меня такая реакция коллег стала подтверждением, что мой путь — в системном решении сложных задач, даже если на них нет готовых ответов.
— У VK Клипов миллионная аудитория в России и СНГ.[1] Какие шаги критически важны в подобных проектах на старте, с чего начали вы?
С архитектуры. Если не выстроить архитектуру в начале, потом будет поздно. Поэтому я фокусировался на переиспользуемости компонентов, на том, чтобы можно было масштабировать редактор на разные сценарии, не переписывая код. Конечно, это означало, что мы сознательно потратили больше времени на старте, чтобы затем каждый следующий шаг был быстрее. Плюс — я много общался с дизайнерами и продактами, чтобы фичи были не просто «технически возможны», а действительно удобны.
— Вы выстроили надстройку над AVFoundation, которая легла в основу SDK — программного набора, упрощающего работу с видео в приложениях. Сейчас он готов к внедрению в другие продукты экосистемы VK. Что позволило сделать его универсальным и масштабируемым?
Мы проектировали SDK как отдельный модуль, независимый от основной логики приложений. По сути, это связующее звено, которое берет на себя всю работу с медиа — от записи на камеру до редактирования, транскодинга и публикации. Его можно встроить в любое приложение, не переписывая код заново. Мы сделали интерфейсы максимально прозрачными и изолировали зависимости, чтобы команды могли легко заменять или дополнять отдельные блоки.
Первоначально SDK разрабатывался для VK Клипов, но в итоге его начнут использовать и другие продукты — VK Видео, VK Истории, Одноклассники. Это позволит унифицировать подход к медиа во всей экосистеме, ускорить разработку, улучшить производительность и повысить отказоустойчивость. Командам больше не нужно вникать в сложный AVFoundation — они получат готовый и стабильный инструмент, с которым можно уверенно работать.
— Лояльность аудитории сервис повысил во многом и благодаря новым функциям, которые вы привнесли — аудиоэффекты, например. Как вы поделились, идея, которая повлияла на продуктовые метрики, вообще-то родилась неформально. Что помогло быстро довести ее до результата?
Да, идея появилась буквально на кухне. Мы с дизайнеркой придумали сделать голоса как у белки или как в соборе. Мне стало интересно, как это можно реализовать, и я просто сел и сделал прототип. Уже на следующий день мы поняли, что все работает даже лучше, чем ожидалось, и пошли дальше. Мне повезло с командой: у нас поощряется инициатива. Главное — не просто сделать, а встроить в процесс: протестировать, проанализировать, адаптировать под реальных пользователей. Инженерные решения влияют на метрики не меньше, чем маркетинг — просто это видно не сразу.
— Такая гибкость особенно важна, когда речь идет не о демо-сценариях, а о полноценной работе с пользовательским контентом. Как вы подходите к вопросу производительности в таких случаях?
Это про баланс. Работа с видео, особенно в режиме реального времени, — это сложная и ресурсоемкая задача. Нужно экономить ресурсы, не создавать лишних операций, использовать кэширование, заранее рассчитывать поведение. Иногда лучше пожертвовать анимацией, чтобы не пострадала плавность. Я всегда смотрю, что именно тормозит, и где это можно вынести за пределы главного потока. Часто важна даже не оптимизация, а правильная организация работы.
— А какие инженерные решения помогли вам добиться отказоустойчивости, высокой производительности и компактного размера приложения при работе с ресурсоемкими видео-задачами?
У нас в приоритете — чтобы даже сложные сценарии редактирования работали стабильно и не перегружали устройство. Видео — тяжелый контент, особенно если ты работаешь с несколькими дорожками или в реальном времени. Поэтому я много внимания уделяю не только обработке медиа, но и организации UI — чтобы интерфейс оставался отзывчивым, а размер приложения при этом не разрастался. Мы, например, упростили загрузку некоторых библиотек, ввели lazy loading, и это дало хороший прирост. Отказоустойчивость — вообще отдельная тема. Нужно уметь работать с большим количеством внутренних инструментов, чтобы держать ее на высоком уровне. И у меня это получилось.
— Как вы и ваша команда осваиваете AVFoundation, если официальной документации почти нет и поиск решений через интернет мало помогает?
Документации действительно мало. Поэтому приходится экспериментировать, смотреть, как ведет себя система, старый-добрый лог здесь прекрасно помогает. Я много делюсь внутри команды — и не боюсь показывать неудачные попытки. Мы вместе разбираем, почему не сработало. Такой подход дает уверенность: можно не знать, но можно разобраться.
— Сейчас вы архитектор сложных систем и ментор для новичков. Что стало поворотным моментом в вашем профессиональном росте?
Главное — не бояться ответственности. Я начинал джуном, но мне было важно понимать, как работает все, а не только мой участок. Я мог ночевать в офисе, просто потому что хотелось закончить новую и интересную задачу. Постепенно стал предлагать идеи, брать задачи целиком. А потом — начал помогать другим. Видеть, как человек вырастает рядом — это отдельное удовольствие.
— Вы уже упомянули, что продолжаете развивать редактор. Какие направления вам сейчас особенно интересны? Где, по-вашему, будет следующая точка роста?
Меня очень интересует тема автоматизации — как сделать так, чтобы часть редактирования происходила сама. Например, подрезка видео по смыслу, подбор музыки. Также интересно уменьшение размера приложений без потери качества и рост отказоустойчивости. В видео всегда будет много вызовов, и это круто: скучать точно не придется.
Автор: Дмитрий Архипов
