SlideShare una empresa de Scribd logo
1 de 42
Descargar para leer sin conexión
ПРОПАТЧИЛ
GLIBC???
CVE-2015-0235
GHOST
Колёса
Раньше и сейчас
2011 — 2015
Кто здесь?
● Максим, администратор серверных систем
● Отвечаю за производительность
● Состою в скромной команде архитекторов
● Холю и лелею инфраструктуру
До Колёс:
● много VoIP’а на цисках и линуксах
● линуксы дома, на работе, в отпуске…
2011 год
● 3 разработчика
● 0 админов (аутсорс)
● ~ 12 серверов-десктопов
● 4.5М просмотров
● 260k визитов
9 миллионов
4 сервера:
● 2 процессора
● 48 Гб ОЗУ
Хранилка:
● 12 дисков
● 12 ТБ (RAID10)
Адская избыточность, высокая надежность, расширяемость,
управляемость, печеньки!
2011 год (уиии, блэйд!)
● 3 разработчика
● 0 админов (аутсорс)
● 4 блэйд-сервера
● 5.6M просмотров
● 270к визитов
2012 год, начало
● 3 разработчика
● 1 админ (ура!)
● 4 блэйд-сервера
● ~15 контейнеров OpenVZ
● одна плоская сеть /24
Знаменитая трёхзвенная (плюшки)
OpenVZ
Плюсы:
● быстрый
● дерзкий
● как пуля резкий
● 1-3% накладных расходов
● простой, как палка
OpenVZ
Минусы:
● одно ядро на всех
● «хитрое» управление памятью (MongoDB и JVM передают
привет!)
● ФС для контейнеров
● видимость ограничена
● постоянные танцы с бубном вокруг user_beancounters
KVM
Плюсы:
● полная изоляция ВМ друг от друга и от хоста
● MongoDB и JVM улыбаются и пляшут
● быстрая работа с диском
● видимость всех ресурсов ВМ
● virtio, vhost_net, KSM
KVM
Минусы:
● сложный
● теоретически медленнее, чем OpenVZ
(аппаратная виртуализация спасает)
● мало опыта администрирования и отладки
OpenVZ, давай, до свидания!
● Несколько недель не спим
● Переносим контейнеры в ВМ
● …
● PROFIT!
P.S. До сих пор KVM ни разу не становился настолько
узким местом, чтобы хотелось от него отказаться.
Proxmox VE (proxmox.com)
● кластер KVM-серверов
● multimaster
● CLI
● web
● HA
● API
Немного про overprovisioning
Он же оверселлинг, он же оверсабскрайбинг, он же
большая радость хостера и засада клиента:
● позволяет продать больше, чем имеешь
● провоцирует «драку» за ресурсы
● распределение ресурсов становится
«тяжелой», но приоритетной задачей
● совершенно нам не подходит
Блэйд-система в Колёсах
Почему же?
● большая коробка — половину в другой ЦОД не
отпилишь
● аренда места в ЦОД стоит космических денег
● заполненность на 25% экономически невыгодна
● сэкономили на сетевой части
● недешевый бренд
Наш выбор — Supermicro Twin²
● один такой заменит блэйд
● компактный
● производительный
● в 4 раза меньше
● в 2 раза дешевле
● недорогой бренд
● даже с учётом электричества, аренда обходится
дешевле
GlusterFS
● как NFS, только от Red Hat
● плюшки в виде репликации
● и распределенности
● которые никто не заюзал
● ибо хранилище было одно
● в самом низу — родная ФС (ext3/4, xfs)
Что лежало на хранилке
Объявления:
/mnt/data/live/0007/654/321/data.xml
Фотографии:
/mnt/data/live/0007/654/321/photos/1/60x45.jpg
/mnt/data/live/0007/654/321/photos/1/120x90.jpg
/mnt/data/live/0007/654/321/photos/1/400x300.jpg
/mnt/data/live/0007/654/321/photos/1/full.jpg
~ 2 ТБ данных к середине 2012-го
Цифры
● 10M объявлений
● ~ 10М файлов data.xml
● ~ 40М каталогов для фото
● ~ 160M файлов *.jpg
● ~ 200М объектов
● ~ 50-60 Гб метаданных
И чо?
подумаешь, много файлов…
fsck you
вот чо
Проблема
Задержки:
● HDD
● сетевая ФС
● ФС как структура вообще
● множественный доступ (кэш не спасёт)
● бэкап данных за неделю длится неделю
Решение для объявлений
● Никаких каталогов
● Никаких файлов
● Вкусный JSON вместо XML
● Репликация
● Резервное копирование (с бубном)
В итоге
● драматическое падение задержек
● катастрофический прирост производительности
● ещё два года Колёса живут без шардинга
Решение для фотографий
● храним объекты
● намного меньше метаданных
● доступ по HTTP
● nginx для кэша и HTTPS
● распределенная система
● избыточно (3 копии данных)
● задержки по-прежнему высоковаты :(
Цифры (Swift vs Хранилка)
● стоимость: 30% старой системы
● расходы: на 20% выше
● тройная избыточность
● защита от сбоев
● распределенность
Миграция
1. поднимаем новую систему
2. включаем запись в обе системы
3. запускаем перенос данных из старой в новую
систему
4. начинаем читать с новой системы
5. дожидаемся окончания переноса
6. ждём «на всякий случай»
7. отключаем старую систему
Фотографии (сейчас)
● 2к запросов/сек
● 260 Мбит/сек
● 220 ГБ кэш (memcached)
● кэш спасает, но продолжаем ускоряться
● SSD для метаданных
2013 год
● 5-8 разработчиков
● 1 админ
● 1 тестировщик!
● ~ 150 ВМ
Колёса:
● 8.2М просмотров
● 450k визитов
Крыша:
● 1.8М просмотров
● 114к визитов
2013 …
● появились мобильные приложения
● доросли до конца года до 1.5М просмотров и
120к визитов
● масштабируемся каждый день
● все хотят в API, а API всех ненавидит
● присутствуем в двух ЦОДах
Оптимизация
Постоянные «фоновые» задачи:
1. найти узкое место
2. всё переделать
3. перейти к шагу 1
Немного уже не узких мест
● CDN для фотографий и статики
○ два ЦОДа
○ балансировка на уровне DNS
● загрузка фото
○ кэш для свежезагруженных изображений
○ фоновый перенос в Swift
● жесткие диски
○ SSD уже не дорого
○ и очень быстро
Автоматизация
● серверов всё больше
● конфигурации всё изощрённее
● зависимость A->B->C->D->A
● нужно же что-то делать, Петька!
Chef
● сервер управления конфигурацией
● для всех *nix
● пишем рецепты, а оно их исполняет
● только там, где нужно
● попутная инвентаризация
● только pull
● пришлось учить ruby
● программисты смеялись :(
Примеры
● добавлять все новые серверы в мониторинг
● установить nginx на серверы группы web
● найти все серверы, с драйвером e1000 и
наложить патч
Плюшки
● NTP
● IPv6
● SPDY
2014-2015
● 11 разработчиков
● 5 тестировщиков
● 2 админа (ура! ура!)
● ~ 520 ВМ
Сайты:
● 11.5М просмотров
● 660к визитов
Мобильные приложения:
● 7.5М просмотров
● 250k визитов
Что дальше?
● вчерашние паттерны уже антипаттерны
● на горизонте маячит HTTP2
● оптимизация под dial-up снова в моде
● только теперь 1080p и 4K
● зато даже в самолёте
Вопросы?
Максим Кравец
администратор серверных систем
ТОО «Колёса»
zeelax@gmail.com
skype: zeelax
Спасибо!

Más contenido relacionado

La actualidad más candente

My talk on administering PostgreSQL
My talk on administering PostgreSQLMy talk on administering PostgreSQL
My talk on administering PostgreSQLAlex Chistyakov
 
Kolosov drupalconf2011 2_kolosov
Kolosov drupalconf2011 2_kolosovKolosov drupalconf2011 2_kolosov
Kolosov drupalconf2011 2_kolosovdrupalconf
 
My talk on Hadoop stack operations engineering at OSPCon
My talk on Hadoop stack operations engineering at OSPConMy talk on Hadoop stack operations engineering at OSPCon
My talk on Hadoop stack operations engineering at OSPConAlex Chistyakov
 
Salt and Ansible - Python-based CM systems
Salt and Ansible - Python-based CM systemsSalt and Ansible - Python-based CM systems
Salt and Ansible - Python-based CM systemsAlex Chistyakov
 
Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.Vladimir Malyk
 
CodeFest 2012. Евтухович И. — Как мы делали Групон
CodeFest 2012. Евтухович И. — Как мы делали ГрупонCodeFest 2012. Евтухович И. — Как мы делали Групон
CodeFest 2012. Евтухович И. — Как мы делали ГрупонCodeFest
 
Chef, Puppet, Salt, Ansible on SECON 2014
Chef, Puppet, Salt, Ansible on SECON 2014Chef, Puppet, Salt, Ansible on SECON 2014
Chef, Puppet, Salt, Ansible on SECON 2014Alex Chistyakov
 
«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр Колесень«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр КолесеньIT Share
 
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...Ontico
 
От репозитория до CI/CD-инфраструктуры в продакшне за неделю / Дмитрий Чумак ...
От репозитория до CI/CD-инфраструктуры в продакшне за неделю / Дмитрий Чумак ...От репозитория до CI/CD-инфраструктуры в продакшне за неделю / Дмитрий Чумак ...
От репозитория до CI/CD-инфраструктуры в продакшне за неделю / Дмитрий Чумак ...Ontico
 
My talk at Highload++ 2015
My talk at Highload++ 2015My talk at Highload++ 2015
My talk at Highload++ 2015Alex Chistyakov
 
Знакомство с WebAssembly
Знакомство с WebAssemblyЗнакомство с WebAssembly
Знакомство с WebAssemblyNikita Zimin
 
Разработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаРазработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаendeveit
 
Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?Vladimir Malyk
 
SaltStack vs Chef, HappyDev 2013
SaltStack vs Chef, HappyDev 2013SaltStack vs Chef, HappyDev 2013
SaltStack vs Chef, HappyDev 2013Alex Chistyakov
 
Repeatability on DevOps-40 meetup Apr 2014
Repeatability on DevOps-40 meetup Apr 2014Repeatability on DevOps-40 meetup Apr 2014
Repeatability on DevOps-40 meetup Apr 2014Alex Chistyakov
 
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько разRootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько разTimur Batyrshin
 

La actualidad más candente (20)

My talk on administering PostgreSQL
My talk on administering PostgreSQLMy talk on administering PostgreSQL
My talk on administering PostgreSQL
 
Kolosov drupalconf2011 2_kolosov
Kolosov drupalconf2011 2_kolosovKolosov drupalconf2011 2_kolosov
Kolosov drupalconf2011 2_kolosov
 
My talk on Hadoop stack operations engineering at OSPCon
My talk on Hadoop stack operations engineering at OSPConMy talk on Hadoop stack operations engineering at OSPCon
My talk on Hadoop stack operations engineering at OSPCon
 
On Docker
On DockerOn Docker
On Docker
 
Salt and Ansible - Python-based CM systems
Salt and Ansible - Python-based CM systemsSalt and Ansible - Python-based CM systems
Salt and Ansible - Python-based CM systems
 
Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.
 
CodeFest 2012. Евтухович И. — Как мы делали Групон
CodeFest 2012. Евтухович И. — Как мы делали ГрупонCodeFest 2012. Евтухович И. — Как мы делали Групон
CodeFest 2012. Евтухович И. — Как мы делали Групон
 
openSUSE Build Server от Б до Ю
openSUSE Build Server от Б до ЮopenSUSE Build Server от Б до Ю
openSUSE Build Server от Б до Ю
 
Chef, Puppet, Salt, Ansible on SECON 2014
Chef, Puppet, Salt, Ansible on SECON 2014Chef, Puppet, Salt, Ansible on SECON 2014
Chef, Puppet, Salt, Ansible on SECON 2014
 
«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр Колесень«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр Колесень
 
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...
 
От репозитория до CI/CD-инфраструктуры в продакшне за неделю / Дмитрий Чумак ...
От репозитория до CI/CD-инфраструктуры в продакшне за неделю / Дмитрий Чумак ...От репозитория до CI/CD-инфраструктуры в продакшне за неделю / Дмитрий Чумак ...
От репозитория до CI/CD-инфраструктуры в продакшне за неделю / Дмитрий Чумак ...
 
My talk at Highload++ 2015
My talk at Highload++ 2015My talk at Highload++ 2015
My talk at Highload++ 2015
 
Знакомство с WebAssembly
Знакомство с WebAssemblyЗнакомство с WebAssembly
Знакомство с WebAssembly
 
Разработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаРазработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервиса
 
Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?Современный фронтенд -- как не утонуть в море хайпа?
Современный фронтенд -- как не утонуть в море хайпа?
 
Using Ansible
Using AnsibleUsing Ansible
Using Ansible
 
SaltStack vs Chef, HappyDev 2013
SaltStack vs Chef, HappyDev 2013SaltStack vs Chef, HappyDev 2013
SaltStack vs Chef, HappyDev 2013
 
Repeatability on DevOps-40 meetup Apr 2014
Repeatability on DevOps-40 meetup Apr 2014Repeatability on DevOps-40 meetup Apr 2014
Repeatability on DevOps-40 meetup Apr 2014
 
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько разRootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
 

Destacado

Разработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаРазработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаITCrowd Almaty
 
Web Performance в Казнете
Web Performance в КазнетеWeb Performance в Казнете
Web Performance в КазнетеITCrowd Almaty
 
Обучение фронтенд разработке
Обучение фронтенд разработкеОбучение фронтенд разработке
Обучение фронтенд разработкеITCrowd Almaty
 
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиБэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиITCrowd Almaty
 
Мобильность на Колёсах: об инструментах и полезных вещах
Мобильность на Колёсах: об инструментах и полезных вещахМобильность на Колёсах: об инструментах и полезных вещах
Мобильность на Колёсах: об инструментах и полезных вещахITCrowd Almaty
 
Ключ от всех дверей: чем опасен Великий Казахстанский Файерволл
Ключ от всех дверей: чем опасен Великий Казахстанский ФайерволлКлюч от всех дверей: чем опасен Великий Казахстанский Файерволл
Ключ от всех дверей: чем опасен Великий Казахстанский ФайерволлITCrowd Almaty
 
ITCrowd 2 - Разработка крупного проекта в команде
ITCrowd 2 - Разработка крупного проекта в командеITCrowd 2 - Разработка крупного проекта в команде
ITCrowd 2 - Разработка крупного проекта в командеITCrowd Almaty
 
Чем бесят программисты
Чем бесят программистыЧем бесят программисты
Чем бесят программистыITCrowd Almaty
 
Docker с чем едят и для чего используют
Docker с чем едят и для чего используютDocker с чем едят и для чего используют
Docker с чем едят и для чего используютITCrowd Almaty
 
Александр Трищенко: Phalcon framework
Александр Трищенко: Phalcon frameworkАлександр Трищенко: Phalcon framework
Александр Трищенко: Phalcon frameworkOleg Poludnenko
 

Destacado (12)

Разработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаРазработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервиса
 
Web Performance в Казнете
Web Performance в КазнетеWeb Performance в Казнете
Web Performance в Казнете
 
Обучение фронтенд разработке
Обучение фронтенд разработкеОбучение фронтенд разработке
Обучение фронтенд разработке
 
На плаву!
На плаву!На плаву!
На плаву!
 
React + Flux
React + FluxReact + Flux
React + Flux
 
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиБэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
 
Мобильность на Колёсах: об инструментах и полезных вещах
Мобильность на Колёсах: об инструментах и полезных вещахМобильность на Колёсах: об инструментах и полезных вещах
Мобильность на Колёсах: об инструментах и полезных вещах
 
Ключ от всех дверей: чем опасен Великий Казахстанский Файерволл
Ключ от всех дверей: чем опасен Великий Казахстанский ФайерволлКлюч от всех дверей: чем опасен Великий Казахстанский Файерволл
Ключ от всех дверей: чем опасен Великий Казахстанский Файерволл
 
ITCrowd 2 - Разработка крупного проекта в команде
ITCrowd 2 - Разработка крупного проекта в командеITCrowd 2 - Разработка крупного проекта в команде
ITCrowd 2 - Разработка крупного проекта в команде
 
Чем бесят программисты
Чем бесят программистыЧем бесят программисты
Чем бесят программисты
 
Docker с чем едят и для чего используют
Docker с чем едят и для чего используютDocker с чем едят и для чего используют
Docker с чем едят и для чего используют
 
Александр Трищенко: Phalcon framework
Александр Трищенко: Phalcon frameworkАлександр Трищенко: Phalcon framework
Александр Трищенко: Phalcon framework
 

Similar a Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта

ZFS - файловая система будущего
ZFS - файловая система будущегоZFS - файловая система будущего
ZFS - файловая система будущегоAlex Chistyakov
 
Ci на базе docker
Ci на базе dockerCi на базе docker
Ci на базе dockerIvan Grishaev
 
2014.12.06 03 Александр Чистяков — Устройство object storage на примере LeoFS
2014.12.06 03 Александр Чистяков — Устройство object storage на примере LeoFS2014.12.06 03 Александр Чистяков — Устройство object storage на примере LeoFS
2014.12.06 03 Александр Чистяков — Устройство object storage на примере LeoFSHappyDev
 
My talk on LeoFS, HappyDev 2014
My talk on LeoFS, HappyDev 2014My talk on LeoFS, HappyDev 2014
My talk on LeoFS, HappyDev 2014Alex Chistyakov
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012Roman Pavlushko
 
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данныхОлег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данныхSiel01
 
My talk on Salt and Ansible from DevConf 2014
My talk on Salt and Ansible from DevConf 2014My talk on Salt and Ansible from DevConf 2014
My talk on Salt and Ansible from DevConf 2014Alex Chistyakov
 
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)Ontico
 
High Load 2009 Imdg Presentation
High Load 2009   Imdg PresentationHigh Load 2009   Imdg Presentation
High Load 2009 Imdg PresentationHighLoad2009
 
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...IT-Portfolio
 
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Fwdays
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_drupalconf
 
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...CodeFest
 
IBM FlashSystem-Бескомпромиссность в каждом байте
IBM FlashSystem-Бескомпромиссность в каждом байтеIBM FlashSystem-Бескомпромиссность в каждом байте
IBM FlashSystem-Бескомпромиссность в каждом байтеSasha_Zavorot
 
IBM FlashSystem-Бескомпромиссность в каждом байте
IBM FlashSystem-Бескомпромиссность  в каждом байтеIBM FlashSystem-Бескомпромиссность  в каждом байте
IBM FlashSystem-Бескомпромиссность в каждом байтеYaryomenko
 
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...Dev_Party
 
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs..."How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...Provectus
 
Я. Садовская "Управление конфигурациями и тестовой средой", DUMP-2014
Я. Садовская "Управление конфигурациями и тестовой средой", DUMP-2014Я. Садовская "Управление конфигурациями и тестовой средой", DUMP-2014
Я. Садовская "Управление конфигурациями и тестовой средой", DUMP-2014it-people
 

Similar a Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта (20)

ZFS - файловая система будущего
ZFS - файловая система будущегоZFS - файловая система будущего
ZFS - файловая система будущего
 
Ci на базе docker
Ci на базе dockerCi на базе docker
Ci на базе docker
 
2014.12.06 03 Александр Чистяков — Устройство object storage на примере LeoFS
2014.12.06 03 Александр Чистяков — Устройство object storage на примере LeoFS2014.12.06 03 Александр Чистяков — Устройство object storage на примере LeoFS
2014.12.06 03 Александр Чистяков — Устройство object storage на примере LeoFS
 
My talk on LeoFS, HappyDev 2014
My talk on LeoFS, HappyDev 2014My talk on LeoFS, HappyDev 2014
My talk on LeoFS, HappyDev 2014
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012
 
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данныхОлег Царев, Кирилл Коринский   Сравнительный анализ хранилищ данных
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
 
My talk on Salt and Ansible from DevConf 2014
My talk on Salt and Ansible from DevConf 2014My talk on Salt and Ansible from DevConf 2014
My talk on Salt and Ansible from DevConf 2014
 
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
Велосипед уже изобретен. Что умеют промышленные СХД? / Антон Жбанков (Nutanix)
 
High Load 2009 Imdg Presentation
High Load 2009   Imdg PresentationHigh Load 2009   Imdg Presentation
High Load 2009 Imdg Presentation
 
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
 
HBase on Dev{Highload}
HBase on Dev{Highload}HBase on Dev{Highload}
HBase on Dev{Highload}
 
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
 
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
 
pgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresqlpgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresql
 
IBM FlashSystem-Бескомпромиссность в каждом байте
IBM FlashSystem-Бескомпромиссность в каждом байтеIBM FlashSystem-Бескомпромиссность в каждом байте
IBM FlashSystem-Бескомпромиссность в каждом байте
 
IBM FlashSystem-Бескомпромиссность в каждом байте
IBM FlashSystem-Бескомпромиссность  в каждом байтеIBM FlashSystem-Бескомпромиссность  в каждом байте
IBM FlashSystem-Бескомпромиссность в каждом байте
 
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
 
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs..."How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
 
Я. Садовская "Управление конфигурациями и тестовой средой", DUMP-2014
Я. Садовская "Управление конфигурациями и тестовой средой", DUMP-2014Я. Садовская "Управление конфигурациями и тестовой средой", DUMP-2014
Я. Садовская "Управление конфигурациями и тестовой средой", DUMP-2014
 

Más de ITCrowd Almaty

Система управления конфигурациями Ansible
Система управления конфигурациями AnsibleСистема управления конфигурациями Ansible
Система управления конфигурациями AnsibleITCrowd Almaty
 
Система мониторинга Zabbix
Система мониторинга ZabbixСистема мониторинга Zabbix
Система мониторинга ZabbixITCrowd Almaty
 
Designer ≠ дизайнер
Designer ≠ дизайнерDesigner ≠ дизайнер
Designer ≠ дизайнерITCrowd Almaty
 
ITCrowd 2 - Обзор существующих стандартов разметки и продуктов на ее основе
ITCrowd 2 - Обзор существующих стандартов разметки и продуктов на ее основеITCrowd 2 - Обзор существующих стандартов разметки и продуктов на ее основе
ITCrowd 2 - Обзор существующих стандартов разметки и продуктов на ее основеITCrowd Almaty
 
ITCrowd - Метапрограммирование
ITCrowd - МетапрограммированиеITCrowd - Метапрограммирование
ITCrowd - МетапрограммированиеITCrowd Almaty
 
ITCrowd - Потенциал казахоязычной аудитории РК
ITCrowd - Потенциал казахоязычной аудитории РКITCrowd - Потенциал казахоязычной аудитории РК
ITCrowd - Потенциал казахоязычной аудитории РКITCrowd Almaty
 
ITCrowd - Почему и как я стал фрилансером?
ITCrowd - Почему и как я стал фрилансером?ITCrowd - Почему и как я стал фрилансером?
ITCrowd - Почему и как я стал фрилансером?ITCrowd Almaty
 
ITCrowd - Правильная структура лендинга
ITCrowd - Правильная структура лендингаITCrowd - Правильная структура лендинга
ITCrowd - Правильная структура лендингаITCrowd Almaty
 

Más de ITCrowd Almaty (10)

Система управления конфигурациями Ansible
Система управления конфигурациями AnsibleСистема управления конфигурациями Ansible
Система управления конфигурациями Ansible
 
Система мониторинга Zabbix
Система мониторинга ZabbixСистема мониторинга Zabbix
Система мониторинга Zabbix
 
WatchKit 101
WatchKit 101WatchKit 101
WatchKit 101
 
AngularJS
AngularJSAngularJS
AngularJS
 
Designer ≠ дизайнер
Designer ≠ дизайнерDesigner ≠ дизайнер
Designer ≠ дизайнер
 
ITCrowd 2 - Обзор существующих стандартов разметки и продуктов на ее основе
ITCrowd 2 - Обзор существующих стандартов разметки и продуктов на ее основеITCrowd 2 - Обзор существующих стандартов разметки и продуктов на ее основе
ITCrowd 2 - Обзор существующих стандартов разметки и продуктов на ее основе
 
ITCrowd - Метапрограммирование
ITCrowd - МетапрограммированиеITCrowd - Метапрограммирование
ITCrowd - Метапрограммирование
 
ITCrowd - Потенциал казахоязычной аудитории РК
ITCrowd - Потенциал казахоязычной аудитории РКITCrowd - Потенциал казахоязычной аудитории РК
ITCrowd - Потенциал казахоязычной аудитории РК
 
ITCrowd - Почему и как я стал фрилансером?
ITCrowd - Почему и как я стал фрилансером?ITCrowd - Почему и как я стал фрилансером?
ITCrowd - Почему и как я стал фрилансером?
 
ITCrowd - Правильная структура лендинга
ITCrowd - Правильная структура лендингаITCrowd - Правильная структура лендинга
ITCrowd - Правильная структура лендинга
 

Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта

  • 3. Кто здесь? ● Максим, администратор серверных систем ● Отвечаю за производительность ● Состою в скромной команде архитекторов ● Холю и лелею инфраструктуру До Колёс: ● много VoIP’а на цисках и линуксах ● линуксы дома, на работе, в отпуске…
  • 4. 2011 год ● 3 разработчика ● 0 админов (аутсорс) ● ~ 12 серверов-десктопов ● 4.5М просмотров ● 260k визитов
  • 5. 9 миллионов 4 сервера: ● 2 процессора ● 48 Гб ОЗУ Хранилка: ● 12 дисков ● 12 ТБ (RAID10) Адская избыточность, высокая надежность, расширяемость, управляемость, печеньки!
  • 6. 2011 год (уиии, блэйд!) ● 3 разработчика ● 0 админов (аутсорс) ● 4 блэйд-сервера ● 5.6M просмотров ● 270к визитов
  • 7. 2012 год, начало ● 3 разработчика ● 1 админ (ура!) ● 4 блэйд-сервера ● ~15 контейнеров OpenVZ ● одна плоская сеть /24
  • 9. OpenVZ Плюсы: ● быстрый ● дерзкий ● как пуля резкий ● 1-3% накладных расходов ● простой, как палка
  • 10. OpenVZ Минусы: ● одно ядро на всех ● «хитрое» управление памятью (MongoDB и JVM передают привет!) ● ФС для контейнеров ● видимость ограничена ● постоянные танцы с бубном вокруг user_beancounters
  • 11. KVM Плюсы: ● полная изоляция ВМ друг от друга и от хоста ● MongoDB и JVM улыбаются и пляшут ● быстрая работа с диском ● видимость всех ресурсов ВМ ● virtio, vhost_net, KSM
  • 12. KVM Минусы: ● сложный ● теоретически медленнее, чем OpenVZ (аппаратная виртуализация спасает) ● мало опыта администрирования и отладки
  • 13. OpenVZ, давай, до свидания! ● Несколько недель не спим ● Переносим контейнеры в ВМ ● … ● PROFIT! P.S. До сих пор KVM ни разу не становился настолько узким местом, чтобы хотелось от него отказаться.
  • 14. Proxmox VE (proxmox.com) ● кластер KVM-серверов ● multimaster ● CLI ● web ● HA ● API
  • 15. Немного про overprovisioning Он же оверселлинг, он же оверсабскрайбинг, он же большая радость хостера и засада клиента: ● позволяет продать больше, чем имеешь ● провоцирует «драку» за ресурсы ● распределение ресурсов становится «тяжелой», но приоритетной задачей ● совершенно нам не подходит
  • 17. Почему же? ● большая коробка — половину в другой ЦОД не отпилишь ● аренда места в ЦОД стоит космических денег ● заполненность на 25% экономически невыгодна ● сэкономили на сетевой части ● недешевый бренд
  • 18. Наш выбор — Supermicro Twin² ● один такой заменит блэйд ● компактный ● производительный ● в 4 раза меньше ● в 2 раза дешевле ● недорогой бренд ● даже с учётом электричества, аренда обходится дешевле
  • 19. GlusterFS ● как NFS, только от Red Hat ● плюшки в виде репликации ● и распределенности ● которые никто не заюзал ● ибо хранилище было одно ● в самом низу — родная ФС (ext3/4, xfs)
  • 20. Что лежало на хранилке Объявления: /mnt/data/live/0007/654/321/data.xml Фотографии: /mnt/data/live/0007/654/321/photos/1/60x45.jpg /mnt/data/live/0007/654/321/photos/1/120x90.jpg /mnt/data/live/0007/654/321/photos/1/400x300.jpg /mnt/data/live/0007/654/321/photos/1/full.jpg ~ 2 ТБ данных к середине 2012-го
  • 21. Цифры ● 10M объявлений ● ~ 10М файлов data.xml ● ~ 40М каталогов для фото ● ~ 160M файлов *.jpg ● ~ 200М объектов ● ~ 50-60 Гб метаданных
  • 24. Проблема Задержки: ● HDD ● сетевая ФС ● ФС как структура вообще ● множественный доступ (кэш не спасёт) ● бэкап данных за неделю длится неделю
  • 25. Решение для объявлений ● Никаких каталогов ● Никаких файлов ● Вкусный JSON вместо XML ● Репликация ● Резервное копирование (с бубном)
  • 26. В итоге ● драматическое падение задержек ● катастрофический прирост производительности ● ещё два года Колёса живут без шардинга
  • 27. Решение для фотографий ● храним объекты ● намного меньше метаданных ● доступ по HTTP ● nginx для кэша и HTTPS ● распределенная система ● избыточно (3 копии данных) ● задержки по-прежнему высоковаты :(
  • 28. Цифры (Swift vs Хранилка) ● стоимость: 30% старой системы ● расходы: на 20% выше ● тройная избыточность ● защита от сбоев ● распределенность
  • 29. Миграция 1. поднимаем новую систему 2. включаем запись в обе системы 3. запускаем перенос данных из старой в новую систему 4. начинаем читать с новой системы 5. дожидаемся окончания переноса 6. ждём «на всякий случай» 7. отключаем старую систему
  • 30. Фотографии (сейчас) ● 2к запросов/сек ● 260 Мбит/сек ● 220 ГБ кэш (memcached) ● кэш спасает, но продолжаем ускоряться ● SSD для метаданных
  • 31. 2013 год ● 5-8 разработчиков ● 1 админ ● 1 тестировщик! ● ~ 150 ВМ Колёса: ● 8.2М просмотров ● 450k визитов Крыша: ● 1.8М просмотров ● 114к визитов
  • 32. 2013 … ● появились мобильные приложения ● доросли до конца года до 1.5М просмотров и 120к визитов ● масштабируемся каждый день ● все хотят в API, а API всех ненавидит ● присутствуем в двух ЦОДах
  • 33. Оптимизация Постоянные «фоновые» задачи: 1. найти узкое место 2. всё переделать 3. перейти к шагу 1
  • 34. Немного уже не узких мест ● CDN для фотографий и статики ○ два ЦОДа ○ балансировка на уровне DNS ● загрузка фото ○ кэш для свежезагруженных изображений ○ фоновый перенос в Swift ● жесткие диски ○ SSD уже не дорого ○ и очень быстро
  • 35. Автоматизация ● серверов всё больше ● конфигурации всё изощрённее ● зависимость A->B->C->D->A ● нужно же что-то делать, Петька!
  • 36. Chef ● сервер управления конфигурацией ● для всех *nix ● пишем рецепты, а оно их исполняет ● только там, где нужно ● попутная инвентаризация ● только pull ● пришлось учить ruby ● программисты смеялись :(
  • 37. Примеры ● добавлять все новые серверы в мониторинг ● установить nginx на серверы группы web ● найти все серверы, с драйвером e1000 и наложить патч
  • 39. 2014-2015 ● 11 разработчиков ● 5 тестировщиков ● 2 админа (ура! ура!) ● ~ 520 ВМ Сайты: ● 11.5М просмотров ● 660к визитов Мобильные приложения: ● 7.5М просмотров ● 250k визитов
  • 40. Что дальше? ● вчерашние паттерны уже антипаттерны ● на горизонте маячит HTTP2 ● оптимизация под dial-up снова в моде ● только теперь 1080p и 4K ● зато даже в самолёте
  • 41. Вопросы? Максим Кравец администратор серверных систем ТОО «Колёса» zeelax@gmail.com skype: zeelax