SlideShare une entreprise Scribd logo
1  sur  42
Всему своё время
Роман Ивлиев, CIO, Банки.ру
• Тестировщик
• Разработчик
• Руководитель разработчиков
• Руководитель тестировщиков
• Руководитель проектов
• CTO
• CIO
С 2002 года до сих пор
• 11 лет в Интернете;
• в среднем 400К уников в сутки;
• 40 инженеров;
• 70Тб трафика в месяц.
О Банки.ру
О чем мы с вами поговорим
• HighLoad или неHighload?
• Хабрэффект – причина или следствие?
• Про «костыли».
• Когда начинать делать круто?
• Что делать дальше, чтобы не окаменеть.
Highload или неHighload
Так ли ваш проект нагружен?
Как понять, highload у вас или нет?
• Можно ли понять это по числу серверов?
• Можно ли понять это по числу пользователей?
• Можно ли понять это по числу запросов?
• Можно ли понять это по числу строк в БД?
Как понять, highload у вас или нет?
• Сервера справляются с нагрузкой?
• Есть необходимость в масштабировании?
• Надо ли применять «нестандартные» решения?
Хабрэффект
Конец или начало?
Реактивный рост
• Скорее всего это какое-то событие
• Может быть ожидаемый
• Например, реклама
• А может быть случайный
• Например, реакция на пост на Хабре
• Или происки конкурентов
Нужен анализ
• Понятно, что сломалось первым?
• Почему произошёл рост?
• Есть шансы, что это повторится?
• Что можно сделать сейчас, чтобы выстоять?
«Костыли»
Или высокотехнологичное решение ?
Костыль
• Это не всегда плохо;
• Это «быстро» решает задачу, НО
• Не всегда ловко;
• Не всегда технологично;
• Почти всегда в нарушение процессов (если они есть);
• Теперь вы должны.
Технологичное решение
• Это ловко (чаще всего);
• Технологично (чаще всего);
• Без нарушения процессов (чаще всего), НО
• Не всегда быстро;
• Не всегда вовремя.
Один из алгоритмов:
• Имеет место:
• Горит?
• Нужен Proof Of Concept?
• Шэф психанул?
• Прочие факторы ускорения
• Костыль!
• Сняли боль, но не вылечили проблему
• Или вылечили
Когда нужно начинать?
Или когда можно начинать?
Как искать точку начала перемен?
• Мониторинг с первого дня проекта
• Аналитика с первого дня проекта
Рост нагрузки редко бывает линейным
• Вот так
• 10usr = 10%CPU
• 20usr =20%CPU
• ….
• 100usr=100%CPU
• не бывает почти никогда
Рост нагрузки редко бывает линейным
• Может случиться вот так
• 100usr = 10%CPU
• 200usr=100%CPU
• Или вот так:
• 10usr=10%CPU
• 200usr=10%CPU, но 100% IO
Можно найти закономерности?
• Безусловно да, но не всегда вы угадаете
• Дисковое пространство? - скорее всего да
• Поведение СУБД? – скорее всего да
• IO, CPU, Net – очень примерно
• Помните, что есть про профиль нагрузки
Можно найти закономерности?
• Безусловно да, но не всегда вы угадаете
• Дисковое пространство? - скорее всего да
• Поведение СУБД? – скорее всего да
• IO, CPU, Net – очень примерно
• Помните про профиль нагрузки
• Бойтесь «среднего»
Преждевременная оптимизация
• Возможно, вы угадаете;
• Но может быть иначе
• Лучше потратить время на
• Автоматизацию;
• Мониторинг;
• Работу с технодолгом.
Компонентная оптимизация
• Вместо «прокачки» всей системы;
• Анализируем узкие места;
• Исследуем возможность улучшения;
• Улучшаем.
Время и деньги
• Наверняка есть бюджет;
• Наверняка есть ограничение по людям;
• Наверняка у шэфа есть дэдлайн;
Есть ли лёгкий способ?
«Список Бунина» подойдёт?
Список «Бунина»?
• Сервисно-ориентированная
архитектура;
• Вертикальное масштабирование;
• Горизонтальное масштабирование;
• Отложенные вычисления;
• Асинхронная обработка;
• Конвейерная обработка;
• Использование толстого клиента;
• Кеширование;
• Функциональное разделение;
• Шардинг;
• Виртуальные шарды;
• Центральный диспетчер;
• Репликация;
• Партиционирование;
• Кластеризация;
• Денормализация;
• Введение избыточности;
• Нереляционные СУБД;
• Параллельное выполнение
• И так далее….
Список «Бунина»?
• 20+ паттернов разработки и проектирования
• Из них часть реально можно сделать на
коленке
• Из них ещё часть никогда не будут нужны в
вашем проекте
• Из них часть никогда не будут нужны во всех
ваших проектах
Важно помнить
• Нет стандарта на разработку высоконагруженных
систем;
• Не всё нужно здесь и сейчас;
• Иногда простое решение самое эффективное;
• То, что сделал Badoo, наверняка не для вас;
• Hype – бойтесь его.
Hype – это
• Интересно (почти всегда);
• Полезно (почти всегда);
• Риски (всегда!)
• Много новой документации;
• Проект может закрыться;
• Баги продукта станут вашими проблемами;
• Поддержка стоит денег и времени;
• Сложности поиска людей;
• Зоопарк.
Как работать с тех.долгом?
Планомерно достаём «костыли»
Работа с тех.долгом
• 1 «костыль» = 1 задача в долг;
• Долг – полноправный участник планирования;
• Долг - полноправный по приоритетам;
• Регулярный просмотр и актуализация долга;
Важно!
• Время не на вашей стороне;
• Технологии не на вашей стороне;
• Бизнес не на вашей стороне;
• Вас ждёт «технический дефолт».
Заключение
Необходимость и достаточность
Двигайтесь вперёд
• Следите за системой;
• Изучайте узкие места;
• Оценивайте риски;
• Пробуйте на кошках;
• Внедряйте.
Прикрывайте тыл
• Стабильность;
• Прозрачность;
• Гибкость;
• Свежие версии того, что вы уже используете.
«Слова вы услышали, поиск пути за вами»
Уильям Деминг
С удовольствием отвечу на Ваши вопросы
@dumtest
roman@ivliev.info
roman.ivliyev

