Top Banner
Всему своё время Роман Ивлиев, CIO, Банки.ру
42

Всему своё время / Роман Ивлиев (Банки.ру)

Jan 06, 2017

Download

Engineering

Ontico
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Всему своё время / Роман Ивлиев (Банки.ру)

Всему своё время Роман Ивлиев, CIO, Банки.ру

Page 2: Всему своё время / Роман Ивлиев (Банки.ру)

• Тестировщик

• Разработчик

• Руководитель разработчиков

• Руководитель тестировщиков

• Руководитель проектов

• CTO

• CIO

С 2002 года до сих пор

Page 3: Всему своё время / Роман Ивлиев (Банки.ру)

• 11 лет в Интернете;

• в среднем 400К уников в сутки;

• 40 инженеров;

• 70Тб трафика в месяц.

О Банки.ру

Page 4: Всему своё время / Роман Ивлиев (Банки.ру)

О чем мы с вами поговорим

• HighLoad или неHighload?

• Хабрэффект – причина или следствие?

• Про «костыли».

• Когда начинать делать круто?

• Что делать дальше, чтобы не окаменеть.

Page 5: Всему своё время / Роман Ивлиев (Банки.ру)
Page 6: Всему своё время / Роман Ивлиев (Банки.ру)

Highload или неHighload

Так ли ваш проект нагружен?

Page 7: Всему своё время / Роман Ивлиев (Банки.ру)

Как понять, highload у вас или нет?

• Можно ли понять это по числу серверов?

• Можно ли понять это по числу пользователей?

• Можно ли понять это по числу запросов?

• Можно ли понять это по числу строк в БД?

Page 8: Всему своё время / Роман Ивлиев (Банки.ру)

Как понять, highload у вас или нет?

• Сервера справляются с нагрузкой?

• Есть необходимость в масштабировании?

• Надо ли применять «нестандартные» решения?

Page 9: Всему своё время / Роман Ивлиев (Банки.ру)

Хабрэффект

Конец или начало?

Page 10: Всему своё время / Роман Ивлиев (Банки.ру)

Реактивный рост

• Скорее всего это какое-то событие

• Может быть ожидаемый

• Например, реклама

• А может быть случайный

• Например, реакция на пост на Хабре

• Или происки конкурентов

Page 11: Всему своё время / Роман Ивлиев (Банки.ру)
Page 12: Всему своё время / Роман Ивлиев (Банки.ру)

Нужен анализ

• Понятно, что сломалось первым?

• Почему произошёл рост?

• Есть шансы, что это повторится?

• Что можно сделать сейчас, чтобы выстоять?

Page 13: Всему своё время / Роман Ивлиев (Банки.ру)

«Костыли»

Или высокотехнологичное решение ?

Page 14: Всему своё время / Роман Ивлиев (Банки.ру)

Костыль

• Это не всегда плохо;

• Это «быстро» решает задачу, НО

• Не всегда ловко;

• Не всегда технологично;

• Почти всегда в нарушение процессов (если они есть);

• Теперь вы должны.

Page 15: Всему своё время / Роман Ивлиев (Банки.ру)

Технологичное решение

• Это ловко (чаще всего);

• Технологично (чаще всего);

• Без нарушения процессов (чаще всего), НО

• Не всегда быстро;

• Не всегда вовремя.

Page 16: Всему своё время / Роман Ивлиев (Банки.ру)

Один из алгоритмов:

• Имеет место:

• Горит?

• Нужен Proof Of Concept?

• Шэф психанул?

• Прочие факторы ускорения

• Костыль!

• Сняли боль, но не вылечили проблему

• Или вылечили

Page 17: Всему своё время / Роман Ивлиев (Банки.ру)

Когда нужно начинать?

Или когда можно начинать?

Page 18: Всему своё время / Роман Ивлиев (Банки.ру)

Как искать точку начала перемен?

• Мониторинг с первого дня проекта

• Аналитика с первого дня проекта

Page 19: Всему своё время / Роман Ивлиев (Банки.ру)

Рост нагрузки редко бывает линейным

• Вот так

• 10usr = 10%CPU

• 20usr =20%CPU

• ….

• 100usr=100%CPU

• не бывает почти никогда

Page 20: Всему своё время / Роман Ивлиев (Банки.ру)

Рост нагрузки редко бывает линейным

• Может случиться вот так

• 100usr = 10%CPU

• 200usr=100%CPU

• Или вот так:

• 10usr=10%CPU

• 200usr=10%CPU, но 100% IO

Page 21: Всему своё время / Роман Ивлиев (Банки.ру)

Можно найти закономерности?

• Безусловно да, но не всегда вы угадаете

• Дисковое пространство? - скорее всего да

• Поведение СУБД? – скорее всего да

• IO, CPU, Net – очень примерно

