15
Бекенд нового мобильного приложения Яндекс.Почты Дмитрий Александров, разработчик Я.Субботник, Нижний Новгород, 13.12.14

Мобильная Яндекс.Почта — Дмитрий Александров

  • Upload
    yandex

  • View
    496

  • Download
    0

Embed Size (px)

DESCRIPTION

Как сделать оптимальное связующее ПО, когда бэкенд старый, а приложение новое? Когда мы задумывали последнюю версию мобильной Почты, то сразу решили сделать новое API, которое будет адаптировано под специфику мобильного клиента. Скорость, оптимизация трафика, комбинированные вызовы, ревизии контейнеров, дайджесты блоков данных и прочие tips & tricks — всё это в моем докладе на Я.Субботнике.

Citation preview

Page 1: Мобильная Яндекс.Почта — Дмитрий Александров

Бекенд нового мобильного приложения Яндекс.Почты

Дмитрий Александров, разработчик Я.Субботник, Нижний Новгород, 13.12.14

Page 2: Мобильная Яндекс.Почта — Дмитрий Александров

27млн активных пользователей по TNS

48% людей имеют Яндекс.Почту (РФ)

50 человек работают над сервисом

15млн писем отправляется в день

100млн писем получают в день

1.5млн

установок Android-приложения

2

Что такое Яндекс.Почта?

Page 3: Мобильная Яндекс.Почта — Дмитрий Александров

Старое приложение

app

- (xmpp)

- server

- (http)

- api

- (xml)

- backend

3

Page 4: Мобильная Яндекс.Почта — Дмитрий Александров

Новое приложение

app -

(http)

- api

- (js)

- backend

nginx + baida + tracemonkey + wmi

4

Page 5: Мобильная Яндекс.Почта — Дмитрий Александров

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

Page 6: Мобильная Яндекс.Почта — Дмитрий Александров

Отдельное.

- Изолированность - Гибкость

6

Общее или отдельное API?

Page 7: Мобильная Яндекс.Почта — Дмитрий Александров

json

gzip

spdy (bit.ly/nn_spdy)

7

Как ускорить транспорт?

Page 8: Мобильная Яндекс.Почта — Дмитрий Александров

md5-дайджесты чанков

8

Как минимизировать данные?

0

200

400

600

md5

lcn

Page 9: Мобильная Яндекс.Почта — Дмитрий Александров

lcn-ревизии контейнеров

9

Можно ли делать меньше запросов?

список папок

ящик

папка1 папка2

список тредов список тредов

тред1 тред2 тред3 тред4

список писемсписок писем список писем

список писем

письма письма письма письма письма

Page 10: Мобильная Яндекс.Почта — Дмитрий Александров

Комбинирование вызовов

- агрегация методов - мультизапросы {"requests":[

{"id" : "1", "first" : 0, "last" : 200, "param" : "value"},

{"id" : "2", "first" : 200, "last" : 400, "param" : "value"}

]}

10

А еще меньше?

Page 11: Мобильная Яндекс.Почта — Дмитрий Александров

Инкапсуляция

Единая точка входа

11

Как работать с другими сервисами?

приложение

апи

бекенд2 сервис1 сервис2

бекенд

Page 12: Мобильная Яндекс.Почта — Дмитрий Александров

Версионирование интерфейса

/api/v2/method

12

Как вносить несовместимые изменения?

Page 13: Мобильная Яндекс.Почта — Дмитрий Александров

Да, есть.

- долгий первый старт - тяжелая пересинхронизация - большая и неравномерная нагрузка

13

Есть ли специфика у оффлайна?

Page 14: Мобильная Яндекс.Почта — Дмитрий Александров

Профиль нагрузки Масштабирование

14

Как тестировать нагрузочно?

Page 15: Мобильная Яндекс.Почта — Дмитрий Александров

[email protected] http://company.yandex.ru/contacts/novgorod/

Спасибо за внимание