Доклад Алексея Строева, технического директора ADV/web-engineering, на секции ADV на Russian Digital Week 2013 (http://conf.tagline.ru/program/7/mgmt-prod-hr). Секция была посвящена повышению качества производимых студиями интернет-проектов.
4. Для чего нужно масштабирование?
• Расширение бизнес-предложений
• Увлечение хранимой информации
• Рост посещаемости
• Расширение спектра возможностей
• …
8. Цель должна оправдывать средства
• Не спешите покупать новый дорогой сервер
• Анализируйте и изолируйте проблемные места
(большие таблицы, тяжелые запросы)
• Решений горизонтального масштабирования БД
несколько — выбирайте оптимальное
• Репликация — не единое доступное решение,
анализируйте проблему
• Шардинг — горизонтально масштабируемое
решение, которое практически не имеет
ограничений, но требует грамотного архитектурного
решения
• Продумайте возможность гибридного решения
(совмещение вертикального шардинга и
репликации)
10. Что это дает?
• Минимальные первоначальные затраты
• Высокая доступность и надежность
• Отсутствие эксплуатационных затрат
• Гибкость IT-инфраструктуры
• Мобильность
16. Рефакторим….
Причины:
– Новый функционал, непредусмотренный
архитектурой
– Необходимо исправить ошибку, причины
возникновения которой сразу не ясны
– Преодоление трудностей в командной
разработке, которые обусловлены сложной
логикой решения
17. Рефакторим….
Признаки:
– Дублирование кода
– Длинный метод
– Большой класс
– Длинный список параметров
– «завистливые» функции — это метод, который
чрезмерно обращается к данным другого
объекта
– Избыточные временные переменные
– Классы данных
– Не сгруппированные данные
18. Закончили рефакторинг
• Цель достигнута – сделать код легче для
понимания
• Удален «мертвый код»
• Готова «почва» для реинжинирнга
• Не забываем оборачивать в unit-тесты
19. Промежуточный итог
• Проект растет…
И начинается
• Масштабирование в ширь (лень)
• Масштабирование в глубь (проще)
21. Чего стоит избегать или типичные
ошибки
• Слепое следование модным на данный момент
трендам и технологиям
• Отсутствие средств мониторинга и планирования
нагрузки
• Принятие решений, основываясь на предыдущем
опыте, абсолютно не связанным с текущим проектом
• Непонимание основных принципов масштабирования
• Масштабирование невозможного
• Single Point of Failure
• Нездоровое стремление использовать
повсюду облачные технологии