2017-04-08 01 Евгений Оськин. video streaming: от идеи до...

75
Video Streaming: от идеи до нагруженной системы Оськин Евгений developer

Upload: -

Post on 12-Apr-2017

34 views

Category:

Education


2 download

TRANSCRIPT

Page 1: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Video Streaming:от идеи до нагруженной

системыОськин Евгений

developer

Page 2: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы
Page 3: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

С чего мы начинали

Page 4: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

С чего мы начинали

Page 5: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

С чего мы начинали

Page 6: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

С чего мы начинали

Page 7: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Требования

Page 8: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Требования● Live видео с низкой задержкой

Page 9: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Требования● Live видео с низкой задержкой● В штатном режиме 100 параллельных

стримов

Page 10: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Требования● Live видео с низкой задержкой● В штатном режиме 100 параллельных

стримов● Горизонтальное масштабирование

Page 11: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Требования● Live видео с низкой задержкой● В штатном режиме 100 параллельных

стримов● Горизонтальное масштабирование● Основная платформа – iOS

Page 12: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Что мы ожидали

Page 13: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Что мы ожидали● Мы будем использовать 3rd party сервис

для стриминга

Page 14: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Что мы ожидали● Мы будем использовать 3rd party сервис

для стриминга● Работать с HLS будет легко

Page 15: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Что мы ожидали● Мы будем использовать 3rd party сервис

для стриминга● Работать с HLS будет легко● На backend нужно будет реализовать REST

API и клиент для 3rd party сервиса

Page 16: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Какую боль мы испытали

Page 17: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Какую боль мы испытали● Отсутствует сервис, который нас

устраивает

Page 18: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Поиск сервисов● DaCast● Wowza Streaming Cloud● Zencoder● LiveStream.com

Page 19: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Поиск сервисов● DaCast – большая задержка● Wowza Streaming Cloud – большая

задержка● Zencoder – большая задержка● LiveStream.com – большая задержка

Page 20: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Какую боль мы испытали● Отсутствует сервис, который нас

устраивает● Live HLS

Page 21: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Какая проблема с Live HLS?

Page 22: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Какая проблема с Live HLS?● Адаптивный стриминг live видео

Page 23: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Какая проблема с Live HLS?● Адаптивный стриминг live видео● Стриминг видео с фиксированным bitrate

Page 24: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Что значит адаптивный?

Page 25: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Что значит адаптивный?

Page 26: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Что значит адаптивный?

Streaming service

HD

MD

LD

Page 27: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Какую боль мы испытали● Отсутствует сервис, который нас

устраивает● Live HLS● Отсутствует готовое руководство по

созданию платформы для стриминга

Page 28: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Решение

Page 29: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Решение

Сделать свою платформу для video streaming’а

Page 30: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Что если не HLS?

Page 31: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

● DASH – HTTP-based

Что если не HLS?

Page 32: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

● DASH – HTTP-based● RTMP, RTSP – Real Time Protocol

Что если не HLS?

Page 33: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

● DASH – HTTP-based● RTMP, RTSP – Real Time Protocol

Что если не HLS?

Page 34: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Servers for video streaming

Page 35: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

● Nginx-rtmp● SRS (Simple RTMP Server)● Wowza Streaming Engine

Servers for video streaming

Page 36: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

● Nginx-rtmp● SRS (Simple RTMP Server)● Wowza Streaming Engine

Servers for video streaming

Page 37: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Кодеки и протоколы

Page 38: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Кодеки и протоколыH.264,MPEG-4

Page 39: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Кодеки и протоколыH.264,MPEG-4

AAC,MP3

Page 40: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Кодеки и протоколыH.264,MPEG-4

AAC,MP3

FLV,MP4,AVI MPEG TS

Page 41: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Кодеки и протоколыH.264,MPEG-4

AAC,MP3

FLV,MP4,AVI MPEG TS

Page 42: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Кодеки и протоколыH.264,MPEG-4

