SlideShare a Scribd company logo
1 of 101
Архитектура хранения и отдачи
фотографий в Badoo
Артем Денисов, Badoo
330 млн. пользователей
3 Pb фотографий
3,5 млн. новых фотографий в день
80 тыс. запросов в секунду за фото
Тривиальный пример
Тривиальный пример
photos1
photos2
photosN
Тривиальный пример
place_id
place_id: 1..5
place_id: 6..11
place_id: m..n
photos1
photos2
photosN
Тривиальный пример: проблемы
Тривиальный пример: проблемы
! Ограниченная вместимость
Тривиальный пример: проблемы
! Ограниченная вместимость
! Нетипичная конфигурация машин
Тривиальный пример: проблемы
! Ограниченная вместимость
! Нетипичная конфигурация машин
! Цена
Тривиальный пример: проблемы
Используем систему хранения данных
bphotos1
bphotos2
bphotosN
Storage Area Network
(SAN)
! Меньше $/Gb
bphotos1
bphotos2
bphotosN
Storage Area Network
(SAN)
Используем систему хранения данных
! Меньше $/Gb
! Больше плотность размещения
bphotos2
bphotosN
Storage Area Network
(SAN)
bphotos1
Используем систему хранения данных
! Меньше $/Gb
! Больше плотность размещения
! Быстрая деградация чтения (>500 rps per host)
bphotos2
bphotosN
Storage Area Network
(SAN)
bphotos1
Используем систему хранения данных
Характер нагрузки
Чтение преобладает над записью:
7*109 reads / 3.5*106 writes per day
Характер нагрузки
Горячий dataset небольшой
Чтение преобладает над записью:
7*109 reads / 3.5*106 writes per day
Характер нагрузки
Горячий dataset небольшой
Кажется, нам нужен кэш с LRU
Чтение преобладает над записью:
7*109 reads / 3.5*106 writes per day
Кэширование
bphotos1
bphotos2
bphotosN
Storage Area Network
(SAN)
photoscache1
photoscacheN
Структура фотокэша
bphotos
Структура фотокэша
bphotos
Local cache
Структура фотокэша
Local cache
proxy_pass
proxy_store bphotos
Структура фотокэша
Local cache
Buffer
Hot cache
Cold cache
proxy_pass
proxy_store bphotos
Структура фотокэша
Local cache
Buffer
Hot cache
Cold cache
Access log
<photo_path>
<served_by>
proxy_pass
proxy_store bphotos
Структура фотокэша
Local cache
Buffer
Hot cache
Cold cache
Access log
<photo_path>
<served_by>
proxy_pass
proxy_store bphotos
Cache manager daemon
Структура фотокэша
Local cache
Buffer
Hot cache
Cold cache
Access log
<photo_path>
<served_by>
proxy_pass
proxy_store bphotos
Cache manager daemon
Хранит статистику запросов по файлам
Структура фотокэша
Local cache
Buffer
Hot cache
Cold cache
Access log
<photo_path>
<served_by>
proxy_pass
proxy_store bphotos
Cache manager daemon
Хранит статистику запросов по файлам
Часто запрашиваемые -> Hot cache
Структура фотокэша
Local cache
Buffer
Hot cache
Cold cache
Access log
<photo_path>
<served_by>
proxy_pass
proxy_store bphotos
Cache manager daemon
Хранит статистику запросов по файлам
Часто запрашиваемые -> Hot cache
Редко запрашиваемые -> Cold cache
Структура фотокэша
Local cache
Buffer
Hot cache
Cold cache
Access log
<photo_path>
<served_by>
proxy_pass
proxy_store bphotos
Cache manager daemon
Хранит статистику запросов по файлам
Часто запрашиваемые -> Hot cache
Редко запрашиваемые -> Cold cache
Постепенно удаляет из Cold cache
Как распределять запросы?
photoscache2
photoscache1
photoscache3
Как распределять запросы?
Round-robin?
photoscache2
photoscache1
photoscache3
Как распределять запросы?
Round-robin?
Hash % count?
photoscache2
photoscache1
photoscache3
Как распределять запросы?
Round-robin?
Hash % count?
hash(“example_url”) = 5
server_idx0 = 5 % 3 = 2photoscache2
photoscache1
photoscache3
Как распределять запросы?
Round-robin?
Hash % count?
hash(“example_url”) = 5
server_idx0 = 5 % 3 = 2
server_idx1 = 5 % 4 = 1
Как распределять запросы?
photoscache2
photoscache1
photoscache3
Round-robin?
Hash % count?
Как распределять запросы?
Round-robin?
Hash % count?
Consistent hashing?photoscache2
photoscache1
photoscache3
Consistent hashing
0
hash(sharding_key)
Consistent hashing
0
hash(sharding_key)
Consistent hashing
0
hash(sharding_key)
A
Consistent hashing
0
hash(sharding_key)
B
A
Consistent hashing
0
hash(sharding_key)
B
A
C
Consistent hashing
0
hash(sharding_key)
B
A
C
Consistent hashing
0
hash(sharding_key)
B
A
C
B
A
C
Резервный фотокэш
photoscache1
bphotos
photoscache2
photoscache3
photoscache4
(reserve)
Load balancer
Резервный фотокэш
photoscache1
Load balancer
photoscache2
photoscache3
photoscache4
(reserve)
bphotos
Кэширование. Результаты
- Hitrate (количество попаданий в кэш) 98%
- Из 80k только 1600 rps доходят до bphotos
Кэширование. Результаты
- Hitrate (количество попаданий в кэш) 98%
- Из 80k только 1600 rps доходят до bphotos
- 3 точки присутствия (Прага, Майами, Гонконг)
Кэширование. Результаты
- Hitrate (количество попаданий в кэш) 98%
- Из 80k только 1600 rps доходят до bphotos
- 3 точки присутствия (Прага, Майами, Гонконг)
+
- Поддержка webp, progressive jpeg
- Динамический resize/crop
- Динамические вотермарки, фильтры (blur, pixelize)
Почему не CDN?
- Хочется больше контроля и предсказуемости
Почему не CDN?
- Хочется больше контроля и предсказуемости
- Система развивалась постепенно
Почему не CDN?
- Хочется больше контроля и предсказуемости
- Система развивалась постепенно
- Много специфической логики на фотокэшах
Почему не CDN?
- Хочется больше контроля и предсказуемости
- Система развивалась постепенно
- Много специфической логики на фотокэшах
- Невысокая сложность поддержки итогового решения
Почему не CDN?
- Хочется больше контроля и предсказуемости
- Система развивалась постепенно
- Много специфической логики на фотокэшах
- Невысокая сложность поддержки итогового решения
Современный CDN — хорошая альтернатива в условиях
дефицита ресурсов и времени
Хранение. 2013 год
bphotos1
bphotos2
bphotosN
Storage Area Network
(SAN)
photoscache1
photoscacheN
Хранение. 2013 год
bphotos1
bphotos2
bphotosN
Storage Area Network
(SAN)
photoscache1
photoscacheN
80 x bphotos = ~560Tb данных
40 x photoscache
X 2 ДЦ
Хранение. 2013 год
bphotos1
bphotos2
bphotosN
Storage Area Network
(SAN)
photoscache1
photoscacheN
1 x POINT OF FAILURE
Хранение. 2013 год
bphotos1
bphotos2
bphotosN
Storage Area Network
(SAN)
photoscache1
photoscacheN
2 x POINT OF FAILURE
Хранение. 2013 год
bphotos1
bphotos2
bphotosN
Storage Area Network
(SAN)
photoscache1
photoscacheN
3 x POINT OF FAILURE
Хранение. 2013 год
bphotos1
bphotos2
bphotosN
Storage Area Network
(SAN)
photoscache1
photoscacheN
3 x POINT OF FAILURE
! MAINTENANCE
Хранение. 2013 год
bphotos1
bphotos2
bphotosN
Storage Area Network
(SAN)
photoscache1
photoscacheN
3 x POINT OF FAILURE ! DATA LOSS
! MAINTENANCE
Резервирование v.1
bphotos
Main partition
Local FS Fiber
Storage Area Network
bphotos
Local FS
Main partition
Backup partition
Fiber
Storage Area Network
Fiber
Storage Area Network
Резервирование v.1
Async queue
bphotos
Local FS
Main partition
Backup partition
Fiber
Storage Area Network
Fiber
Storage Area Network
Резервирование v.1
Async queue
bphotos
Local FS
Main partition
Backup partition
Fiber
Storage Area Network
Fiber
Storage Area Network
Buffer partition
Резервирование v.1
Async queue
bphotos
Local FS
Main partition
Backup partition
Fiber
Storage Area Network
Fiber
Storage Area Network
Buffer partition
! NO DATA LOSS
Резервирование v.1
Async queue
bphotos
Local FS
Main partition
Backup partition
Fiber
Storage Area Network
Fiber
Storage Area Network
Buffer partition
! NO DATA LOSS
! POINT OF FAILURE
Резервирование v.1
Async queue
bphotos
Local FS
Main partition
Backup partition
Fiber
Storage Area Network
Fiber
Storage Area Network
Buffer partition
! NO DATA LOSS
! POINT OF FAILURE
! MAINTENANCE
Резервирование v.1
Dphotos
Async queue
bphotos
Local FS
Main partition
Backup partition
Fiber
Storage Area Network
Fiber
Storage Area Network
Buffer partition
Dphotos
Async queue
bphotos
Local FS
Main partition
Backup partition
Buffer partition
Dphotos
Async queue
bphotos
Local FS
Main partition
Backup partition
Buffer partition
Dphotos
dphotosN
Buffer partition
Main partition
dphotosN+1
Buffer partition
Main partition
Dphotos
dphotosN
Async queue
Buffer partition
Main partition
dphotosN+1
Buffer partition
Main partition
Dphotos. Upload
Async queue
dphotosN
dphotosN+1Round robin + health checks
Load balancer
Dphotos. Отдача
photoscache
Async queue
dphotosN
dphotosN+1Round robin + health checks
Dphotos. Отдача
photoscache
Async queue
dphotosN
dphotosN+1
HIT
Round robin + health checks
Dphotos. Отдача
Async queue
dphotosN
dphotosN+1
MISS
Round robin + health checks
photoscache
Dphotos. Отдача
Async queue
dphotosN
dphotosN+1
MISS
Round robin + health checks
photoscache
Dphotos. Отказоустойчивость
dphotosN
Async queue
Buffer partition
Main partition
dphotosN+1
Buffer partition
Main partition
Dphotos. Отказоустойчивость
dphotosN
Async queue
Buffer partition
Main partition
dphotosN+1
Buffer partition
Main partition
Dphotos. Отказоустойчивость
dphotosN
Async queue
Buffer partition
Main partition
dphotosN+1
Buffer partition
Main partition
Dphotos. Отказоустойчивость
dphotosN
Async queue
Buffer partition
Main partition
dphotosN+1
Buffer partition
Main partition
Dphotos. Результаты
- Отказоустойчивость
Dphotos. Результаты
- Отказоустойчивость
- Простая эксплуатация
Dphotos. Результаты
- Отказоустойчивость
- Простая эксплуатация
- Двойной запас по чтению
Dphotos. Результаты
- Отказоустойчивость
- Простая эксплуатация
- Двойной запас по чтению
- Сложность разработки
Dphotos. Результаты
- Отказоустойчивость
- Простая эксплуатация
- Двойной запас по чтению
- Сложность разработки
Так хранить локально — это хорошо или плохо?
- Проще в эксплуатации
Dphotos. Результаты
- Отказоустойчивость
- Простая эксплуатация
- Двойной запас по чтению
- Сложность разработки
Так хранить локально — это хорошо или плохо?
- Проще в эксплуатации
- Производительнее
Dphotos. Результаты
- Отказоустойчивость
- Простая эксплуатация
- Двойной запас по чтению
- Сложность разработки
Так хранить локально — это хорошо или плохо?
- Проще в эксплуатации
- Производительнее
- В 1.5 раза дороже, чем SAN
Итоги
Итоги
Итоги
photoscache
Итоги
photoscache
CDN
Итоги
photoscache dphotos
CDN Storage layer
Итоги
photoscache dphotos
CDN Storage layer
Local drives
Итоги
photoscache dphotos
Storage Area Network
CDN Storage layer
Local drives
Итоги
- А надо ли улучшать? Сначала измерь
Итоги
- А надо ли улучшать? Сначала измерь http://pinba.org
Итоги
- А надо ли улучшать? Сначала измерь http://pinba.org
- Чтение -> кэш
- Запись -> шардинг
Итоги
- А надо ли улучшать? Сначала измерь http://pinba.org
- Чтение -> кэш
- Запись -> шардинг
- Immutable фотки
Итоги
- А надо ли улучшать? Сначала измерь http://pinba.org
- Чтение -> кэш
- Запись -> шардинг
- Immutable фотки
- Resize на лету
Итоги
- А надо ли улучшать? Сначала измерь http://pinba.org
- Чтение -> кэш
- Запись -> шардинг
- Immutable фотки
- Resize на лету
- Инкрементальные асинхронные бэкапы - это хорошо
Итоги
- А надо ли улучшать? Сначала измерь http://pinba.org
- Чтение -> кэш
- Запись -> шардинг
- Immutable фотки
- Resize на лету
- Инкрементальные асинхронные бэкапы - это хорошо
- Если что-то может сломаться - оно сломается

