Преждевременная оптимизация архитектуры / Евгений...
TRANSCRIPT
Преждевременная оптимизация архитектуры
Евгений ПотаповАнтон Баранов
Евгений ПотаповITSumma, генеральный директор
15 лет опыта системного администрирования
Компания основана в 2008 году
О нас
О насАнтон БарановITSumma, начальник отдела по работе с клиентами
В прошлом - системный администратор Linux.
Более 7 лет опыта работы с Linux-системами и web-проектами различной сложности.
Последние три года тружусь над обеспечением стабильной работы highload-проектов для посетителей со всего мира.
• Работаем с 2008 года• Штат 60 человек• Офисы в Иркутске,
Санкт-Петербурге и Москве• Более 200 клиентов• 100 активных чатов в
день• 150000 оповещений в
месяц
ITSumma
Откуда берется беда?
Главные причины аварий•Ошибки в работе, связанные с новыми версиями приложения
Главные причины аварий•Ошибки в работе, связанные с новыми версиями приложения•Проблемы, связанные с ростом нагрузки и масштабированием
Главные причины аварий•Ошибки в работе, связанные с новыми версиями приложения•Проблемы, связанные с ростом нагрузки и масштабированием•Аварии, связанные с ошибками планирования архитектуры проекта
Ошибки планирования архитектуры
Ошибки планирования архитектуры•Новые решения создают дополнительную
сложность
Ошибки планирования архитектуры•Новые решения создают дополнительную
сложность• Сложность уменьшает надежность эксплуатации
Ошибки планирования архитектуры•Новые решения создают дополнительную
сложность• Сложность уменьшает надежность эксплуатации• Закон Луссера
Закон Луссера
надёжность ракеты равна произведению надёжности всех компонентов, а не надёжности самого ненадёжного элемента
Закон Луссера
Причины создания сложности•Решение для данной проблемы уникальное
Причины создания сложности•Решение для данной проблемы уникальное•О существующем решении не известно
Причины создания сложности•Решение для данной проблемы уникальное•О существующем решении не известно•Решение известно, но оно неинтересное
Небольшой проект
Ожидаемая посещаемость после старта проекта
3000 – 5000 RPS
Небольшой проект«Облако – это очень надежно»
Падения Amazon Web Services:21 апреля 2011 года: US East – 53 часа7 августа 2011 года: EU West – 36 часов29 июня 2012 года: US East – 7 часов20 сентября 2015 года: US East – 5 часов4 июня 2016 года: AWS Sydney – 5 часов
Небольшой проект«Облако масштабируется»Большинство хостингов в РФ – 12 ядер, максимум 24 – дальше – горизонтальное масштабирование
Небольшой проектПроще и надежнее железного сервера ничего нет
Небольшой проект…но и там бывают проблемыГоризонтальное масштабирование и резервирование проекта:•Балансировка web-инстансов•Балансировка нагрузки на БД
Небольшой проект
Проект T: резервные инстансы находятся на одних и тех же физических серверах
Небольшой проектРезервирование•Резервная площадка должна быть в другом ЦОДе•Виртуализация добавляет осложнений•Резерв это не бэкап
Распределение нагрузки между БД
Проект Х: пост не успевает появиться в списке после создания записи
Небольшой проектЗа чем следить:•Мониторинг статуса реплики•Мониторинг отставания репликации•Мониторинг консистентности репликации
синхронная репликация не панацея
Несколько web-серверов – единый балансировщик
Проект F: падение балансировщика приводит к падению всего проекта
Несколько web-серверов – единый балансировщик
Проект F: падение узла без failover портит весь трафик (а не треть)
Небольшой проектНесколько web-серверов – общие данные – NFS•Простое, понятное решение•Нет проблем с синхронизацией данных•Понятная настройка
Небольшой проектПроблемы с NFS:•Сбой связи между NFS-сервером и web-сервером•Восстановление работоспособности требует перезагрузки
Небольшой проектДеплой•Git pull – неинтересно•CI – очень интересно
Небольшой проектДеплой•CI – необходим контроль информационной схемы•CI – overhead на внедрение•CI – дополнительная сложность во время деплоя
Средний проектВыбор замены для NFS:CEPH? Слишком сложно, а для конфигурирования, нет времени- MOOSEFS!
Средний проектMooseFS•Всё идеально, но…
Средний проектMooseFS•Сбой по питанию
Средний проект
Средний проектВыбор решения для хранения данных - вопрос открытый
Средний проектОшибки системы деплоя:•Различие dev и prod баз данных по количеству данных
Средний проектОшибки системы деплоя:•Различие dev и prod баз данных по количеству данных•Не учитывается нагрузка на prod
Средний проектОшибки системы деплоя:•Различие dev и prod баз данных по количеству данных•Не учитывается нагрузка на prod•Разные конфигурации ПО dev и prod серверов
Средний проектОшибки системы деплоя:•Различие dev и prod баз данных по количеству данных•Не учитывается нагрузка на prod•Разные конфигурации ПО dev и prod серверов•Разное «железо» у stage и prod
Высокая нагрузка на БД
Средний проектНа что надеемся?•Апгрейд «железа» вместо оптимизации запросов к БД
Средний проектНа что надеемся?•Апгрейд «железа» вместо оптимизации запросов к БД•«Тюнинг сервера»
Средний проектНа что надеемся?•Апгрейд «железа» вместо оптимизации запросов к БД•«Тюнинг сервера»•Переход на другую БД
Средний проект•Сбор статистики и анализ долгих запросов
Средний проект•Сбор статистики и анализ долгих запросов•Сбор статистики по числу запросов
Средний проект•Сбор статистики и анализ долгих запросов•Сбор статистики по числу запросов•Кластеризация данных
Крупный проект•Любовь к новым технологиям и «построению архитектур»•Безоговорочная вера в автоматизацию•Отсутствие регулярных аудитов производительности
Крупный проект«Любовь к новым технологиям»•«мы хотим как-то использовать докер и консул в своем проекте»
Крупный проект«Любовь к новым технологиям»•«мы хотим как-то использовать докер и консул в своем проекте»•«обновление конфигурации только через chef»
Крупный проект«Любовь к новым технологиям»•«мы хотим как-то использовать докер и консул в своем проекте»•«обновление конфигурации только через chef»•«давайте сделаем кластер»
Крупный проект«Любовь к новым технологиям» - как жить?•Нельзя использовать технологии ради технологий•Простые действия становятся сложными – об этом
надо помнить
Крупный проектВера в автоматизацию•«Наш кластер будет отказоустойчивым»
Крупный проектВера в автоматизацию•«Наш кластер будет отказоустойчивым»•«Оно само перебалансируется в случае аварии»
Крупный проектВера в автоматизацию•«Наш кластер будет отказоустойчивым»•«Оно само перебалансируется в случае аварии»•«Наш стек технологий полностью исключает такую
ситуацию»
Вера в автоматизацию - как жить?
Крупный проектНе забываем про оптимизацию:•1 страница – 8000 запросов к SQL•Частые деплои – отсутствие профилирования•Отсутствует регулярный аудит производительности
Бомба замедленного действия:
Проект К: рост нагрузки на CPU не пропорционален росту траффика
Бомба замедленного действия:
Проект К: каждый деплой немного увеличивает время ответа
Вместо выводов•Не все новое – хорошее
Вместо выводов•Не все новое – хорошее•Не все интересное – нужное
Вместо выводов•Не все новое – хорошее•Не все интересное – нужное•Не все крутое – полезное
Вместо выводов•Не все новое – хорошее•Не все интересное – нужное•Не все крутое – полезное•Во многой мудрости много печали
Евгений Потаповhttp://facebook.com/eapotapov
Антон Баранов
https://www.facebook.com/anton.s.baranov
http://itsumma.ru
Вопросы?