• Помните, что есть про профиль нагрузки

Page 22: Всему своё время / Роман Ивлиев (Банки.ру)
Page 23: Всему своё время / Роман Ивлиев (Банки.ру)

Можно найти закономерности?

• Безусловно да, но не всегда вы угадаете

• Дисковое пространство? - скорее всего да

• Поведение СУБД? – скорее всего да

• IO, CPU, Net – очень примерно

• Помните про профиль нагрузки

• Бойтесь «среднего»

Page 24: Всему своё время / Роман Ивлиев (Банки.ру)
Page 25: Всему своё время / Роман Ивлиев (Банки.ру)

Преждевременная оптимизация

• Возможно, вы угадаете;

• Но может быть иначе

• Лучше потратить время на

• Автоматизацию;

• Мониторинг;

• Работу с технодолгом.

Page 26: Всему своё время / Роман Ивлиев (Банки.ру)

Компонентная оптимизация

• Вместо «прокачки» всей системы;

• Анализируем узкие места;

• Исследуем возможность улучшения;

• Улучшаем.

Page 27: Всему своё время / Роман Ивлиев (Банки.ру)

Время и деньги

• Наверняка есть бюджет;

• Наверняка есть ограничение по людям;

• Наверняка у шэфа есть дэдлайн;

Page 28: Всему своё время / Роман Ивлиев (Банки.ру)

Есть ли лёгкий способ?

«Список Бунина» подойдёт?

Page 29: Всему своё время / Роман Ивлиев (Банки.ру)

Список «Бунина»?

• Сервисно-ориентированная архитектура;

• Вертикальное масштабирование;

• Горизонтальное масштабирование;

• Отложенные вычисления;

• Асинхронная обработка;

• Конвейерная обработка;

• Использование толстого клиента;

• Кеширование;

• Функциональное разделение;

• Шардинг;

• Виртуальные шарды;

• Центральный диспетчер;

• Репликация;

• Партиционирование;

• Кластеризация;

• Денормализация;

• Введение избыточности;

• Нереляционные СУБД;

• Параллельное выполнение

• И так далее….

Page 30: Всему своё время / Роман Ивлиев (Банки.ру)
Page 31: Всему своё время / Роман Ивлиев (Банки.ру)

Список «Бунина»?

• 20+ паттернов разработки и проектирования

• Из них часть реально можно сделать на коленке

• Из них ещё часть никогда не будут нужны в вашем проекте

• Из них часть никогда не будут нужны во всех ваших проектах

Page 32: Всему своё время / Роман Ивлиев (Банки.ру)

Важно помнить

• Нет стандарта на разработку высоконагруженных систем;

• Не всё нужно здесь и сейчас;

• Иногда простое решение самое эффективное;

• То, что сделал Badoo, наверняка не для вас;

• Hype – бойтесь его.

Page 33: Всему своё время / Роман Ивлиев (Банки.ру)

Hype – это

• Интересно (почти всегда);

• Полезно (почти всегда);

• Риски (всегда!)

• Много новой документации;

• Проект может закрыться;

• Баги продукта станут вашими проблемами;

• Поддержка стоит денег и времени;

• Сложности поиска людей;

• Зоопарк.

Page 34: Всему своё время / Роман Ивлиев (Банки.ру)

Как работать с тех.долгом?

Планомерно достаём «костыли»

Page 35: Всему своё время / Роман Ивлиев (Банки.ру)

Работа с тех.долгом

• 1 «костыль» = 1 задача в долг;

• Долг – полноправный участник планирования;

• Долг - полноправный по приоритетам;

• Регулярный просмотр и актуализация долга;

Page 36: Всему своё время / Роман Ивлиев (Банки.ру)

Важно!

• Время не на вашей стороне;

• Технологии не на вашей стороне;

• Бизнес не на вашей стороне;

• Вас ждёт «технический дефолт».

Page 37: Всему своё время / Роман Ивлиев (Банки.ру)

Заключение

Необходимость и достаточность

Page 38: Всему своё время / Роман Ивлиев (Банки.ру)
Page 39: Всему своё время / Роман Ивлиев (Банки.ру)

Двигайтесь вперёд

• Следите за системой;

• Изучайте узкие места;

• Оценивайте риски;

• Пробуйте на кошках;

• Внедряйте.

Page 40: Всему своё время / Роман Ивлиев (Банки.ру)

Прикрывайте тыл

• Стабильность;

• Прозрачность;

• Гибкость;

• Свежие версии того, что вы уже используете.

Page 41: Всему своё время / Роман Ивлиев (Банки.ру)

«Слова вы услышали, поиск пути за вами» Уильям Деминг

Page 42: Всему своё время / Роман Ивлиев (Банки.ру)

С удовольствием отвечу на Ваши вопросы

@dumtest

[email protected]

roman.ivliyev