More Related Content

Viewers also liked

Как мы готовим MySQL
Как мы готовим MySQLКак мы готовим MySQL
Как мы готовим MySQLBadoo Development
 
神戸Rustの会 #1 LT - I'm lazy rust programmer
神戸Rustの会 #1 LT - I'm lazy rust programmer神戸Rustの会 #1 LT - I'm lazy rust programmer
神戸Rustの会 #1 LT - I'm lazy rust programmerHattori Hideo
 
Git хуки на страже качества кода
Git хуки на страже качества кодаGit хуки на страже качества кода
Git хуки на страже качества кодаBadoo Development
 
Fluency - Yet another fluent logger
Fluency - Yet another fluent loggerFluency - Yet another fluent logger
Fluency - Yet another fluent loggerMitsunori Komatsu
 
Performance Comparison of Mutex, RWLock and Atomic types in Rust
Performance Comparison of Mutex, RWLock and  Atomic types in RustPerformance Comparison of Mutex, RWLock and  Atomic types in Rust
Performance Comparison of Mutex, RWLock and Atomic types in RustMitsunori Komatsu
 
Как мы общаемся с пользователями на 46 языках и понимаем друг друга
Как мы общаемся с пользователями на 46 языках и понимаем друг другаКак мы общаемся с пользователями на 46 языках и понимаем друг друга
Как мы общаемся с пользователями на 46 языках и понимаем друг другаBadoo Development
 
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...Badoo Development
 
