Top Banner
Я.Субботник, Москва, 28 июля 2012 года Владимир Русинов, менеджер проектов Яндекс.Диск: Архитектура, синхронизация и многое другое Алексей Капранов, менеджер проектов
42

Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

Jun 16, 2015

Download

Technology

Yandex

Доклад о том, как решалась задача надёжного хранения файлов и данных миллионов пользователей. Рассказ про развитие архитектуры кластера Диска: от первого черновика к реальности
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

Я.Субботник,  Москва,  28  июля  2012  года

Владимир  Русинов,  менеджер  проектов

Яндекс.Диск:  Архитектура,  синхронизация  и  многое  другое

Алексей  Капранов,  менеджер  проектов

Page 2: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

У  пользователя  много  всего  в  Я

2

— Письма  в  Яндекс.Почте

— Фотки,  Видео,  Файлы  на  Народе

— Любые  залогиновые  данные    в  Сервисах

— Многое  другое:

Page 3: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

«Чемодан»  как  идея

3

Не  только  файлы!  

Все  пользовательские  данные  в  Яндексе  собраны  вместе.

Page 4: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

Задачи  для  «Чемодана»

4

— Хранить  любые  данные

— Синхронизировать  устройства  пользователя

— Работать  с  любыми  клиентами:  Win,  Mac,  iOS,  Android  и    т.д.

— Делать  все  автоматически

Page 5: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

Яндекс.Диск

5

Продукт  -­‐  про  файлы

Платформа  -­‐  для  всех

Page 6: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

Технические  требования

6

— От  10  000  000  пользователей  

— Миллиарды  папок  и  файлов

— Высокая  надежность

«Одно  ясно:  жрать  будет  много!»Кто-­‐то  из  разработчиков

Page 7: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

Черновик  рукописный

7

Page 8: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

Поехали!

8

Page 9: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

Как  Стартап

9

— Стремительный  сбор  команды

— Выбор  удобных  технологий  

— Изготовление  прототипов

— Тестирование

— Выбор  нужных  и  удачных  решений

Page 10: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

Разработка  в  разгаре

10

Page 11: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

Тестирование  прототипов

11

— Функциональное

— Автоматическое

— Нагрузочное

— Сотрудники  Яндекса

Page 12: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

Делаем  всё  сразу

12

— Обработка  новых  идей

— Подбор  продуктовых  решений

— Подбор  интерфейсных  решений

— Подбор  технических  решений

— Активная  разработка  

Page 13: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

Прототип  превратился  в  бету

13

Page 14: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

Ключевые  изменения

14

— Mulj-­‐master  База  Данных

— Компоненты  скачки  и  загрузки  файлов

— Общее  решение  по  хранению  данных

— API  -­‐  WebDAV

— XMPP  Push-­‐нотификации

— Готовность  к  нагрузкам  

— Отказоустойчивость

Page 15: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

Запуск

15

— Люди  лучше  роботов!  

— 5  апреля  2012  г.  запустили  «бету  по  инвайтам»

— За  месяц  пришло  более  150  000  человек

— Увеличили  производительность  бекенда  в  50  раз

— Спланировали  полный  запуск  сервиса

— Начали  проектировать  другие  облачные  сервисы

Page 16: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

Почему  не  сразу  все  запланировали?

16

Все  быстро  меняется

Все  быстро  устаревает

«Нужно  делать  то,  что  нужно  сейчас,  а  то,  что  не  нужно,  делать  не  нужно»

КО

Page 17: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

API  Яндекс.Диска

17

Page 18: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

API

18

— WebDAV

— XMPP  Push-­‐Нотификации

— Key/Value  хранилище  (в  разработке)

— Данные  на  Сервисах  Яндекса  (в  разработке)

— И  это  далеко  не  всё!  

Page 19: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

Клиент  Яндекс.Диска  для  Линукса  

19

Пример использования API

Page 20: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

Есть  два  способа  интеграции  в  ОС:

20

1.  Монтирование

2.  Синхронизация

Page 21: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

Отличие  в  режиме  работы  с  сетью

21

Page 22: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

22

1.  WebDAV

2.  Клиентские  приложения

Наша  реализация:

Page 23: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

Для  Линукса  нет  официального  приложения  Яндекс.Диска

23

Page 24: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

Я  решил  тряхнуть  стариной

24

Page 25: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

Результаты

25

— h�p://kapranoff.ru/disk

— h�ps://github.com/kappa/yadisk-­‐sync

Page 26: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

26

Page 27: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

~/YandexDisk

27

Page 28: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

Очень  простойкод-­‐обвязка  на  Перле

28

Page 29: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

«script-­‐quality»,  но  не  линейный,  а  событийный

29

Page 30: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

Как  работает

30

1.  Монтирует  WebDAV  в  ~/.yadisk-­‐davfs

2.  Запускает  unison  на  каждое  изменение

3.  Profit!

Page 31: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

31

Page 32: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

32

~/YandexDisk  <=>  ~/.yadisk-­‐davfs

Page 33: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

33

AnyEvent::Inotify::SimpleAnyEvent::XMPP

Источники  событий  

Page 34: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

34

Лучшее применение для Перла :)

Page 35: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

35

1.  ~130  строк  кода

2.  Тянет  с  собой  половину  CPAN

3.  Писалось  с  любовью  и  удовольствием!

Почему  Перл:

Page 36: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

36

1.  ~130  строк  кода

2.  Тянет  с  собой  половину  CPAN

3.  Писалось  с  любовью  и  удовольствием!

4.  Никогда  не  попадет  в  producjon  :)

Почему  Перл:

Page 37: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

37

Локальные  изменения:

Page 38: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

38

Удаленные  изменения:

Page 39: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

39

Жду  pull-­‐реквестов

Page 40: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

40

Яндекс.Диск  Push  API  не  пропустите  :)

Page 41: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

41

Page 42: Владимир Русинов, Алексей Капранов "Яндекс.Диск: архитектура, синхронизация и многое другое"

rusinov@yandex-­‐team.ruВладимир  Русинов

Алексей  Капрановkapp@yandex-­‐team.ru