Александр Сербул Руководитель направления контроля качества интеграции и внедрений Александр Демидов Руководитель направления арендных решений Битрикс HighLoad Опыт разработки, мониторинга и эксплуатации высоконагруженных проектов на 1С-Битрикс
На платформе «1С-Битрикс» можно и нужно разрабатывать крупные проекты
Удобная масштабируемая платформа разработки Компетенция и опыт разработки проектов и консультации: специализированные семинары и вебинары публикации (dev.1c-bitrix.ru, habrahabr.ru и т.п.) личные консультации партнеров услуга «Экспертиза» «1С-Битрикс» - это…
Даже если вы никогда не делали крупных проектов, не бойтесь слова «HighLoad». Определите вместе с заказчиком, что именно ему нужно.
Ваш проект – Highload? Определяют требования заказчика Что такое Highload? Количество хитов в сутки Скорость загрузки главной страницы при указанном количестве хитов Среднее время загрузки всех страниц в сутки Процент страниц с временем загрузки более n сек. Допустимый процент ошибок Допустимое время простоя... Повышенные требования к производительности и отказоустойчивости.
На старте проекта заказчик и разработчик могут не знать, каким он станет, будет ли нагруженным…
HighLoad – это… Немного больше … системности Немного больше … ответственности Кластерные редакции «1С-Битрикс: Управление сайтом» Анализ и управление рисками!
Структура рисков HighLoad проекта Сбора и анализа требований Проектирования Разработки Тестирования Эксплуатации Риски …
Проектирование Делаем краткое ТЗ на «стандарт» Делаем подробное ТЗ на «нестандарт» Прототипы интерфейсов в Axure Сценарии использования: UserStories, UseCases Риск: «Огромное ТЗ» Делаем UML Class, State, Activity Diagrams Делаем Глоссарий Риск: «Запутаться в структуре данных»
Проектирование Храним описания в wiki Храним артефакты в SVN Риск: «Большие сроки – от 6 до 18 мес.» Проектируем инфоблоки, компоненты, страницы Риск: «Запутаться в Битрикс» ООП Система контроля версий Риск: «Запутаться в коде»
Как видим, ничего сложного Стандартный компонент Тщательно проработанное кэширование, оптимизированный код Кастомный модуль Кастомные обработчики событий Компоненты Стандартный компонент Кастомный компонент Модули Стандартный модуль Кастомный модуль Свои таблицы в СУБД Админка Стандартная страница/раздел Кастомная страница/раздел Кастомная форма инфоблока Кастомная форма элемента инфоблока Кастомные типы свойств Кастомный инфоблок Многочисленные настройки и объекты проекта Страница /раздел проекта Публичная часть Страница /раздел проекта Контроллеры ajax Веб-сервисы
Разработка Сертифицируем программистов по курсам Битрикс Используем единый CodeStyle Используем ветки контроля версий Тщательно кэшируем компоненты Риск: «Неоптимальный код»
Процесс разработки Ветка 1 Разработчик 1 Разработчик 2 Разработчик 3 Ветка 2 Ветка 3 Ветка DEV Изменения в ветки DEV/TESTING переносит опытный разработчик Вед. разработчик Серверы разработки Ветка TESTING Ветка PRODUCTION Серверы тестирования Вед. разработчик Тестировщик 1 Тестировщик 2 Серверы в production Сисадмин На «бой» протестированные изменения выкладывает сисадмин.
Тестирование Не нужно все покрывать Unit-тестами Не нужно для всего писать Mock-объекты Ручное тестирование – необходимо и полезно Риск: «Перетестировать» Unit-тесты создаем для сложного функционала Части публички и админки – отдать Selenium Пишем и актуализируем TestCases Риск: «Недотестировать»
Нагрузочное тестирование Нагрузочное тестирование - обязательный этап сдачи проекта. Нагрузочное тестирование является важнейшей процедурой подготовки крупного проекта к открытию. Нагрузочное тестирование позволяет определить предел работоспособности созданного проекта именно на выбранном оборудовании. Зачастую, простые корректировки конфигурации могут ускорить проект в 5-10 раз и сделать его устойчивым к стрессовым нагрузкам.
Нагрузочное тестирование Проводите нагрузочное тестирование на реальных данных с «боевых серверов» Используйте монитор производительности Эмулируйте действия Пользователей на проекте Эмулируйте импорты/экспорты/веб-сервисы Риск: «Нагрузка далека от реальности» Jmeter WAPT httperf ab
Управление проектом Попробуйте Agile/Scrum/XP/Канбан Повесьте доски, уберите стены, посадите людей вместе Социальные инструменты для работы Риск: «Усложнить управление» Проходите все тесты «Монитора качества» Создавайте и используйте свои чеклисты Риск: «Упустить контроль»
Выбираем удобный инструментарий! Media Wiki Excel Redmine Track Confluence Раб. группа: Битрикс24/Корппортал Управление требованиями Redmine Confluence Раб. группа: Битрикс24/Корппортал Track TrackStudio Управление временем, задачами, рисками, документами, проектом Mantis SVN Mercurial Git Bazaar Управление версиями кода
Эксплуатация: выбор инфраструктуры Риски: Взять слишком много и переплатить (не можем заранее спрогнозировать потребление ресурсов) Взять слишком мало и «просесть» по производительности Безопасность (если в штате нет толкового системного администратора) Надежность (как резервировать доступность на уровне датацентра?) Сетевая доступность
Инфраструктура: «Железо» vs. «Облако» - Затраты (время) на обучение сотрудников специфике конкретного сервиса - Ограничения инфраструктуры (аппаратная часть, специфичное ПО) - Сложность расчетов «по потреблению» + Экономия за счет возможности планирования ресурсов + Экономия и отсутствие рисков, связанные с вложениями в инфраструктуру + Моментальное вертикальное и горизонтальное масштабирование + Удобство администрирования + Экономия времени + Дополнительные сервисы
«1С-Битрикс: Виртуальная машина» – это «1С-Битрикс: Веб- окружение Linux» с использованием разных способов виртуализации. Виртуальная машина эмулирует работу реального компьютера и включает в себя: сконфигурированную операционную систему; веб-сервер; базу данных; firewall; почтовый сервер; мастер создания кластера, мастер добавления slave-сервера, мастер переключения slave-сервера в режим master; а также большое число настроек, от которых зависит надежность, производительность и безопасность веб-проекта. 1С-Битрикс: Виртуальная машина
Масштабирование Разделение на два сервера: веб-сервер + база данных. Увеличение мощности оборудования (чем мощнее – тем дороже; рост стоимости не пропорционален). Выделение кеша на один внешний сервер через memcached. Переход на коммерческие СУБД. Для большинства клиентов производительности достаточно, но не решены проблемы отказоустойчивости, резервирования, сетевой доступности.
Сколько стоит 1 час? Крупный интернет- магазин с годовым оборотом 1.5 млрд. руб. 210 рабочих дней в году по 10 рабочих часов. Час простоя крупного интернет-проекта может обойтись владельцам в 0,3 - 1 миллион рублей упущенной выручки.
«1С-Битрикс: Веб-кластер» - это комбинация технологий: Вертикальный шардинг (вынесение модулей на отдельные серверы MySQL) Репликация MySQL и балансирование нагрузки между серверами Распределенный кеш данных (memcached) Непрерывность сессий между веб-серверами (хранение сессий в базе данных) Кластеризация веб-сервера: – Синхронизация файлов – Балансирование нагрузки между серверами
«Веб-кластер», ДЦ в России БД Веб-нода «Веб-кластер», ДЦ в Германии «Веб-кластер», ДЦ в США Кэш БД Веб-нода Кэш БД Веб-нода Кэш БД Веб-нода Кэш БД Веб-нода Кэш БД Веб-нода Кэш БД Веб-нода Кэш БД Веб-нода Кэш БД Веб-нода Кэш Асинхронная master-master репликация для обеспечения работы географически распределенных веб-кластеров. Потеря связи между ДЦ может составлять часы. Географический веб-кластер
Elastic Load Balancing Elastic Load Balancing MySQL master Web 1 HTTP/HTTPS *.ru Elastic Load Balancing Elastic Load Balancing HTTP/HTTPS *.com Web 2 Web N … CloudWatch + AutoScaling CloudWatch MySQL master Web 1 Web 2 Web N … CloudWatch + AutoScaling CloudWatch master-master репликация Отказоустойчивость S3 HTTP/HTTPS *.com *.ru management, monitoring, MySQL backup cache
CDN init.php AddEventHandler("main", "OnEndBufferContent", "ReplaceStatic"); Nginx http_sub_module nginx_substitutions_filter location / { subs_filter '
Эксплуатация Используем средства проактивного мониторинга Анализируем показатели серверов Тестируем все что можно Риск: «Реагировать позже Клиента» Документируем все настройки Используем стабильные дистрибутивы Unix Риск: «Не обновлять систему»
Эксплуатация. Чем и как. Сервер 1 SMS, Серверы в production Сисадмин Сервер 2 Сервер 3 Аналитика Munin Cacti Мониторинг 24/7 Nagios Zabbix Анализ трендов XDebug XHProf Отладка, поиск узких мест производительности Pinba Монитор производительности Битрикс
Итог? Невозможно все охватить в получасовом докладе. :) Мы бы хотели детально рассказать… Организация процесса резервного копирования крупного проекта Организация среды разработки на БУС + инструментарий Архитектура крупного проекта с интеграцией БУС с внешними системами Как проектировать большой проект на БУС Поиск "узких" мест - где и что тормозит? xdebug, xhprof, pinba Организация раздачи статики + CDN Выбор систем мониторинга и аналитики High Performance MySQL "Облачная" инфраструктура - когда нужно Настройка серверов + организация кластеров …
Специализированные семинары «Битрикс Highload» Детальный разбор тем Приглашенные спикеры с опытом разработки и эксплуатации крупных проектов Публикация материалов Презентации и видео с последнего семинара:
HighLoad – это не страшно! Крупный высоконагруженный проект не требует ничего сверхъестественного. Только чуть больше системности, аккуратности, внимательности. Даже если проект начинался «обычным», он может «вырасти» позже. «1С-Битрикс» помогает вам: переход на «Веб-кластер» привлечение нас к проектам использование материалов (статьи, презентации, видео, документация) услуга «Экспертиза» - снижение рисков
Спасибо за внимание! Вопросы? Александр Александр Подходите к нам во время конференции – будем рады «живому» общению, проконсультируем по теме Highload Задавайте вопросы в твиттере с хэштегами #bitrixconf и #bitrix