"Великолепный API без Rest", Констатин Якушев (Badoo)
 "Великолепный API без Rest", Констатин Якушев (Badoo) "Великолепный API без Rest", Констатин Якушев (Badoo)
"Великолепный API без Rest", Констатин Якушев (Badoo)Badoo Development
 
Технологии vs коммуникации: что важнее?
Технологии vs коммуникации: что важнее?Технологии vs коммуникации: что важнее?
Технологии vs коммуникации: что важнее?Badoo Development
 
Багфиксинг процесса разработки в iOS: взгляд с двух сторон
Багфиксинг процесса разработки в iOS: взгляд с двух сторонБагфиксинг процесса разработки в iOS: взгляд с двух сторон
Багфиксинг процесса разработки в iOS: взгляд с двух сторонBadoo Development
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Badoo Development
 
Мониторь, автоматизируй Docker
Мониторь, автоматизируй DockerМониторь, автоматизируй Docker
Мониторь, автоматизируй DockerBadoo Development
 
Docker в Badoo: ПМЖ или временная регистрация
Docker в Badoo: ПМЖ или временная регистрацияDocker в Badoo: ПМЖ или временная регистрация
Docker в Badoo: ПМЖ или временная регистрацияBadoo Development
 
Rust Workshop - NITC FOSSMEET 2017
Rust Workshop - NITC FOSSMEET 2017 Rust Workshop - NITC FOSSMEET 2017
Rust Workshop - NITC FOSSMEET 2017 pramode_ce
 