Contenu connexe

Tendances

Куда катится PHP, а также про Yii и другие фреймворки / Александр Макаров (St...
Куда катится PHP, а также про Yii и другие фреймворки / Александр Макаров (St...Куда катится PHP, а также про Yii и другие фреймворки / Александр Макаров (St...
Куда катится PHP, а также про Yii и другие фреймворки / Александр Макаров (St...Ontico
 
ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...
ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...
ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...Ontico
 
как инженерные практики помогают экономить бизнесу
как инженерные практики помогают экономить бизнесукак инженерные практики помогают экономить бизнесу
как инженерные практики помогают экономить бизнесуAndrey Rebrov
 
Когда код «убивает», или зачем нам тестировать наши продукты
Когда код «убивает», или зачем  нам тестировать наши продуктыКогда код «убивает», или зачем  нам тестировать наши продукты
Когда код «убивает», или зачем нам тестировать наши продуктыОлег Стрекаловский
 
DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...
DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...
DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...Dakiry
 
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
2013-03-02 02 Дмитрий Пашкевич. Код на стероидахОмские ИТ-субботники
 
Тестировщик в стартапе. Зачем и как
Тестировщик в стартапе. Зачем и какТестировщик в стартапе. Зачем и как
Тестировщик в стартапе. Зачем и какSQALab
 
Быстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием PythonБыстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием Pythonautomated-testing.info
 
Фреймворк для регрессионного тестирования на основе WebDriver
Фреймворк для регрессионного тестирования на основе WebDriverФреймворк для регрессионного тестирования на основе WebDriver
Фреймворк для регрессионного тестирования на основе WebDriverautomated-testing.info
 
Пользователи в помощь тестировщику
Пользователи в помощь тестировщикуПользователи в помощь тестировщику
Пользователи в помощь тестировщикуRina Uzhevko
 
Experience report: внедрение Scrum на чужбине
Experience report: внедрение Scrum на чужбинеExperience report: внедрение Scrum на чужбине
Experience report: внедрение Scrum на чужбинеReturn on Intelligence
 
Доклад Очира Абушинова на встрече клубе MSTC (17/05/2014)
Доклад Очира Абушинова на встрече клубе MSTC (17/05/2014)Доклад Очира Абушинова на встрече клубе MSTC (17/05/2014)
Доклад Очира Абушинова на встрече клубе MSTC (17/05/2014)Rina Uzhevko
 
Бумажное прототипирование
Бумажное прототипированиеБумажное прототипирование
Бумажное прототипированиеMaxim Gaponov
 
Creating Open Source Projects
Creating Open Source ProjectsCreating Open Source Projects
Creating Open Source ProjectsAlexei Yuzhakov
 
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU
 
Правила отбора: как отобрать правильных тестировщиков в свою команду
Правила отбора: как отобрать правильных тестировщиков в свою командуПравила отбора: как отобрать правильных тестировщиков в свою команду
Правила отбора: как отобрать правильных тестировщиков в свою командуSQALab
 
Как тестировщику выжить в стартапе
Как тестировщику выжить в стартапе Как тестировщику выжить в стартапе
Как тестировщику выжить в стартапе SQALab
 
Юрий Цыганенко
Юрий ЦыганенкоЮрий Цыганенко
Юрий ЦыганенкоSQALab
 

Tendances (20)

Куда катится PHP, а также про Yii и другие фреймворки / Александр Макаров (St...
Куда катится PHP, а также про Yii и другие фреймворки / Александр Макаров (St...Куда катится PHP, а также про Yii и другие фреймворки / Александр Макаров (St...
Куда катится PHP, а также про Yii и другие фреймворки / Александр Макаров (St...
 
ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...
ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...
ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...
 
как инженерные практики помогают экономить бизнесу
как инженерные практики помогают экономить бизнесукак инженерные практики помогают экономить бизнесу
как инженерные практики помогают экономить бизнесу
 
Когда код «убивает», или зачем нам тестировать наши продукты
Когда код «убивает», или зачем  нам тестировать наши продуктыКогда код «убивает», или зачем  нам тестировать наши продукты
Когда код «убивает», или зачем нам тестировать наши продукты
 
DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...
DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...
DaKiRY_BAQ2016_QADay_Круглий стіл: "Чи помре ручне тестування з часом" Учасни...
 
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
 
Тестировщик в стартапе. Зачем и как
Тестировщик в стартапе. Зачем и какТестировщик в стартапе. Зачем и как
Тестировщик в стартапе. Зачем и как
 
Быстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием PythonБыстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием Python
 
Фреймворк для регрессионного тестирования на основе WebDriver
Фреймворк для регрессионного тестирования на основе WebDriverФреймворк для регрессионного тестирования на основе WebDriver
Фреймворк для регрессионного тестирования на основе WebDriver
 
Пользователи в помощь тестировщику
Пользователи в помощь тестировщикуПользователи в помощь тестировщику
Пользователи в помощь тестировщику
 
Experience report: внедрение Scrum на чужбине
Experience report: внедрение Scrum на чужбинеExperience report: внедрение Scrum на чужбине
Experience report: внедрение Scrum на чужбине
 
Доклад Очира Абушинова на встрече клубе MSTC (17/05/2014)
Доклад Очира Абушинова на встрече клубе MSTC (17/05/2014)Доклад Очира Абушинова на встрече клубе MSTC (17/05/2014)
Доклад Очира Абушинова на встрече клубе MSTC (17/05/2014)
 
Бумажное прототипирование
Бумажное прототипированиеБумажное прототипирование
Бумажное прототипирование
 
Creating Open Source Projects
Creating Open Source ProjectsCreating Open Source Projects
Creating Open Source Projects
 
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
Tech Talks @NSU: Рассказ о разных профессиях в IT-индустрии, или почему не вс...
 
User Story Canvas
User Story CanvasUser Story Canvas
User Story Canvas
 
Правила отбора: как отобрать правильных тестировщиков в свою команду
Правила отбора: как отобрать правильных тестировщиков в свою командуПравила отбора: как отобрать правильных тестировщиков в свою команду
Правила отбора: как отобрать правильных тестировщиков в свою команду
 
Как тестировщику выжить в стартапе
Как тестировщику выжить в стартапе Как тестировщику выжить в стартапе
Как тестировщику выжить в стартапе
 
Pretotyping
PretotypingPretotyping
Pretotyping
 
Юрий Цыганенко
Юрий ЦыганенкоЮрий Цыганенко
Юрий Цыганенко
 

Similaire à Всему своё время Highload Junior 2016

CodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
CodeFest 2012. Аксёнов А. — Как мы разрабатываем SphinxCodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
CodeFest 2012. Аксёнов А. — Как мы разрабатываем SphinxCodeFest
 
RTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwordsRTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwordsDaniel Podolsky
 
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)
RTB DSP на языке Go укрощение buzzwords /  Даниил Подольский (Qmobi.Com)RTB DSP на языке Go укрощение buzzwords /  Даниил Подольский (Qmobi.Com)
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)Ontico
 
Юрий Цыганенко, QA как услуга
Юрий Цыганенко, QA как услугаЮрий Цыганенко, QA как услуга
Юрий Цыганенко, QA как услугаSQADays_2009_Piter
 
Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Ontico
 
Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Ontico
 
Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Ontico
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...IT-Portfolio
 
Опыт выстраивания процесса Product Discovery
Опыт выстраивания процесса Product DiscoveryОпыт выстраивания процесса Product Discovery
Опыт выстраивания процесса Product DiscoveryNikita Efimov
 
Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Ontico
 
Распространенные ошибки применения баз данных
Распространенные ошибки применения баз данныхРаспространенные ошибки применения баз данных
Распространенные ошибки применения баз данныхSergey Xek
 
Роман Еникеев - PHP обязан умирать
Роман Еникеев - PHP обязан умиратьРоман Еникеев - PHP обязан умирать
Роман Еникеев - PHP обязан умиратьDataArt
 
Product discovery. Наши шишки и успехи
Product discovery. Наши шишки и успехиProduct discovery. Наши шишки и успехи
Product discovery. Наши шишки и успехиNikita Efimov
 
CodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest 2011. Макаров А. — Как разрабатывается YiiCodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest 2011. Макаров А. — Как разрабатывается YiiCodeFest
 
SECON'2016. Васильков Василий, Серверное программирование сегодня
SECON'2016. Васильков Василий, Серверное программирование сегодняSECON'2016. Васильков Василий, Серверное программирование сегодня
SECON'2016. Васильков Василий, Серверное программирование сегодняSECON
 
CodeFest 2012. Ивлиев Р. — Аккуратно переезжаем, или тестирование в проектах ...
CodeFest 2012. Ивлиев Р. — Аккуратно переезжаем, или тестирование в проектах ...CodeFest 2012. Ивлиев Р. — Аккуратно переезжаем, или тестирование в проектах ...
CodeFest 2012. Ивлиев Р. — Аккуратно переезжаем, или тестирование в проектах ...CodeFest
 
Мастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииМастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииNikolay Sivko
 
Профессии в IT
Профессии в ITПрофессии в IT
Профессии в ITSam Faktorovich
 
Мой рассказ на Codefest 2015 о том, как мы пережили рост нагрузки
Мой рассказ на Codefest 2015 о том, как мы пережили рост нагрузкиМой рассказ на Codefest 2015 о том, как мы пережили рост нагрузки
Мой рассказ на Codefest 2015 о том, как мы пережили рост нагрузкиRoman Ivliev
 

Similaire à Всему своё время Highload Junior 2016 (20)

CodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
CodeFest 2012. Аксёнов А. — Как мы разрабатываем SphinxCodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
CodeFest 2012. Аксёнов А. — Как мы разрабатываем Sphinx
 
RTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwordsRTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwords
 
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)
RTB DSP на языке Go укрощение buzzwords /  Даниил Подольский (Qmobi.Com)RTB DSP на языке Go укрощение buzzwords /  Даниил Подольский (Qmobi.Com)
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)
 
Юрий Цыганенко, QA как услуга
Юрий Цыганенко, QA как услугаЮрий Цыганенко, QA как услуга
Юрий Цыганенко, QA как услуга
 
Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)
 
Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013
 
Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Грабли при ма...
 
Опыт выстраивания процесса Product Discovery
Опыт выстраивания процесса Product DiscoveryОпыт выстраивания процесса Product Discovery
Опыт выстраивания процесса Product Discovery
 
Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)Распространенные ошибки применения баз данных (Сергей Аверин)
Распространенные ошибки применения баз данных (Сергей Аверин)
 
Распространенные ошибки применения баз данных
Распространенные ошибки применения баз данныхРаспространенные ошибки применения баз данных
Распространенные ошибки применения баз данных
 
Роман Еникеев - PHP обязан умирать
Роман Еникеев - PHP обязан умиратьРоман Еникеев - PHP обязан умирать
Роман Еникеев - PHP обязан умирать
 
Product discovery. Наши шишки и успехи
Product discovery. Наши шишки и успехиProduct discovery. Наши шишки и успехи
Product discovery. Наши шишки и успехи
 
Как разраба
Как разрабаКак разраба
Как разраба
 
CodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest 2011. Макаров А. — Как разрабатывается YiiCodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest 2011. Макаров А. — Как разрабатывается Yii
 
SECON'2016. Васильков Василий, Серверное программирование сегодня
SECON'2016. Васильков Василий, Серверное программирование сегодняSECON'2016. Васильков Василий, Серверное программирование сегодня
SECON'2016. Васильков Василий, Серверное программирование сегодня
 
CodeFest 2012. Ивлиев Р. — Аккуратно переезжаем, или тестирование в проектах ...
CodeFest 2012. Ивлиев Р. — Аккуратно переезжаем, или тестирование в проектах ...CodeFest 2012. Ивлиев Р. — Аккуратно переезжаем, или тестирование в проектах ...
CodeFest 2012. Ивлиев Р. — Аккуратно переезжаем, или тестирование в проектах ...
 
Мастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииМастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатации
 
Профессии в IT
Профессии в ITПрофессии в IT
Профессии в IT
 
Мой рассказ на Codefest 2015 о том, как мы пережили рост нагрузки
Мой рассказ на Codefest 2015 о том, как мы пережили рост нагрузкиМой рассказ на Codefest 2015 о том, как мы пережили рост нагрузки
Мой рассказ на Codefest 2015 о том, как мы пережили рост нагрузки
 

Plus de Roman Ivliev

Точка кипения: проектирование крупных веб-систем
Точка кипения:  проектирование крупных веб-системТочка кипения:  проектирование крупных веб-систем
Точка кипения: проектирование крупных веб-системRoman Ivliev
 
Как мы помогаем тестировщикам делать их работу лучше
Как мы помогаем тестировщикам делать их работу лучшеКак мы помогаем тестировщикам делать их работу лучше
Как мы помогаем тестировщикам делать их работу лучшеRoman Ivliev
 
Темная сторона метрик
Темная сторона метрикТемная сторона метрик
Темная сторона метрикRoman Ivliev
 
Внедрение изменений: рефакторинг Vs реинжиниринг
Внедрение изменений: рефакторинг Vs реинжинирингВнедрение изменений: рефакторинг Vs реинжиниринг
Внедрение изменений: рефакторинг Vs реинжинирингRoman Ivliev
 
Почему почта плохо работает
Почему почта плохо работаетПочему почта плохо работает
Почему почта плохо работаетRoman Ivliev
 
Тренеры и тренинги.
Тренеры и тренинги.Тренеры и тренинги.
Тренеры и тренинги.Roman Ivliev
 
Про построение нагруженных систем
Про построение нагруженных системПро построение нагруженных систем
Про построение нагруженных системRoman Ivliev
 
Аквариум своими руками
Аквариум своими рукамиАквариум своими руками
Аквариум своими рукамиRoman Ivliev
 
Про тестирование миграций
Про тестирование миграцийПро тестирование миграций
Про тестирование миграцийRoman Ivliev
 
Тестирование для программистов
Тестирование для программистовТестирование для программистов
Тестирование для программистовRoman Ivliev
 
Бывает так, что вас нет рядом
Бывает так, что вас нет рядомБывает так, что вас нет рядом
Бывает так, что вас нет рядомRoman Ivliev
 
Qualitative battle for the quantity final
Qualitative battle for the quantity finalQualitative battle for the quantity final
Qualitative battle for the quantity finalRoman Ivliev
 
Heavy metal testing Part 3
Heavy metal testing Part 3Heavy metal testing Part 3
Heavy metal testing Part 3Roman Ivliev
 
Heavy metal testing Part 1 and 2
Heavy metal testing Part 1 and 2Heavy metal testing Part 1 and 2
Heavy metal testing Part 1 and 2Roman Ivliev
 

Plus de Roman Ivliev (15)

Точка кипения: проектирование крупных веб-систем
Точка кипения:  проектирование крупных веб-системТочка кипения:  проектирование крупных веб-систем
Точка кипения: проектирование крупных веб-систем
 
Как мы помогаем тестировщикам делать их работу лучше
Как мы помогаем тестировщикам делать их работу лучшеКак мы помогаем тестировщикам делать их работу лучше
Как мы помогаем тестировщикам делать их работу лучше
 
Темная сторона метрик
Темная сторона метрикТемная сторона метрик
Темная сторона метрик
 
Внедрение изменений: рефакторинг Vs реинжиниринг
Внедрение изменений: рефакторинг Vs реинжинирингВнедрение изменений: рефакторинг Vs реинжиниринг
Внедрение изменений: рефакторинг Vs реинжиниринг
 
Почему почта плохо работает
Почему почта плохо работаетПочему почта плохо работает
Почему почта плохо работает
 
Soa tester view
Soa tester viewSoa tester view
Soa tester view
 
Тренеры и тренинги.
Тренеры и тренинги.Тренеры и тренинги.
Тренеры и тренинги.
 
Про построение нагруженных систем
Про построение нагруженных системПро построение нагруженных систем
Про построение нагруженных систем
 
Аквариум своими руками
Аквариум своими рукамиАквариум своими руками
Аквариум своими руками
 
Про тестирование миграций
Про тестирование миграцийПро тестирование миграций
Про тестирование миграций
 
Тестирование для программистов
Тестирование для программистовТестирование для программистов
Тестирование для программистов
 
Бывает так, что вас нет рядом
Бывает так, что вас нет рядомБывает так, что вас нет рядом
Бывает так, что вас нет рядом
 
Qualitative battle for the quantity final
Qualitative battle for the quantity finalQualitative battle for the quantity final
Qualitative battle for the quantity final
 
Heavy metal testing Part 3
Heavy metal testing Part 3Heavy metal testing Part 3
Heavy metal testing Part 3
 
Heavy metal testing Part 1 and 2
Heavy metal testing Part 1 and 2Heavy metal testing Part 1 and 2
Heavy metal testing Part 1 and 2
 

Всему своё время Highload Junior 2016

  • 1. Всему своё время Роман Ивлиев, CIO, Банки.ру
  • 2. • Тестировщик • Разработчик • Руководитель разработчиков • Руководитель тестировщиков • Руководитель проектов • CTO • CIO С 2002 года до сих пор
  • 3. • 11 лет в Интернете; • в среднем 400К уников в сутки; • 40 инженеров; • 70Тб трафика в месяц. О Банки.ру
  • 4. О чем мы с вами поговорим • HighLoad или неHighload? • Хабрэффект – причина или следствие? • Про «костыли». • Когда начинать делать круто? • Что делать дальше, чтобы не окаменеть.
  • 5.
  • 6. Highload или неHighload Так ли ваш проект нагружен?
  • 7. Как понять, highload у вас или нет? • Можно ли понять это по числу серверов? • Можно ли понять это по числу пользователей? • Можно ли понять это по числу запросов? • Можно ли понять это по числу строк в БД?
  • 8. Как понять, highload у вас или нет? • Сервера справляются с нагрузкой? • Есть необходимость в масштабировании? • Надо ли применять «нестандартные» решения?
  • 10. Реактивный рост • Скорее всего это какое-то событие • Может быть ожидаемый • Например, реклама • А может быть случайный • Например, реакция на пост на Хабре • Или происки конкурентов
  • 11.
  • 12. Нужен анализ • Понятно, что сломалось первым? • Почему произошёл рост? • Есть шансы, что это повторится? • Что можно сделать сейчас, чтобы выстоять?
  • 14. Костыль • Это не всегда плохо; • Это «быстро» решает задачу, НО • Не всегда ловко; • Не всегда технологично; • Почти всегда в нарушение процессов (если они есть); • Теперь вы должны.
  • 15. Технологичное решение • Это ловко (чаще всего); • Технологично (чаще всего); • Без нарушения процессов (чаще всего), НО • Не всегда быстро; • Не всегда вовремя.
  • 16. Один из алгоритмов: • Имеет место: • Горит? • Нужен Proof Of Concept? • Шэф психанул? • Прочие факторы ускорения • Костыль! • Сняли боль, но не вылечили проблему • Или вылечили
  • 17. Когда нужно начинать? Или когда можно начинать?
  • 18. Как искать точку начала перемен? • Мониторинг с первого дня проекта • Аналитика с первого дня проекта
  • 19. Рост нагрузки редко бывает линейным • Вот так • 10usr = 10%CPU • 20usr =20%CPU • …. • 100usr=100%CPU • не бывает почти никогда
  • 20. Рост нагрузки редко бывает линейным • Может случиться вот так • 100usr = 10%CPU • 200usr=100%CPU • Или вот так: • 10usr=10%CPU • 200usr=10%CPU, но 100% IO
  • 21. Можно найти закономерности? • Безусловно да, но не всегда вы угадаете • Дисковое пространство? - скорее всего да • Поведение СУБД? – скорее всего да • IO, CPU, Net – очень примерно • Помните, что есть про профиль нагрузки
  • 22.
  • 23. Можно найти закономерности? • Безусловно да, но не всегда вы угадаете • Дисковое пространство? - скорее всего да • Поведение СУБД? – скорее всего да • IO, CPU, Net – очень примерно • Помните про профиль нагрузки • Бойтесь «среднего»
  • 24.
  • 25. Преждевременная оптимизация • Возможно, вы угадаете; • Но может быть иначе • Лучше потратить время на • Автоматизацию; • Мониторинг; • Работу с технодолгом.
  • 26. Компонентная оптимизация • Вместо «прокачки» всей системы; • Анализируем узкие места; • Исследуем возможность улучшения; • Улучшаем.
  • 27. Время и деньги • Наверняка есть бюджет; • Наверняка есть ограничение по людям; • Наверняка у шэфа есть дэдлайн;
  • 28. Есть ли лёгкий способ? «Список Бунина» подойдёт?
  • 29. Список «Бунина»? • Сервисно-ориентированная архитектура; • Вертикальное масштабирование; • Горизонтальное масштабирование; • Отложенные вычисления; • Асинхронная обработка; • Конвейерная обработка; • Использование толстого клиента; • Кеширование; • Функциональное разделение; • Шардинг; • Виртуальные шарды; • Центральный диспетчер; • Репликация; • Партиционирование; • Кластеризация; • Денормализация; • Введение избыточности; • Нереляционные СУБД; • Параллельное выполнение • И так далее….
  • 30.
  • 31. Список «Бунина»? • 20+ паттернов разработки и проектирования • Из них часть реально можно сделать на коленке • Из них ещё часть никогда не будут нужны в вашем проекте • Из них часть никогда не будут нужны во всех ваших проектах
  • 32. Важно помнить • Нет стандарта на разработку высоконагруженных систем; • Не всё нужно здесь и сейчас; • Иногда простое решение самое эффективное; • То, что сделал Badoo, наверняка не для вас; • Hype – бойтесь его.
  • 33. Hype – это • Интересно (почти всегда); • Полезно (почти всегда); • Риски (всегда!) • Много новой документации; • Проект может закрыться; • Баги продукта станут вашими проблемами; • Поддержка стоит денег и времени; • Сложности поиска людей; • Зоопарк.
  • 34. Как работать с тех.долгом? Планомерно достаём «костыли»
  • 35. Работа с тех.долгом • 1 «костыль» = 1 задача в долг; • Долг – полноправный участник планирования; • Долг - полноправный по приоритетам; • Регулярный просмотр и актуализация долга;
  • 36. Важно! • Время не на вашей стороне; • Технологии не на вашей стороне; • Бизнес не на вашей стороне; • Вас ждёт «технический дефолт».
  • 38.
  • 39. Двигайтесь вперёд • Следите за системой; • Изучайте узкие места; • Оценивайте риски; • Пробуйте на кошках; • Внедряйте.
  • 40. Прикрывайте тыл • Стабильность; • Прозрачность; • Гибкость; • Свежие версии того, что вы уже используете.
  • 41. «Слова вы услышали, поиск пути за вами» Уильям Деминг
  • 42. С удовольствием отвечу на Ваши вопросы @dumtest roman@ivliev.info roman.ivliyev