РИТ++ 2017, HighLoad Junior
Зал Сингапур, 5 июня, 15:00
Тезисы:
http://junior.highload.ru/2017/abstracts/2632.html
Наиболее типичные ошибки, которые совершаются при создании высоконагруженных продуктов: выбор используемых языков, фреймворков, СУБД и других инструментов. Каковы причины совершения этих ошибок, и как их избежать.
Во время проектирования и разработки высоконагруженных программных продуктов существует большой соблазн применить классические подходы. Однако не все они будут полезны, а какие-то даже вредны. При этом цена каждой такой ошибки всегда будет очень большой.
На примере нескольких реальных проектов мы поговорим об ошибках проектирования, разработки и управления, о том, почему они возникли, и о решениях, которые позволили (или не позволили) преодолеть их.
7. Кейс: «Уральский портал»
~2006–2009 гг.
ЦА — все абоненты интернета в уральском регионе (до 10 млн чел).
Цель — замыкание абонентского трафика
Суть — информационно-развлекательный портал
8. Контекст 2006–2007
• Java EE 5
• Spring 2.0
• PHP 5.2
• Symphony, Codeigniter, Zend Framework (первые версии)
• MySQL 5.0
Еще нет: MongoDB (2009), NodeJS (2009), Composer (2012), …
10. «Уральский портал»: архитектура
• Вертикальное масштабирование, IBM zSeries (AIX)
• Сервер приложений IBM Websphere (Java EE); Spring Framework
• СУБД Oracle
• Бекап на ленту
11. «Уральский портал»: результаты
• В пике несколько тысяч пользователей онлайн
• Самый популярный раздел портала — форум
• Сервис закрыт через ~два года после старта
12. «Уральский портал»
~2006–2009 гг.
ЦА — все абоненты интернета в уральском регионе (до 10 млн чел)
Цель — замыкание абонентского трафика
Суть — информационно-развлекательный портал
Ложная цель
22. «Уральский портал»: технические проблемы
• Низкая надежность оборудования
• Медленное восстановление после аварий
• Отсутствие быстрого масштабирования
23. «Уральский портал»: технические проблемы
• Низкая надежность оборудования
• Медленное восстановление после аварий
• Отсутствие быстрого масштабирования
• Прицеп: медленный цикл разработки
26. Корни зла
1. Ложные цели
a. Делаем ненужное
b. Идем не туда
2. Инерция мышления
a. Знакомые инструменты
b. Знакомые паттерны
c. «Синдром утенка»
27. Корни зла
1. Ложные цели
a. Делаем ненужное
b. Идем не туда
2. Инерция мышления
a. Знакомые инструменты
b. Знакомые паттерны
c. «Синдром утенка»
3. Мода
30. Что делать, чтобы избежать ошибок
• НЕ использовать готовые решения и подходы
• НЕ использовать популярные решения
31. Что делать, чтобы избежать ошибок
• НЕ использовать готовые решения и подходы
• НЕ использовать популярные решения
• НЕ использовать очевидные решения
32. Что делать, чтобы избежать ошибок
• НЕ использовать готовые решения и подходы
• НЕ использовать популярные решения
• НЕ использовать очевидные решения
• т. е. ВСЕГДА анализировать принимаемые решения
37. Почему Phalcon?
Источники - https://www.slideshare.net/oleksandrtorosh/phalcon-v2-1-27168312
http://thinking.bohdanvorona.name/phalcon/
38. OneTwoRent: СУБД
База подбирается под задачу, а не задача решается под базу
• Горячие данные MongoDB
• Медленные данные MySQL
• Исторические данные Clickhouse
39. OneTwoRent: СУБД
База подбирается под задачу, а не задача решается под базу
• Горячие данные MongoDB
• Медленные данные MySQL
• Исторические данные Clickhouse
Объем
данных
Частота
обращений
40. OneTwoRent: архитектура
• Сильно денормализованная схема данных
• Отложенная и предварительная обработка
• Многослойное кэширование