TechLeads meetup: Макс Лапшин, Erlyvideo
TechLeads meetup: Макс Лапшин, ErlyvideoTechLeads meetup: Макс Лапшин, Erlyvideo
TechLeads meetup: Макс Лапшин, ErlyvideoBadoo Development
 
TechLeads meetup: Евгений Потапов, ITSumma
TechLeads meetup: Евгений Потапов, ITSumma TechLeads meetup: Евгений Потапов, ITSumma
TechLeads meetup: Евгений Потапов, ITSumma Badoo Development
 
TechLeads meetup: Андрей Шелёхин, Tinkoff.ru
TechLeads meetup: Андрей Шелёхин, Tinkoff.ruTechLeads meetup: Андрей Шелёхин, Tinkoff.ru
TechLeads meetup: Андрей Шелёхин, Tinkoff.ruBadoo Development
 

Viewers also liked (19)

Как мы готовим MySQL
Как мы готовим MySQLКак мы готовим MySQL
Как мы готовим MySQL
 
神戸Rustの会 #1 LT - I'm lazy rust programmer
神戸Rustの会 #1 LT - I'm lazy rust programmer神戸Rustの会 #1 LT - I'm lazy rust programmer
神戸Rustの会 #1 LT - I'm lazy rust programmer
 
Git хуки на страже качества кода
Git хуки на страже качества кодаGit хуки на страже качества кода
Git хуки на страже качества кода
 
