Introduction
00:00:00В этом видео Адам и ведущий представляются друг другу. Адам работает над облачной инженерией и серверными системами в Oracle, но вскоре перейдет в Google. Они с нетерпением ждут возможности приступить к разработке практической системы.
Question
00:00:37В этой главе интервьюер спрашивает о разработке TikTok. Собеседник упоминает, что они никогда раньше не использовали TikTok, и предлагает начать с идеи.
Clarifying questions
00:00:56- TikTok - это мобильное приложение для обмена видео между пользователями. - Пользователи могут загружать видео и просматривать ленту видеороликов, прокручивая их по одному за раз. - Пользователи могут подписываться на других пользователей, чтобы увидеть их опубликованные видео. - Поддерживаются такие действия, как добавление в избранное и комментирование видео.
Answer
00:01:59- TikTok - это мобильное приложение, которое фокусируется на внутренней инфраструктуре. - Часть мобильного приложения подробно обсуждаться не будет. - Серверная система TikTok богата функциями, и ее стоит изучить.
Requirements
00:02:25Загружать видео Первое функциональное требование - разрешить пользователям загружать видео со своих мобильных устройств. Загружаемые видео должны быть ограничены по времени, аналогично 15-секундному лимиту Instagram. Пользователи также могут добавлять текстовые данные или подписи к видео.
Просмотр ленты Функция "Просмотр ленты" включает в себя агрегирование видео от людей, на которых подписан пользователь, и, возможно, включение рекомендуемых видео на основе специального алгоритма. Кроме того, пользователи должны иметь возможность комментировать конкретных создателей и ставить им лайки / подписываться на них.
Scale
00:08:06"Масштаб": Система нацелена на поддержку миллиона активных пользователей в день. По оценкам, объем видео в формате h.264 составляет около пяти мегабайт в минуту, что составляет примерно 10 мегабайт в день на одного пользователя. Объем пользовательских метаданных минимален и составляет около 1 килобайта на пользователя в день.
Design
00:09:51Загрузка видео Первая глава посвящена процессу загрузки видео. В нем обсуждается конечная точка API для загрузки видео и объясняется структура пользовательского объекта, включая уникальный идентификатор, ссылку на видео и метаданные. Видео хранится в хранилище больших двоичных объектов, таком как S3, с URL-адресом, указанным в таблице.
Просмотр ленты "Просмотр ленты" - еще одна важная функция, обсуждаемая в этой главе. Это включает в себя выполнение запросов GET для загрузки контента при открытии приложения. Служба предварительного кэширования компилирует списки воспроизведения для пользователей на основе их UUID и сохраняет их в виде ссылок на объекты хранения больших двоичных объектов, чтобы пользователи могли быстро получить к ним доступ.
Избранные видео В этой главе рассказывается о добавлении видео в избранное или действиях пользователя в приложении.Конечная точка "Активность пользователя" обрабатывает такие действия, как подписывание на другие учетные записи или лайк определенных видео.Действия пользователей хранятся в отдельных таблицах с использованием внешних ключей для установления связей между различными объектами.Эта информация поступает в алгоритм службы предварительного кэширования, который управляет данными о лайках и подписчиках.
Follow-up questions
00:25:31Масштабирование системы - Чтобы справиться с возросшим трафиком, следует учитывать регионы и геолокацию. - Использование CDN (сети доставки контента), такой как Akamai, может помочь локально кэшировать видео и снизить нагрузку на систему. - Средства балансировки нагрузки могут обеспечить высокую доступность, направляя трафик к нескольким службам. - Сегментирование базы данных позволяет распределять запросы на запись по нескольким базам данных в зависимости от региона или других критериев.
Вывод - Службе предварительного кэширования может потребоваться своя собственная отдельная структура базы данных. - В целом, были обсуждены все необходимые компоненты для разработки API, структуры базы данных и микросервисов.
Interview analysis
00:31:54Впечатляющее общение и знания Интервьюируемый проделал отличную работу по четкому изложению идей и продемонстрировал мастерство в различных темах. Они предоставляли дополнительные знания без каких-либо подсказок, демонстрируя свой опыт. Хотя обсуждение было сжатым, выяснилось, что они могли бы углубиться в каждую тему.
Задача "Создать что-то новое" Разработка чего-то незнакомого может быть интересной, но сложной задачей. Опрошенный должен был сделать предположения, основанные на его понимании таких платформ, как Facebook и Instagram.
Положительный общий опыт Интервьюер счел, что беседа в целом прошла хорошо, и выразил благодарность Адаму за его проницательность.