Upload
yandex
View
496
Download
0
Embed Size (px)
DESCRIPTION
Как сделать оптимальное связующее ПО, когда бэкенд старый, а приложение новое? Когда мы задумывали последнюю версию мобильной Почты, то сразу решили сделать новое API, которое будет адаптировано под специфику мобильного клиента. Скорость, оптимизация трафика, комбинированные вызовы, ревизии контейнеров, дайджесты блоков данных и прочие tips & tricks — всё это в моем докладе на Я.Субботнике.
Citation preview
Бекенд нового мобильного приложения Яндекс.Почты
Дмитрий Александров, разработчик Я.Субботник, Нижний Новгород, 13.12.14
27млн активных пользователей по TNS
48% людей имеют Яндекс.Почту (РФ)
50 человек работают над сервисом
15млн писем отправляется в день
100млн писем получают в день
1.5млн
установок Android-приложения
2
Что такое Яндекс.Почта?
Старое приложение
app
- (xmpp)
- server
- (http)
- api
- (xml)
- backend
3
Новое приложение
app -
(http)
- api
- (js)
- backend
nginx + baida + tracemonkey + wmi
4
oracle (bit.ly/nn_ora)
postgreSQL (bit.ly/nn_pg)
mongoDB (bit.ly/nn_mg)
hbase (bit.ly/nn_hb)
zookeeper (bit.ly/nn_zk)
mulca
5
Backend
Отдельное.
- Изолированность - Гибкость
6
Общее или отдельное API?
json
gzip
spdy (bit.ly/nn_spdy)
7
Как ускорить транспорт?
md5-дайджесты чанков
8
Как минимизировать данные?
0
200
400
600
md5
lcn
lcn-ревизии контейнеров
9
Можно ли делать меньше запросов?
список папок
ящик
папка1 папка2
список тредов список тредов
тред1 тред2 тред3 тред4
список писемсписок писем список писем
список писем
письма письма письма письма письма
Комбинирование вызовов
- агрегация методов - мультизапросы {"requests":[
{"id" : "1", "first" : 0, "last" : 200, "param" : "value"},
{"id" : "2", "first" : 200, "last" : 400, "param" : "value"}
]}
10
А еще меньше?
Инкапсуляция
Единая точка входа
11
Как работать с другими сервисами?
приложение
апи
бекенд2 сервис1 сервис2
бекенд
Версионирование интерфейса
/api/v2/method
12
Как вносить несовместимые изменения?
Да, есть.
- долгий первый старт - тяжелая пересинхронизация - большая и неравномерная нагрузка
13
Есть ли специфика у оффлайна?
Профиль нагрузки Масштабирование
14
Как тестировать нагрузочно?
[email protected] http://company.yandex.ru/contacts/novgorod/
Спасибо за внимание