Fluency - Yet another fluent logger
Fluency - Yet another fluent loggerFluency - Yet another fluent logger
Fluency - Yet another fluent logger
 
Performance Comparison of Mutex, RWLock and Atomic types in Rust
Performance Comparison of Mutex, RWLock and  Atomic types in RustPerformance Comparison of Mutex, RWLock and  Atomic types in Rust
Performance Comparison of Mutex, RWLock and Atomic types in Rust
 
Как мы общаемся с пользователями на 46 языках и понимаем друг друга
Как мы общаемся с пользователями на 46 языках и понимаем друг другаКак мы общаемся с пользователями на 46 языках и понимаем друг друга
Как мы общаемся с пользователями на 46 языках и понимаем друг друга
 
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
 
"Великолепный API без Rest", Констатин Якушев (Badoo)
 "Великолепный API без Rest", Констатин Якушев (Badoo) "Великолепный API без Rest", Констатин Якушев (Badoo)
"Великолепный API без Rest", Констатин Якушев (Badoo)
 
Технологии vs коммуникации: что важнее?
Технологии vs коммуникации: что важнее?Технологии vs коммуникации: что важнее?
Технологии vs коммуникации: что важнее?
 
Багфиксинг процесса разработки в iOS: взгляд с двух сторон
Багфиксинг процесса разработки в iOS: взгляд с двух сторонБагфиксинг процесса разработки в iOS: взгляд с двух сторон
Багфиксинг процесса разработки в iOS: взгляд с двух сторон
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
 