AAC,MP3

FLV,MP4,AVI MPEG TS

Page 43: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Архитектура

Page 44: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Архитектура

Page 45: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Архитектура

Page 46: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Архитектура

Page 47: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Архитектура

Page 48: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Архитектура

Page 49: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Архитектура

Page 50: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Архитектура

Page 51: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Deployment

Page 52: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

● Docker у разработчика и на AWS

Deployment

Page 53: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

● Docker у разработчика и на AWS● Deploy в две команды

Deployment

Page 54: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

● Docker у разработчика и на AWS● Deploy в две команды● Запуск тестов в одну команду

Deployment

Page 55: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Flow разработки

Page 56: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

● Сложно воспроизводить bug’и руками

Flow разработки

Page 57: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

● Сложно воспроизводить bug’и руками● Сложно iOS разработчикам работать с

нестабильным backend’ом

Flow разработки

Page 58: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

● Сложно воспроизводить bug’и руками● Сложно iOS разработчикам работать с

нестабильным backend’ом● Страшно изменять архитектуру

Flow разработки

Page 59: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

BDD

Page 60: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

BDDFeature: Sending feedback after watching a stream.

Scenario: A user watches and shares the record.Given we have a Recorder userAnd we have a Viewer userWhen the Viewer asks the PublisherAnd the Recorder responds with a new streamAnd the Viewer gets “stream notification” and recordsThen the Recorder ends publishing in 25 secondsAnd the Viewer shares the streamAnd an Anonymous user opens the shared link and plays a video

Page 61: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

BDDFeature: Sending feedback after watching a stream.

Scenario: A user watches and shares the record.

Given we have a Recorder userAnd we have a Viewer userWhen the Viewer asks the RecorderAnd the Recorder responds with a new streamAnd the Viewer gets “stream notification” and plays the streamThen the Recorder ends publishing in 25 secondsAnd the Viewer shares the streamAnd an Anonymous user opens the shared link and plays a video

Page 62: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

BDDFeature: Sending feedback after watching a stream.

Scenario: A user watches and shares the record.Given we have a Recorder userAnd we have a Viewer user

When the Viewer asks the RecorderAnd the Recorder responds with a new streamAnd the Viewer gets “stream notification” and

plays the streamThen the Recorder ends publishing in 25 secondsAnd the Viewer shares the streamAnd an Anonymous user opens the shared link and plays a video

Page 63: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

BDDFeature: Sending feedback after watching a stream.

Scenario: A user watches and shares the record.Given we have a Recorder userAnd we have a Viewer userWhen the Viewer asks the RecorderAnd the Recorder responds with a new streamAnd the Viewer gets “stream notification” and plays the stream

Then the Recorder ends publishing in 25 secondsAnd the Viewer shares the streamAnd an Anonymous user opens the shared link

and plays a video

Page 64: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

- А что если будет 1000 параллельных стримов?

Вопрос

Page 65: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

- А что если будет 1000 параллельных стримов?

- Не понятно. Надо проверить.

Вопрос

Page 66: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Performance тесты

Page 67: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

● Locust

Performance тесты

Page 68: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

● Locust● Переиспользование кода от behaviour

тестов

Performance тесты

Page 69: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

● Locust● Переиспользование кода от behaviour

тестов● Специфика сбора метрик

Performance тесты

Page 70: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

● Locust● Переиспользование кода от behaviour

тестов● Специфика сбора метрик● Отдельное окружение

Performance тесты

Page 71: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Итог

Page 72: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Итог● Законченный продукт

Page 73: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Итог● Законченный продукт● Архитектура, BDD и Docker – лучшие

друзья

Page 74: 2017-04-08 01 Евгений Оськин. Video streaming: от идеи до нагруженной системы

Итог● Законченный продукт● Архитектура, BDD и Docker – лучшие

друзья● Nginx-RTMP и FFmpeg Streaming Guide –

хорошие ресурсы для старта