Экономика отказоустойчивости веб-проектов Александр Демидов «1С-Битрикс» #FailOverConf
Разные классы сайтов и веб- сервисов: Домашние странички, личные блоги и т.п. «Продающие» сайты (интернет-магазины) Имиджевые сайты (в том числе и корпоративные) «Business critical application» - веб- сервисы, использующиеся в работе (CRM, учет, таск-менеджмент, почта и т.п.) Разные стадии проекта: Инвестиции, развитие Выход на операционную прибыль А нужна ли отказоустойчивость?
Почему сайт должен быть всегда доступен? Клиенты и их лояльность (сайт недоступен – потеряны заказы). $ 237 млн. – оборот за 2012 год (по данным Digital Guru) До $ 1 млн. в день – с учетом выходных, праздников Более $ (1.3 млн. руб.) – один час возможного простоя
Почему сайт должен быть всегда доступен? Индексация сайта поисковыми роботами Если сайт при сбое будет отдавать не 50x код, а, например, 200 или 404 – будет проиндексирован его текущий контент (сообщение об ошибке) Частота переиндексации зависит от многих факторов. Возьмем условно 5 дней для относительно популярного интернет-магазина. 60% траффика интернет-магазина – поиск (конверсия 0.5 %), 40% остального траффика – средняя конверсия 1.1% (исследование Webprofiters) Несложная математика: около 40% заказов – из поиска Вы готовы 5 дней (и более) получать на 40% меньше заказов?
Почему сайт должен быть всегда доступен? Финансовые потери во время рекламных компаний – вы платите за «холостые» клики Стоимость контекстной рекламы Даже если сайт доступен, но работает медленно, его позиции в результатах поиска будут ниже (учет поведенческих факторов)
Интернет-каналы DNS Серверы Диски Датацентры Отказы инфраструктуры
Спасет ли SLA провайдера? Ни один SLA не покроет вашу упущенную выгоду (прибыль), только расходы на хостинг Наиболее часто встречается гарантия 99.9% доступности в SLA Это – около 9 часов простоя в год Небольшие слоты (до 5 минут) никто не считает Ребут сервера, скорее всего, не попадает под SLA. А если это база данных, она может стартовать несколько часов после аварийного завершения.
Web 1 Elastic Load Balancing Web N … CloudWatch + AutoScaling Web 1 Web 2 Web N … CloudWatch + AutoScaling «Хитрости» SLA S3 control cache: memcached mysqld master-master replication mysqld control cache: memcached Web 2 $25 / месяц $5000 / месяц
Веб-сервер 1 memcached 1 Веб-сервер 2 memcached 1 MySQL master MySQL slave Веб-кластер
«Узкие» места
Балансировщик (клиентские запросы по HTTP) Веб-сервер 1 memcached 1 Веб-сервер 2 memcached 1 MySQL master MySQL slave Ручные операции для восстановления masterа MySQL или другой СУБД
База данных MySQL MASTER База данных MySQL SLAVE 1 База данных MySQL SLAVE N База данных MySQL SLAVE … SQL-балансировщик Высокие требования к сети, связность серверов друг с другом
Балансировщик (клиентские запросы по HTTP) Веб-сервер 1 memcached 1 Веб-сервер 2 memcached 1 MySQL master MySQL slave Аварии на уровне целого датацентра или интернет-канала
Elastic Load Balancing Web 1 Elastic Load Balancing Web N … CloudWatch + AutoScaling Web 1 Web 2 Web N … CloudWatch + AutoScaling Резервирование на уровне ДЦ control cache: memcached mysqld master-master replication mysqld control cache: memcached Web 2 Чтобы избежать «холостой» работы половины ресурсов, каждый ДЦ обслуживает свою группу клиентов
Не бывает «почти круглосуточно» Технические работы должны проходить незаметно для клиентов: Сервисные работы Замена оборудования Обновления системного ПО Обновления приложений
Посчитаем стоимость «новой ИТ-системы» Оборот за 2012 год - $132 млн. (Digital Guru) 7 суток простоя – около $2.5 млн. А что с поиском?
Real Time мониторинг – как узнавать о проблемах? Можно – так…
Real Time мониторинг – как узнавать о проблемах? Или – так…
С чего начать? Внешние системы: Яндекс.Метрика И т.д. Зачастую можно найти бесплатные варианты. Вы быстро узнаете об отказах, но не будете знать, где они произошли и почему.
Организация системы мониторинга Дежурная смена и/или мгновенные уведомления (да, это будет стоить дополнительных денег). Необходимо автоматизировать типовые действия при авариях. Иначе сайт будет простаивать до реакции админа. Мониторить – всё. Необходимо составить список всех критических точек в системе и отслеживать их состояние. Мониторить не только состояние серверов – сроки регистрации доменов, SSL сертификатов и т.п.
18 февраля 2013 Оборот за 2012 год - $379 млн. До суток простоя – более $1 млн.
Аналитика – со стороны пользователя Гистограммы распределения времени хитов, кодов ответа и т.п. – из логов (awk-скрипт), pinba или других инструментов Мало знать «среднюю температуру по больнице» и мониторить только главную страницу сайта
Ключевые страницы – не только доступные, но и быстрые Замедление загрузки страницы на 1 секунду снижает конверсию на 7%, а количество просмотров - на 11%.
Исследование Strategic Research Institute 30% предпринимателей после утраты данных прекращают предпринимательскую деятельность в течение года. 60% предпринимателей, потерявших ВСЕ данные, прекращают предпринимательскую деятельность в течение 6 месяцев после этого. Не забывайте «сохраняться»
Резюме Ваш сайт должен быть максимально доступен – в разумных пределах Резервируйте критичные узлы – исходя из необходимости и экономики Важно не только запустить проект, но и грамотно его эксплуатировать – иметь систему мониторинга Доступность проекта зависит не только от инфраструктуры, но и от кода, внешних сервисов и т.п. Имейте резервные копии и умейте быстро из них восстанавливаться
Спасибо за внимание! Вопросы? Александр Демидов