Docker networking
Docker networkingDocker networking
Docker networking
 
Мониторь, автоматизируй Docker
Мониторь, автоматизируй DockerМониторь, автоматизируй Docker
Мониторь, автоматизируй Docker
 
Docker в Badoo: ПМЖ или временная регистрация
Docker в Badoo: ПМЖ или временная регистрацияDocker в Badoo: ПМЖ или временная регистрация
Docker в Badoo: ПМЖ или временная регистрация
 
Docker penetration
Docker penetrationDocker penetration
Docker penetration
 
Rust Workshop - NITC FOSSMEET 2017
Rust Workshop - NITC FOSSMEET 2017 Rust Workshop - NITC FOSSMEET 2017
Rust Workshop - NITC FOSSMEET 2017
 
TechLeads meetup: Макс Лапшин, Erlyvideo
TechLeads meetup: Макс Лапшин, ErlyvideoTechLeads meetup: Макс Лапшин, Erlyvideo
TechLeads meetup: Макс Лапшин, Erlyvideo
 
TechLeads meetup: Евгений Потапов, ITSumma
TechLeads meetup: Евгений Потапов, ITSumma TechLeads meetup: Евгений Потапов, ITSumma
TechLeads meetup: Евгений Потапов, ITSumma
 
TechLeads meetup: Андрей Шелёхин, Tinkoff.ru
TechLeads meetup: Андрей Шелёхин, Tinkoff.ruTechLeads meetup: Андрей Шелёхин, Tinkoff.ru
TechLeads meetup: Андрей Шелёхин, Tinkoff.ru
 

More from Badoo Development

Viktar Karanevich – iOS Parallel Automation
Viktar Karanevich – iOS Parallel AutomationViktar Karanevich – iOS Parallel Automation
Viktar Karanevich – iOS Parallel AutomationBadoo Development
 
Как мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальКак мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальBadoo Development
 
Григорий Джанелидзе, OK.RU
Григорий Джанелидзе, OK.RUГригорий Джанелидзе, OK.RU
Григорий Джанелидзе, OK.RUBadoo Development
 
Андрей Сидоров, Яндекс.Браузер
Андрей Сидоров, Яндекс.БраузерАндрей Сидоров, Яндекс.Браузер
Андрей Сидоров, Яндекс.БраузерBadoo Development
 
Филипп Уваров, Avito
Филипп Уваров, AvitoФилипп Уваров, Avito
Филипп Уваров, AvitoBadoo Development
 
Cocoaheads Meetup / Alex Zimin / Swift magic
Cocoaheads Meetup / Alex Zimin / Swift magicCocoaheads Meetup / Alex Zimin / Swift magic
Cocoaheads Meetup / Alex Zimin / Swift magicBadoo Development
 
Cocoaheads Meetup / Kateryna Trofimenko / Feature development
Cocoaheads Meetup / Kateryna Trofimenko / Feature developmentCocoaheads Meetup / Kateryna Trofimenko / Feature development
Cocoaheads Meetup / Kateryna Trofimenko / Feature developmentBadoo Development
 
Alex Krasheninnikov – Hadoop High Availability
Alex Krasheninnikov – Hadoop High AvailabilityAlex Krasheninnikov – Hadoop High Availability
Alex Krasheninnikov – Hadoop High AvailabilityBadoo Development
 
Андрей Денисов – В ожидании мониторинга баз данных
Андрей Денисов – В ожидании мониторинга баз данныхАндрей Денисов – В ожидании мониторинга баз данных
Андрей Денисов – В ожидании мониторинга баз данныхBadoo Development
 
Александр Зобнин, Grafana Labs
Александр Зобнин, Grafana LabsАлександр Зобнин, Grafana Labs
Александр Зобнин, Grafana LabsBadoo Development
 
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественно
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественноИлья Аблеев – Zabbix в Badoo: реагируем быстро и качественно
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественноBadoo Development
 
TechLeads meetup: Алексей Рыбак, Badoo
TechLeads meetup: Алексей Рыбак, BadooTechLeads meetup: Алексей Рыбак, Badoo
TechLeads meetup: Алексей Рыбак, BadooBadoo Development
 
Мобильный веб: назад в будущее
Мобильный веб: назад в будущееМобильный веб: назад в будущее
Мобильный веб: назад в будущееBadoo Development
 
Что надо знать о HTTP/2
Что надо знать о HTTP/2Что надо знать о HTTP/2
Что надо знать о HTTP/2Badoo Development
 

More from Badoo Development (17)

Viktar Karanevich – iOS Parallel Automation
Viktar Karanevich – iOS Parallel AutomationViktar Karanevich – iOS Parallel Automation
Viktar Karanevich – iOS Parallel Automation
 
Как мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальКак мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон Довгаль
 
Григорий Джанелидзе, OK.RU
Григорий Джанелидзе, OK.RUГригорий Джанелидзе, OK.RU
Григорий Джанелидзе, OK.RU
 
Андрей Сидоров, Яндекс.Браузер
Андрей Сидоров, Яндекс.БраузерАндрей Сидоров, Яндекс.Браузер
Андрей Сидоров, Яндекс.Браузер
 
Филипп Уваров, Avito
Филипп Уваров, AvitoФилипп Уваров, Avito
Филипп Уваров, Avito
 
Cocoaheads Meetup / Alex Zimin / Swift magic
Cocoaheads Meetup / Alex Zimin / Swift magicCocoaheads Meetup / Alex Zimin / Swift magic
Cocoaheads Meetup / Alex Zimin / Swift magic
 
Cocoaheads Meetup / Kateryna Trofimenko / Feature development
Cocoaheads Meetup / Kateryna Trofimenko / Feature developmentCocoaheads Meetup / Kateryna Trofimenko / Feature development
Cocoaheads Meetup / Kateryna Trofimenko / Feature development
 
Alex Krasheninnikov – Hadoop High Availability
Alex Krasheninnikov – Hadoop High AvailabilityAlex Krasheninnikov – Hadoop High Availability
Alex Krasheninnikov – Hadoop High Availability
 
Андрей Денисов – В ожидании мониторинга баз данных
Андрей Денисов – В ожидании мониторинга баз данныхАндрей Денисов – В ожидании мониторинга баз данных
Андрей Денисов – В ожидании мониторинга баз данных
 
Александр Зобнин, Grafana Labs
Александр Зобнин, Grafana LabsАлександр Зобнин, Grafana Labs
Александр Зобнин, Grafana Labs
 
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественно
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественноИлья Аблеев – Zabbix в Badoo: реагируем быстро и качественно
Илья Аблеев – Zabbix в Badoo: реагируем быстро и качественно
 
TechLeads meetup: Алексей Рыбак, Badoo
TechLeads meetup: Алексей Рыбак, BadooTechLeads meetup: Алексей Рыбак, Badoo
TechLeads meetup: Алексей Рыбак, Badoo
 
ChromeDriver Jailbreak
ChromeDriver JailbreakChromeDriver Jailbreak
ChromeDriver Jailbreak
 
Мобильный веб: назад в будущее
Мобильный веб: назад в будущееМобильный веб: назад в будущее
Мобильный веб: назад в будущее
 
S.O.L.I.D-ый JavaScript
S.O.L.I.D-ый JavaScriptS.O.L.I.D-ый JavaScript
S.O.L.I.D-ый JavaScript
 
Что надо знать о HTTP/2
Что надо знать о HTTP/2Что надо знать о HTTP/2
Что надо знать о HTTP/2
 
Парсим CSS
Парсим CSSПарсим CSS
Парсим CSS
 

Recently uploaded (9)

2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 
MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 
Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 

Архитектура хранения и отдачи фотографий в Badoo